XL 2019 Dictionary

Hoareau

XLDnaute Occasionnel
Bonjour

Je voudrais savoir, si c'est possible de comparer les éléments d'un dictionaire hors boucle avec les éléments d'une boucle for i 1 to x

Dico déjà rempli

for i = 1 to 100

comparer i avec les élément du dico

next

merci
 

Hoareau

XLDnaute Occasionnel
Bonjour
avec les items

j'ai trouvé une formule mais cela me donnes erreur 424

For Each c In mondico.Items
If mondico.Item(c) = val_boucle Then ActiveCell.Offset(0, 20) = "tata"
Next c


une boucle dans une boucle pour la rapidité, je ne sais pas
 

Hoareau

XLDnaute Occasionnel
mon dico deja alimenté

For val_boucle = 1 To 100

For Each c In mondico.Items

If mondico.Item(c) = val_boucle Then ActiveCell.Offset(0, 20) = "tata"
Next
Next

Il faut que je compare varboucle avec les items du dictionaire, la boucle for est à l'exterieur de la boucle qui alimente le dictionaire
 

Hoareau

XLDnaute Occasionnel
me donne erreur 424 objet requis
For Each c In mondico.Items
If mondico.Item(c) = Varboucle Then ActiveCell.Offset(0, 20) = "tata"
Next c

for i = 1 to Varboucle

'debug.print m'énumere bien le contenu de mon dico donc il est reconnu à l'interieur de la boucle 'for , pourquoi erreur 424 ?
For Each itm In mondico.Items
Debug.Print itm
Next itm

next
 

dysorthographie

XLDnaute Accro
bonsoir,
pourrais tu être un peut plus explicite dans ta demande car je ne vois que quel que chose d'absurde et je ne pense pas que ce soit le ca!
note cependant qu'il existe la méthode exists
Code:
'if  Dico.exists("TOTO") then
    K=dico.keys
' for i =0 to dico.count-1
    for i = 0 to 99
       if dico(K(i))=valeur then ActiveCell.Offset(0, 20) = "tata"
    next
'end if
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Pas sûr d'avoir tout compris... Sinon je récupère les données du dico dans un tableau temporaire puis je boucle :

VB:
Sub Macro1()
Dim TMP As Variant
Dim V As String

TMP = D.Keys
For J = 0 To UBound(TMP)
    For I = 1 To 100
        V = Cells(I, 1).Value 'à adapter car j'ai pas tout compris là...
        If TMP(J) = V Then Cells(I, 1).Offset(0, 20).Value = "toto"
    Next I
Next J
End Sub
 

Hoareau

XLDnaute Occasionnel
merci pour vos propositions

je joint un fichier encore brouillon

Pour comprendre lire la feuille a lire
mon problème du jour erreur 424
dans module 1, je l'ai cerné de deux rangé de doubles côtes
le but supprimer certains couplés
 

Pièces jointes

  • Dictionary.xlsm
    65.7 KB · Affichages: 16

Hoareau

XLDnaute Occasionnel
bonjour, je vous remercie pour les propositions

j'ai fini par trouver la solution, je peux boucler sur mon dico, a l'intérieur de mon autre boucle


For i = 1 To mondico.Count
s = mondico.Item(i)
If s = var__acomparer Then ActiveCell.Offset(0, 20) = "tata"

Next i
 

Hoareau

XLDnaute Occasionnel
Bonjour

je ne comprend pas le sens , le dico est fait pour avoir des éléments uniques,précise

Une autre question,je ne maitrise rien du tout, je bricole et essai d'arriver là ou je veux

Je veux alimenter les valeurs m et n de ma boucle, par les valeurs du range, doc de mon tableau, il peu y avoir 10 ou plus de valeur, peut être moins

merci
 

Hoareau

XLDnaute Occasionnel
J'ai oublié une partie

Sub test()
Dim Tab_couple_a_supprimer(1 To 20, 1 To 1)

Set Plage = Sheets("feuil2").Range("Y4:Y20")

Tab_couple_a_supprime = Plage.Value




ub = UBound(Tab_couple_a_supprimer, 1)


For m = 0 To ub
For n = m + 1 To ub


Next n, m

Debug.Print n & " " & m & " " & ub
End Sub
 

dysorthographie

XLDnaute Accro
je ne comprend pas le sens , le dico est fait pour avoir des éléments uniques,précise
oui en terme de clé Keys
dans l'exemple qui suis il n'y a pas de doublon!
VB:
for I=1 to 100
     Dico(i)="TOTO"
next
les 100 item de dico on la valeur TOTO et pourtant toutes les clé son unique!

pour debug pas besoin de concaténer!
Code:
Debug.Print n , m ,ub
 

Hoareau

XLDnaute Occasionnel
En concatenant je laisse des espaces, qui me permettent de voir la ligne tout de suite

Mais ce qui m'ennuie, c'est l'erreur 9 dans ma boucle tableau, je ne réussi pas à comprendre pourquoi
ce qui m'empêche de remplacer les valeurs n et m par les valeurs de mon range

Sub test()
Dim Tab_couple_a_supprimer(1 To 20, 1 To 1)

Set plage = Sheets("feuil2").Range("Y4:Y23")

a = plage.Rows.Count

Tab_couple_a_supprime = plage.Value

lb = LBound(Tab_couple_a_supprimer, 1)
ub = UBound(Tab_couple_a_supprimer, 1)


For m = lb To ub - 1
For n = m + 1 To ub

''m = Tab_couple_a_supprime(m, 1) ...........................................erreur 9
' 'n = Tab_couple_a_supprime(n, 1). ..........................................erreur 9

Combs = m & " " & n
Debug.Print Combs

Next n, m



Debug.Print Tab_couple_a_supprime(1, 1) & " " & ub & " " & a & " " & lb
Debug.Print Tab_couple_a_supprime(2, 1)
Debug.Print Tab_couple_a_supprime(3, 1)
Debug.Print Tab_couple_a_supprime(4, 1)
Debug.Print Tab_couple_a_supprime(5, 1)
Debug.Print Tab_couple_a_supprime(6, 1)
Debug.Print Tab_couple_a_supprime(7, 1)
Debug.Print Tab_couple_a_supprime(8, 1)
Debug.Print Tab_couple_a_supprime(9, 1)
Debug.Print Tab_couple_a_supprime(10, 1)
Debug.Print Tab_couple_a_supprime(11, 1)
Debug.Print Tab_couple_a_supprime(12, 1)
Debug.Print Tab_couple_a_supprime(13, 1)
Debug.Print Tab_couple_a_supprime(14, 1)
Debug.Print Tab_couple_a_supprime(15, 1)
Debug.Print Tab_couple_a_supprime(16, 1)
Debug.Print Tab_couple_a_supprime(17, 1)
Debug.Print Tab_couple_a_supprime(18, 1)
Debug.Print Tab_couple_a_supprime(19, 1)
Debug.Print Tab_couple_a_supprime(20, 1)
End Sub
 

Statistiques des forums

Discussions
312 247
Messages
2 086 591
Membres
103 248
dernier inscrit
Happycat