Associer des valeurs identiques dans deux feuilles différentes
Résolu
Yann91445
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour.
J'utilise EXCEL 2010. Je suis débutant dans la programmation VBA.
En clair, j'ai deux feuilles (un tableau par feuille).
Feuille 1
ColA
Nbre1 cas 1 résultat 1 résultat 2 résultat 3
Nbre1 cas 2 résultat 1 résultat 2 résultat 3
Nbre2 cas 1 résultat 1 résultat 2 résultat 3
Nbre2 cas 2 résultat 1 résultat 2 résultat 3
...
Feuille 2
ColA ColB
Nbre1 x
Nbre2 y
Nbre3 z
...
x, y et z sont des chiffres fixes
Je dois faire des tests et boucles sur la feuille 1 mais j'ai besoin des valeurs x, y, z ... pour faire mes boucles et tests.
Ma question est donc : comment associer la colonne A de la feuille 1 à la colonne A de la feuille 2 et donc la colonne B de la feuille 2 et au final affecter à une variable TOTO la valeur x, y z ... ?
En gros, lorsque je parcours la colonne A de la feuille 1, le programme sait me dire quel chiffre x, y est associé.
J'ai fait une boucle de test mais j'ai tellement de valeurs dans mon premier tableau que EXCEL rame comme je teste tous les nombres de la colonne A. Du coup j'ai fait un malheureux GO TO pour arrêter de tester. Mais pour la dernière valeur je parcours toute la colonne et çà prend énormément de temps.
Mon code :
i : variable de la première feuille
j : variable de la deuxième feuille
J'espère avoir été clair.
Je vous remercie.
J'utilise EXCEL 2010. Je suis débutant dans la programmation VBA.
En clair, j'ai deux feuilles (un tableau par feuille).
Feuille 1
ColA
Nbre1 cas 1 résultat 1 résultat 2 résultat 3
Nbre1 cas 2 résultat 1 résultat 2 résultat 3
Nbre2 cas 1 résultat 1 résultat 2 résultat 3
Nbre2 cas 2 résultat 1 résultat 2 résultat 3
...
Feuille 2
ColA ColB
Nbre1 x
Nbre2 y
Nbre3 z
...
x, y et z sont des chiffres fixes
Je dois faire des tests et boucles sur la feuille 1 mais j'ai besoin des valeurs x, y, z ... pour faire mes boucles et tests.
Ma question est donc : comment associer la colonne A de la feuille 1 à la colonne A de la feuille 2 et donc la colonne B de la feuille 2 et au final affecter à une variable TOTO la valeur x, y z ... ?
En gros, lorsque je parcours la colonne A de la feuille 1, le programme sait me dire quel chiffre x, y est associé.
J'ai fait une boucle de test mais j'ai tellement de valeurs dans mon premier tableau que EXCEL rame comme je teste tous les nombres de la colonne A. Du coup j'ai fait un malheureux GO TO pour arrêter de tester. Mais pour la dernière valeur je parcours toute la colonne et çà prend énormément de temps.
Mon code :
For Each rCellule In ActiveSheet.Cells.Columns(2)
For i = 2 To NbreCells + 1
For j = 2 To Elemtot + 1
If Sheets("Fichier_Brut").Cells(i, 2).Value = Sheets("Tri").Cells(j, 1).Value Then
pli = Sheets("Tri").Cells(j, 2)
GoTo etiquette
End If
Next j
etiquette:
i : variable de la première feuille
j : variable de la deuxième feuille
J'espère avoir été clair.
Je vous remercie.
A voir également:
- Associer des valeurs identiques dans deux feuilles différentes
- Comment faire un livret avec des feuilles a4 - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Bruler des feuilles de laurier - Guide
- Deux ecran pc - Guide
- Comment associer deux comptes whatsapp - Guide
4 réponses
Bonjour,
J'espère avoir été clair
Raté!
Personnellement, j'entrevois ce que tu souhaites.
Cependant, j'ai besoin d'un explication simple. Du genre :
Je veux comparer les éléments contenus Feuil "Fichier_Brut", colonne B avec les éléments contenus dans la feuil "tri" colonne A. S'ils sont égaux, alors je veux faire ceci ou cela...
J'espère avoir été clair
Raté!
Personnellement, j'entrevois ce que tu souhaites.
Cependant, j'ai besoin d'un explication simple. Du genre :
Je veux comparer les éléments contenus Feuil "Fichier_Brut", colonne B avec les éléments contenus dans la feuil "tri" colonne A. S'ils sont égaux, alors je veux faire ceci ou cela...
Alors je retente.
Si la valeur d'une cellule de la colonne A de "fichier_brut" est égale à la valeur d'une cellule de la colonne A de "tri" alors j'affecte à pli la valeur de la cellule de la colonne B de "tri".
Si la valeur d'une cellule de la colonne A de "fichier_brut" est égale à la valeur d'une cellule de la colonne A de "tri" alors j'affecte à pli la valeur de la cellule de la colonne B de "tri".
Ok. C'est mieux.
Essaye ceci :
Essaye ceci :
Sub RetourneColB() Dim Tab_Feuil1(), Tab_Feuil2(), Dico As Object, DrLig As Long, i As Long, Lign As Long, Elem 'Récolte des données Feuil1 Colonne A With Sheets("Feuil1") DrLig = .Columns("A").Find("*", , , , , xlPrevious).Row Tab_Feuil1 = Application.Transpose(.Range("A2:A" & DrLig).Value) End With 'Récolte des données Feuil2 Colonne A With Sheets("Feuil2") DrLig = .Columns("A").Find("*", , , , , xlPrevious).Row Tab_Feuil2 = Application.Transpose(.Range("A2:A" & DrLig).Value) Set Dico = CreateObject("Scripting.Dictionary") For i = 1 To UBound(Tab_Feuil1) On Error Resume Next 'teste si les données sont similaires If Not IsError(Application.Match(Tab_Feuil1(i), Tab_Feuil2, 0)) Then Lign = .Columns(1).Find(Tab_Feuil1(i), lookat:=xlWhole).Row 'enregistrement de la donnée en doublon + la valeur contenue en colonne B feuil2 Dico(Tab_Feuil1(i)) = .Cells(Lign, 2) End If Next i End With 'Restitution des données Sheets("Feuil1").[Z2].Resize(Dico.Count, 1) = Application.Transpose(Dico.keys) Sheets("Feuil1").[AA2].Resize(Dico.Count, 1) = Application.Transpose(Dico.items) End Sub
Merci beaucoup :))) .
La macro tourne bien.
Si j'ai bien compris le fonctionnement des dictionnaires mais donc pour récupérer les valeurs que je souhaite il faut que je récupère l'item avec la clé qui lui ait associé ?
La macro tourne bien.
Si j'ai bien compris le fonctionnement des dictionnaires mais donc pour récupérer les valeurs que je souhaite il faut que je récupère l'item avec la clé qui lui ait associé ?
C'est tout à fait cela.
Un dictionary se construit comme ceci :
Dico(clé) = Item
Cela permet, entres autres, d'établir des listes sans doublon.
Tu trouveras ICI un tutoriel de l'excellent Jacques Boisgontier.
Un dictionary se construit comme ceci :
Dico(clé) = Item
Cela permet, entres autres, d'établir des listes sans doublon.
Tu trouveras ICI un tutoriel de l'excellent Jacques Boisgontier.