Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

connaitre la position d'une donnée dans un dico

5 réponses
Avatar
merguez07
Bonjour à tous,

voilà pour accélérer ma comparaison de 2 listes j'ai créé un dico ou
j'ai mis une des 2 listes

Set dico = New Scripting.Dictionary

la question est la suivante
une fois que j'ai mis ma 1ere liste dans le dico je recherche pour
chacun des éléments de ma deuxième liste s 'il est contenu dans le dico

If dico.Exists(valeur en cours de la 2eme liste) then ....

et là j'aimerai connaitre ou se trouve la valeur en cours dans le dico
(quel est le numéro de l'item concerné dans le dictionnaire)

je sais pas si j'ai été clair

Merci

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

5 réponses

Avatar
DanielCo
Bonjour,
Pourquoi un dictionnaire :
Sub test()
Dim Tabl(2) As String
Tabl(0) = "toto"
Tabl(1) = "titi"
Tabl(2) = "tutu"
MsgBox Application.Match("titi", Tabl, 0)
End Sub
Cordialement.
Daniel


Bonjour à tous,

voilà pour accélérer ma comparaison de 2 listes j'ai créé un dico ou j'ai mis
une des 2 listes

Set dico = New Scripting.Dictionary

la question est la suivante
une fois que j'ai mis ma 1ere liste dans le dico je recherche pour chacun des
éléments de ma deuxième liste s 'il est contenu dans le dico

If dico.Exists(valeur en cours de la 2eme liste) then ....

et là j'aimerai connaitre ou se trouve la valeur en cours dans le dico (quel
est le numéro de l'item concerné dans le dictionnaire)

je sais pas si j'ai été clair

Merci

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
bonjour,

n = Application.Match("valeur en cours de la 2eme liste", MonDico.Items, 0)
valeur correspondant de la 1ere liste = Application.Index(MonDico.Keys,
Application.Match("valeur en cours de la 2eme liste", MonDico.Items, 0))

isabelle

Le 2015-07-18 08:34, merguez07 a écrit :
Bonjour à tous,

voilà pour accélérer ma comparaison de 2 listes j'ai créé un dico ou j'ai mis
une des 2 listes

Set dico = New Scripting.Dictionary

la question est la suivante
une fois que j'ai mis ma 1ere liste dans le dico je recherche pour chacun des
éléments de ma deuxième liste s 'il est contenu dans le dico

If dico.Exists(valeur en cours de la 2eme liste) then ....

et là j'aimerai connaitre ou se trouve la valeur en cours dans le dico (quel est
le numéro de l'item concerné dans le dictionnaire)

je sais pas si j'ai été clair

Merci

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com

Avatar
merguez07
Bonjour Daniel,

en fait vu que me liste comprend environ 10000 items je pensais, au
regard de ce que j'ai lu sur internet, que l'utilisation d'un dico
permettait un gain significatif de temps de traitement

Xavier


Le 18/07/2015 14:53, DanielCo a écrit :
Bonjour,
Pourquoi un dictionnaire :
Sub test()
Dim Tabl(2) As String
Tabl(0) = "toto"
Tabl(1) = "titi"
Tabl(2) = "tutu"
MsgBox Application.Match("titi", Tabl, 0)
End Sub
Cordialement.
Daniel


Bonjour à tous,

voilà pour accélérer ma comparaison de 2 listes j'ai créé un dico ou
j'ai mis une des 2 listes

Set dico = New Scripting.Dictionary

la question est la suivante
une fois que j'ai mis ma 1ere liste dans le dico je recherche pour
chacun des éléments de ma deuxième liste s 'il est contenu dans le dico

If dico.Exists(valeur en cours de la 2eme liste) then ....

et là j'aimerai connaitre ou se trouve la valeur en cours dans le dico
(quel est le numéro de l'item concerné dans le dictionnaire)

je sais pas si j'ai été clair

Merci

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com






---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
merguez07
Merci Isabelle

Xavier



Le 18/07/2015 16:04, isabelle a écrit :
bonjour,

n = Application.Match("valeur en cours de la 2eme liste", MonDico.Items, 0)
valeur correspondant de la 1ere liste = Application.Index(MonDico.Keys,
Application.Match("valeur en cours de la 2eme liste", MonDico.Items, 0))

isabelle

Le 2015-07-18 08:34, merguez07 a écrit :
Bonjour à tous,

voilà pour accélérer ma comparaison de 2 listes j'ai créé un dico ou
j'ai mis
une des 2 listes

Set dico = New Scripting.Dictionary

la question est la suivante
une fois que j'ai mis ma 1ere liste dans le dico je recherche pour
chacun des
éléments de ma deuxième liste s 'il est contenu dans le dico

If dico.Exists(valeur en cours de la 2eme liste) then ....

et là j'aimerai connaitre ou se trouve la valeur en cours dans le dico
(quel est
le numéro de l'item concerné dans le dictionnaire)

je sais pas si j'ai été clair

Merci

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
http://www.avast.com







---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
DanielCo
Bonjour,
Ce serait à essayer, mais je pense que si tu utilises une plage de
cellules au départ,
Tabl = Application.Transpose([A1:A10000])
doit être plus rapide que l'alimentation d'un dictionnaire.
Daniel


Bonjour Daniel,

en fait vu que me liste comprend environ 10000 items je pensais, au regard de
ce que j'ai lu sur internet, que l'utilisation d'un dico permettait un gain
significatif de temps de traitement

Xavier


Le 18/07/2015 14:53, DanielCo a écrit :
Bonjour,
Pourquoi un dictionnaire :
Sub test()
Dim Tabl(2) As String
Tabl(0) = "toto"
Tabl(1) = "titi"
Tabl(2) = "tutu"
MsgBox Application.Match("titi", Tabl, 0)
End Sub
Cordialement.
Daniel


Bonjour à tous,

voilà pour accélérer ma comparaison de 2 listes j'ai créé un dico ou
j'ai mis une des 2 listes

Set dico = New Scripting.Dictionary

la question est la suivante
une fois que j'ai mis ma 1ere liste dans le dico je recherche pour
chacun des éléments de ma deuxième liste s 'il est contenu dans le dico

If dico.Exists(valeur en cours de la 2eme liste) then ....

et là j'aimerai connaitre ou se trouve la valeur en cours dans le dico
(quel est le numéro de l'item concerné dans le dictionnaire)

je sais pas si j'ai été clair

Merci

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com






---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com