Comparaison deux colonnes

Fermé
hélo37 - 3 août 2010 à 11:29
 Hélo37 - 5 août 2010 à 10:12
Bonjour,

J'aimerais comparer les cellules de deux colonnes D et M. Les cellules égales ne sont pa forcément sur la même ligne. Lorsque des valeurs sont égales je voudrais que la cellule de la colonne A soit coloré en jaune.
Voici où en est mon vba:

Sheets("LAN").Select
Range("D:D,M:M").Select

If Columns("D:D").Value = Columns("M:M").Value Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If

C'est la ligne ac le If qui ne va pas.

Pouvez-vous m'aider?

1 réponse

Ziggy69 Messages postés 7 Date d'inscription jeudi 17 juin 2010 Statut Membre Dernière intervention 6 août 2010 2
Modifié par Ziggy69 le 3/08/2010 à 14:53
Salut hélo,
dans ton if, tu lui demande de comparer la valeur de 2 colonnes ! C'est impossible, il faut que tu précise la cellule, en l'occurrence ici la ligne ou tu te trouve. La solution à mon avis, même si elle est lourde est d'y aller ligne par ligne dans ta colonne D et de tester avec chaque ligne de la colonne M. ça donne un truc du genre :
for k =1 to range("D70000").end(xlup).row 
             for p=1 to range("M70000").end(xlup).row 
                             if cells(k,"D").Value=cells(p,"M").Value then 
                                               cells(k,"D").Select 
                                               With Selection.Interior 
                                               .Pattern = xlSolid 
                                               .PatternColorIndex = xlAutomatic 
                                               .Color = 65535 
                                               .TintAndShade = 0 
                                               .PatternTintAndShade = 0 
                                                End With  
                             end if 
             next p 
next k 


C'est un traitement lourd surtout si tu à beaucoup de lignes mais je ne connais pas d'autres techniques pour comparer 2 colonnes.
Pour gagner du temps tu peux le mettre dans un while ou un goto pour qu'il passe à la ligne suivante quand il a trouvé une cellule égale dans M et dans D du genre :

for k =1 to range("D70000").end(xlup).row 
             for p=1 to range("M70000").end(xlup).row 
                             if cells(k,"D").Value=cells(p,"M").Value then 
                                               cells(k,"D").Select 
                                               With Selection.Interior 
                                               .Pattern = xlSolid 
                                               .PatternColorIndex = xlAutomatic 
                                               .Color = 65535 
                                               .TintAndShade = 0 
                                               .PatternTintAndShade = 0 
                                                End With 
                                               goto finboucle 
                             end if 
             next p 
finboucle: 
next k 


A toi de voir ce que tu veux en faire.
0
Merci! ça marche impec!

le "row" ça veut dire quoi? je le vois svt, mais je ne sais pas ce que s'est...
0
Ziggy69 Messages postés 7 Date d'inscription jeudi 17 juin 2010 Statut Membre Dernière intervention 6 août 2010 2
4 août 2010 à 17:31
range("M70000") signifie cellule M70000, end signifie jusqu'a la fin et xlup, en allant vers le haut.
Row signifie ligne. Donc range("M70000").end(xlup).row renvoie la ligne finale en partant de M70000 et en allant vers le haut. La ligne finale veut dire le changement d'état donc si la cellule M70000 est vide, il va te renvoyer la première ligne non vide en partant du bas vers le haut. très utile !
0
Merci beaucoup!
0