Comparaison deux colonnes
hélo37
-
Hélo37 -
Hélo37 -
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?
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?
A voir également:
- Comparaison deux colonnes
- Comment faire deux colonnes sur word - Guide
- Inverser deux colonnes excel - Guide
- Comparaison million milliard - Accueil - Technologies
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Nombre de jours entre deux dates excel - Guide
1 réponse
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 :
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 :
A toi de voir ce que tu veux en faire.
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.
le "row" ça veut dire quoi? je le vois svt, mais je ne sais pas ce que s'est...
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 !