Comparaison de deux colonnes sous vba

Résolu/Fermé
Damien - 24 avril 2009 à 09:58
 Damien - 6 mai 2009 à 08:47
Bonjour,
Je souhaiterais comparer deux colonnes (contenant des références) dans deux feuilles excel différentes appartenant à un même classeur.
Tout d'abord je comparre les deux colonnes (colonne A feuille 1 avec colonne A feuille 2)avec plusieurs boucles while puis je souhaite voir apparaitre dans la colonne B feuille 2 les références qui étaient présente dans la colonne A feuille 1 mais qui n'étaient pas présente dans la colonne A feuille 2. Voila le code que j'ai tapé, mais il ne fonctionne pas (Dépassement de capacité). ce n'est surement pas grand chose, mais je tourne en rond :

Dim VALEURA As String, i As Integer, x As Integer, y As Integer, valeurB As String
i = 2
x = 2
y = 2
Do While i <> "200"
VALEURA = Sheets("feuille1").Range("A" & i).Value
valeurB = Sheets("feuille2").Range("A" & x).Value
Do While VALEURA <> valeurB
x = x + 1
If x = 200 Then
While Sheets("feuille2").Range("B" & y).Value <> ""
y = y + 1
Sheets("feuille2").Range("B" & y).Value = VALEURA
Wend
Else
i = i + 1
End If
Loop
i = i + 1
Loop
End Sub

7 réponses

Mike-31 Messages postés 18342 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 2 novembre 2024 5 102
24 avril 2009 à 11:50
Salut,

Tu peux traiter ce problème par formule

=SI(NB.SI(Feuil1!$A$1:$A$37;Feuil2!A4)=0;Feuil1!A4;"")

Si tu tiens au VBA, je suis obligé de m'absenter je t'écrierai un bout de code en début d'après midi si personne n'est venu en aide

A+
0
Salut,

En fait le code que tu m'as confié ne résoud pas mon problème à 100%. Je m'explique : Ton code fonctionne lorsque les données inscrite sur la feuille 1 colonne A et feuille 2 colonne A suivent la même logique ou sont inscrites dans le même ordre. Cependant, dans mon cas, les données ne sont pas nécessairement rangées dans le même ordre. Si bien que ton code me renvoit à chaque fois l'ensemble des données inscrites sur la feuille1 colonne A.

En fait mon idée était de prendre chaque donnée de la feuille 1 colonne A puis de vérifié que celle-ci était bien présente dans la feuille 2 colonne A (mais pas nécessairement sur la meme ligne). Si c'est bien le cas alors on passe à la donnée suivante de la feuille 1 colonne A. Cependant, si ce n'est pas le cas alors cette donées doit etre inscrite sur la feuille 2 colonne B

J'espère que tu pourras m'aider de nouveau.

Merci
0
Mike-31 Messages postés 18342 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 2 novembre 2024 5 102 > Damien
28 avril 2009 à 15:58
Salut,

Comme tu à mis ton psot sous 1, je suppose que tu traites ton problème par formule.
testes ces formules que tu colles dans une cellule ligne 2 et tu incremente vers le bas sur la feuille 1

=SI(A2="";"";SI(ESTNA(EQUIV(A2;Feuil2!$A$2:$A$100;0));A2;""))

=SI(NB.SI(Feuil1!$A$2:$A$100;A2)+NB.SI(Feuil2!$A$2:$A$100;A2)>1=VRAI;"";Feuil1!A2)

ou ci dessous sur la feuille 2
=SI(A2="";"";SI(ESTNA(EQUIV(Feuil1!A2;Feuil2!$A$2:$A$100;0));Feuil1!A2;""))

=SI(NB.SI(Feuil1!$A$2:$A$100;A2)+NB.SI(Feuil2!$A$2:$A$100;A2)>1=VRAI;"";Feuil1!A2)
A+
0