En voulant afficher un Item d'un dictionnaire "dic", j'ai eu un message d'e=
rreur :
'---------------------------------------------
i =3D 1
Set dic =3D CreateObject("Scripting.Dictionary")
=20
'-- On remplit le dictionnaire dic=20
For Each C In WS2.Range("F2:F" & LastLg)
If Not dic.Exists(C.Value) Then
dic.Add Key:=3DC.Offset(0, -5).Value, Item:=3DC.Offset(=
0, -5).Value
MsgBox dic.Items(i) ' ICI l'erreur
i =3D i + 1
End If
Next C
'-----------------------------------------------------
| Alors pourquoi le teste if est devenu juste alors que le dictionnaire à déjà une clé qui contient la valeur C courante ?
Désolé, mais je ne comprends pas la question.
Normalement, l'ajout d'une nouvelle clé ne se fera que si elle n'existe p as.
Parce qu'on teste avec :
If Not Dic.Exists(C.Value)
Comme ça, si il y a une clé qui à la valeur = C.Value on ne passera plus à la ligne suivante :
Dic.Add Key:=C.Value, Item:=C.Offset(0, -5).Value
Et par conséquent on ne recevra plus le message d'erreur :
"------------------------------------------------------------" Cette clé est déjà associée à un élément de cette collection "------------------------------------------------------------"
Mais on recevant cette erreur, cela nous dis que la condition a été r éalisé.
Alors qu'est-ce qui fait que le test soit juste malgré que la clé exist e déjà ?
Bonjour,
| Alors pourquoi le teste if est devenu juste alors que le dictionnaire à déjà une clé qui contient la valeur C courante ?
Désolé, mais je ne comprends pas la question.
Normalement, l'ajout d'une nouvelle clé ne se fera que si elle n'existe p as.
Parce qu'on teste avec :
If Not Dic.Exists(C.Value)
Comme ça, si il y a une clé qui à la valeur = C.Value on ne passera plus à la ligne suivante :
Dic.Add Key:=C.Value, Item:=C.Offset(0, -5).Value
Et par conséquent on ne recevra plus le message d'erreur :
"------------------------------------------------------------"
Cette clé est déjà associée à un élément de cette collection
"------------------------------------------------------------"
Mais on recevant cette erreur, cela nous dis que la condition a été r éalisé.
Alors qu'est-ce qui fait que le test soit juste malgré que la clé exist e déjà ?
| Alors pourquoi le teste if est devenu juste alors que le dictionnaire à déjà une clé qui contient la valeur C courante ?
Désolé, mais je ne comprends pas la question.
Normalement, l'ajout d'une nouvelle clé ne se fera que si elle n'existe p as.
Parce qu'on teste avec :
If Not Dic.Exists(C.Value)
Comme ça, si il y a une clé qui à la valeur = C.Value on ne passera plus à la ligne suivante :
Dic.Add Key:=C.Value, Item:=C.Offset(0, -5).Value
Et par conséquent on ne recevra plus le message d'erreur :
"------------------------------------------------------------" Cette clé est déjà associée à un élément de cette collection "------------------------------------------------------------"
Mais on recevant cette erreur, cela nous dis que la condition a été r éalisé.
Alors qu'est-ce qui fait que le test soit juste malgré que la clé exist e déjà ?
MichD
Le code initial testait sur la "valeur en C.Offset" et non pas directement sur la valeur C
Cette ligne de code : If Not Dic.Exists(C.Value) teste si la clé existe ou non. L'ajout se fait seulement si la clé est absente. Une attention spéciale au petit mot "NOT" dans la ligne de code...
L'objet "Dictionary" est un outil simple et rapide pour repérer seulement les valeurs uniques.
Le code initial testait sur la "valeur en C.Offset" et non pas directement
sur la valeur C
Cette ligne de code : If Not Dic.Exists(C.Value) teste si la clé existe ou non.
L'ajout se fait seulement si la clé est absente. Une attention spéciale au petit mot "NOT"
dans la ligne de code...
L'objet "Dictionary" est un outil simple et rapide pour repérer seulement les valeurs
uniques.
Le code initial testait sur la "valeur en C.Offset" et non pas directement sur la valeur C
Cette ligne de code : If Not Dic.Exists(C.Value) teste si la clé existe ou non. L'ajout se fait seulement si la clé est absente. Une attention spéciale au petit mot "NOT" dans la ligne de code...
L'objet "Dictionary" est un outil simple et rapide pour repérer seulement les valeurs uniques.