Pb avec des dictionnaire, ne sont pas pris en compte ?

Bonsoir,

suite à une demande, j'ai fourni un fichier réponse qui semble correspondre à l'attente.
Un mot une couleur, cette dernière est mise "en mémoire" pour être utilisée lorsque ce même mot sera utilisé.
A la fermeture du fichier, colonne A et B de la feuille système stockent ces données.
A l'ouverture, les données de la feuille système sont mise en mémoire dans les tableaux VBA Mot et Couleur.

Un mot est entré en colonne A de la feuille Couleur, je lance une boucle sur le tableau Mot afin de voir s'il existe, si oui je récupère la couleur dans le tableau couleur au même index, le tour est joué. S'il n'existe pas, je l'ajoute au tableau mot et j'ajoute une couleur aléatoire au tableau couleur en testant que celle-ci n'existe pas dans ce tableau.

Pour ce faire j'utilise des boucles sur les deux tableaux avec des comparaisons et des flags pour ne pas tourner sur la totalité si c'est trouvé.

Mon idée : remplacer ces tableaux par des dictionnaires qui, avec .Exists permet sans boucle de savoir si un mot utilisé comme clé existe ou pas dans le dictionnaire, de même pour les couleurs.

Donc à l'ouverture du fichier, création de deux dictionnaire, l'un avec "les mots" pour clé et la valeur numérique de la couleur en "valeur", l'autre avec les couleurs où c'est le numéro de couleur qui sert pour la clé et la valeur.

Fichier vierge, je lance, les dicos sont créés mais vides. J'entre "loureed" en colonne A, couleur rouge (aléatoire), je quitte, sur la feuille Système en ligne 1 j'ai bien colonne A "loureed" et colonne B "255".
j'ouvre ce fichier, donc les deux dicos devraient se remplir des données de la feuille système, avec un MSG j'ai pu voir qu'ils avaient bien tous les deux un "Count" de 1. En colonne A j'entre "loureed", il se met en couleur verte (par exemple), je ne comprend pas, je met un point d'arrêt sur la procédure de mise en couleur, et j'entre loureed de nouveau en colonne A. Le pas à pas m'indique que loureed existe déjà dans le dico des mots (normal), il passe donc la couleur en vert !

Le fonctionnement en "live" est correcte, mais suite à la fermeture, et à l'ouverture du fichier, le premier "loureed" n'est pas détecté comme existant lors de l'écriture du deuxième !

En théorie tout à l'air bien, en pratique ça ne va plus...

Pouvez vous m'éclairer sur ce que j'ai loupé ?

Le fichier :

@ bientôt

LouReeD

Alors là je ne comprend pas !

Je viens de réutiliser le fichier fourni ci dessus et tout semble fonctionner !
J'y retourne, c'est peut-être en fonction de l'heure ?

@ bientôt

LouReeD

Bon ben je me met un "résolu" !

désolé pour le dérangement !

Bon comme même si quelqu'un a une idée de ce "non fonctionnement" ? Un bug en mémoire ? Ha cet informatique !

@ bientôt

LouReeD

bonjour LouReed,

lié au 1 mai ???

Je ne le sais pas, la faute se produit quand vous n'êtes pas sur la feuille "couleur" en ouvrant ?

Et pour ignorer l'orthographe ceci

 Set MonDicoMot = CreateObject("Scripting.Dictionary")
     MonDicoMot.comparemode = vbTextCompare  '<<<<<<<<<<<<<
     Set MonDicoCoul = CreateObject("Scripting.Dictionary")
   

Bonsoir,

merci pour l'info du compare, mais orthographe ou casse ? Je veux dire que LouReeD sera égal à loureed, mais pas égale à LooReeD !
Chez vous il fonctionne également ?

@ bientôt

LouReeD

re,

oui, LouReeD = loureed = LOUREED = LoUrEeD <>Loured

Oui, j'avais l'air que cela fonctionnait, mais je ne savais pas exactement le résultat voulu. Donc quand j'ajoutais un nouveau "LouReed" la cellule prenait le couleur du précédent "LouReed", c'est çà ?

Voilà, à la casse près, donc LouReeD <> LoureeD.

Bon ceci est un réglage personnel ! Pour mon "petit travail" j'ai fais le strict = !

Bonne fin de soirée à vous.

@ bientôt

LouReeD

Rechercher des sujets similaires à "dictionnaire pas pris compte"