Patrick,
Quelques choses, qui sont adressées dans mon
http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/A_3391-Using-the-Dictionary-Class-in-VBA.html d'article
1) À la différence d'une collection, vous ne pouvez pas se référer à des articles dans un dictionnaire using un index. En revanche, dans un dictionnaire, vous pouvez seulement chercher un article simple si vous fournissez sa clef. Ainsi, votre boucle :
Pour I = 1 à dic. Compte
. Cellules (I, « C ») = dic. Article (i)
Après i
ne retirera pas des articles du dictionnaire. En effet, en raison du dictionnaire « implicite ajouter » le comportement, cette boucle ajoute réellement de nouveaux articles au dictionnaire :)
2) Vous ajoutiez réellement la gamme comme clef, et pas la valeur de la cellule, dans votre première boucle :
Pour chaque celle dans le rng
Sinon dic.exists (celle) puis
dic. Ajouter le celle, celle
Finir si
Prochain celle
Puisque chaque cellule est un objet différent, vous avez fini réellement vers le haut d'ajouter toutes ces cellules en tant que l'article et clef
******************
Ainsi, pour fixer le code :
1) Passer explicitement les valeurs des cellules, et pas les cellules elles-mêmes, au dictionnaire. Ou, employer un transfert de rangée pour créer une rangée dans la mémoire, et puis faire une boucle par la rangée et passer les valeurs de rangée au dictionnaire
2) Faire du dumping sur les articles dans une rangée
3) Faire un transfert de rangée pour écrire les valeurs à la feuille de travail
Patrick