Comparer deux colonnes de deux feuilles différentes

dodik93

XLDnaute Nouveau
Bonjour à toutes et à tous,

Fidèle lecteur de ce forum depuis pas mal de temps, j'ai jusqu'ici réussit à m'en sortir dans la jungle du VBA en lisant vos conseils. Mais aujourd'hui je n'y arrive plus et c'est pour cette raison que je fais appel à vous.

J'ai un classeur qui contient deux feuilles. Je souhaiterais comparer chaque cellule de la colonne B de la première feuille avec chaque cellule de la colonne B de la deuxième feuille.

Ensuite pour chaque cellule matché entre les deux feuilles, il faut copier les informations situées dans les colonnes C, D et E de la feuille 2 et les copier dans les feuilles E, F et G de la première feuille.

Je vous joins un fichier exemple qui sera sans doute plus clair que mes explications.

Pour info, voici le bout de code que j'ai commencé à taper :

Sub Comparaison()
Dim CompareRange As Variant, Selection As Variant, x As Variant, y As Variant, DernLigne As Long, DernLigne2 As Long

Set CompareRange = Worksheets("Comparer").Range("B2:" & Range("B2").SpecialCells(xlCellTypeLastCell).Address)
Set Selection = Worksheets("Matières Premières").Range("B2:" & Range("B2").SpecialCells(xlCellTypeLastCell).Address)


'
'For Each x In Selection
' For Each y In CompareRange
' If x = y Then x.Offset(0, 3) = y.Offset(0, 1)
'
' Next y
'Next x

For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 4) = y.Offset(0, 2)

Next y
Next x

For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 5) = y.Offset(0, 3)

Next y
Next x
End Sub


Je sais que les sujets de comparaison entre cellules/colonnes ont déjà été abordés plusieurs fois mais je n'ai pas réussit à adapter leurs réponses à mon cas.

Je vous remercie pour votre aide.

Bonne soirée.
 

Pièces jointes

  • Essai comparaison.xlsm
    18.3 KB · Affichages: 153

Modeste

XLDnaute Barbatruc
Re : Comparer deux colonnes de deux feuilles différentes

Bonsoir dodik93,

Avant d'aller plus loin, on est d'accord sur le fait qu'une des fonctions de recherche existantes (RECHERCHEV ou INDEX et EQUIV) te rendraient les mêmes services? ... enfin si j'ai bien compris ce que tu voulais faire!?
 

dodik93

XLDnaute Nouveau
Re : Comparer deux colonnes de deux feuilles différentes

Bonjour,

Je n'ai jamais utilisé RECHERCHEV ou INDEX et EQUIV...

La fonction RECHERCHEV ne permet-elle pas de rechercher uniquement les valeurs situées dans la première colonne du tableau ? Car si tel est le cas, mes données à comparer sont situées dans la 2ème colonne.

En ce qui concerne INDEX et EQUIV, je n'ai pas trop compris, à partir de l'aide excel, comment faire pour les mettre en oeuvre.
 

Jocelyn

XLDnaute Barbatruc
Re : Comparer deux colonnes de deux feuilles différentes

Bonjour le Forum,
Bonjour dodik93, Modeste,

Comme le dit Modeste on peut passer par une fonction index(equiv()), voir fichier joint

Cordialement

EDIT : Oup's Bonjour Jean-Marcel
 

Pièces jointes

  • Essai comparaison.xls
    12.5 KB · Affichages: 260
  • Essai comparaison.xls
    12.5 KB · Affichages: 297
  • Essai comparaison.xls
    12.5 KB · Affichages: 305

dodik93

XLDnaute Nouveau
Re : Comparer deux colonnes de deux feuilles différentes

Merci pour vos réponses !

Jean-Marcel : j'ai regardé le fichier, ça fonctionne très bien mais est-il possible, par exemple avec une condition SI, de ne pas faire apparaitre de #N/A ou de 0 et de laisser la case vide quand aucune donnée n'a été trouvée ?

Jocelyn : j'ai regardé très rapidement le fichier mais je n'ai pas encore eu le temps de tester sur mon fichier en entier. J'essayerais de le faire un peu plus tard dans la journée quand j'aurais un peu de temps libre.

Par simple curiosité, j'aurais aimé savoir d'où venait le problème en VBA, j'ai essayé un autre code mais celà ne fonctionne pas plus. C'est pus de la curiosité que de la nécessité étant donnée que mon problème peut être résolu par formule.

Merci à tous et je vous tiens informé dans la journée.
 

Jocelyn

XLDnaute Barbatruc
Re : Comparer deux colonnes de deux feuilles différentes

re,

moi je suis une bille en VBA je ne peux donc pas te dire d'ou vient ton soucis désolé. mais peut être Modeste ou Jeran-Marcel le pourront.

EDIT : concernant le renvoi d'erreur sous 2007 et 2010 il me semble (car je n'ai ni l'une ni l'autre des version) que tu peux écrire la formule de Jean-Marcel de cette façon

=SIERREUR(RECHERCHEV(B2;Comparer!$B$2:$E$13;2;FAUX);"")

autrement sous toutes version cela fonctionne aussi comme ca :

=SI(ESTERREUR(RECHERCHEV(B2;Comparer!$B$2:$E$13;2;FAUX));"";RECHERCHEV(B2;Comparer!$B$2:$E$13;2;FAUX))
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Comparer deux colonnes de deux feuilles différentes

Bonjour dodik93,
Salut Jean-Marcel :), Jocelyn :)

rechercher uniquement les valeurs situées dans la première colonne du tableau
Tu as bien raison, mais ce qu'il faut comprendre c'est qu'il doit s'agir de la première colonne de la Table_Matrice que tu renseignes comme deuxième argument de la fonction ... pas de la première colonne "dans l'absolu"

Juste pour le fun, une variante de la proposition de Jean-Marcel, sans modifier les valeurs de la feuille "Matières Premières". Formule unique à copier vers le bas et la droite:
Code:
=RECHERCHEV(""&$B2;Comparer!$B$2:$E$13;COLONNES($A:A);FAUX)
ou
Code:
=SIERREUR(RECHERCHEV(""&$B2;Comparer!$B$2:$E$13;COLONNES($A:A);FAUX);"")

Pour ce qui est de la macro, une partie du problème est liée au fait que 3700 est numérique dans la feuille "Comparer" et considéré comme texte dans la première feuille (Jean-Marcel a modifié la valeur en B2 et C2) comme ta macro comparait ces valeurs, le résultat était faux)
Un deuxième problème est lié à la définition de tes deux plages: essaie d'ajouter à ton code
Code:
CompareRange.Select
Selection.Select
... Juste pour faire un test, hein, après tu les effaces ;) Ta macro passait donc en revue toutes les colonnes (de B à la dernière colonne à droite de chaque tableau) en écrasantant au passage, les valeurs de la colonne "Code ExESS"
 

Discussions similaires

Réponses
29
Affichages
926
Réponses
2
Affichages
153

Statistiques des forums

Discussions
312 231
Messages
2 086 455
Membres
103 216
dernier inscrit
LoshR7