Je suis débutante en macro et je galère à comprendre l'erreur de ma macro.
Ma macro compare deux colonnes, la "CD" et la "CE" et dès qu'une cellule est différente elle met celle de la colonne CD en rouge. Càd si les cellules CD4 et CE4 n'ont pas la même valeur, elle va mettre la CD4 en rouge.
Ma macro marche bien mais dès qu'il y'a des "#N/A" dans ma colonne "CD" ça bloque et je ne comprend pas pourquoi
Voici ma macro:
Sub Comparer()
For i = 2 To Range("CD1").End(xlDown).Row
If Cells(i, 82).Value <> Cells(i, 83).Value Then
Cells(i, 82).Interior.ColorIndex = 3
End If
Next i
End Sub
Merci de m'aider à la modifier pour qu'elle marche aussi avec des "#N/A"
Re : Macro qui compare deux colonnes et colorie les cellules différentes
Bonjour à tous
j'aurai plutôt écrit la macro de cette façon
Code:
Macro comparer()
Dim DerLA&, DerLb&, Sh As Worksheet,i&
Set Sh = Sheets("art sans doublon")
DerLA = Range("CD" & Rows.Count).End(xlUp).Row 'La dernière ligne d'une colonne sélectionnée
DerLb = Range("CE" & Rows.Count).End(xlUp).Row 'La dernière ligne d'une colonne sélectionnée
For i = 2 To DerLA
For j = 2 To DerLb
If Sh.Cells(j, 82) <> Sh.Cells(i, 83) Then Sh.Cells(j, 82).Interior.ColorIndex = 3
End If
Next j
Next i
End Sub
et a priori en comparant une cellule sur une colonne elle va forcement en trouver une qui n'est pas pareille
si c'est pour comparer celle qui est en face il mettre celle ci
Code:
Macro comparer()
Dim DerLA&, Sh As Worksheet,i&
Set Sh = Sheets("art sans doublon")
DerLA = Range("CD" & Rows.Count).End(xlUp).Row 'La dernière ligne d'une colonne sélectionnée
For i = 2 To DerLA
If Sh.Cells(i, 82) <> Sh.Cells(i, 83) Then Sh.Cells(i, 82).Interior.ColorIndex = 3
End If
Next i
End Sub
Re : Macro qui compare deux colonnes et colorie les cellules différentes
Bonjour jihane,
Un extrait de ton fichier (sans données confidentielles) aurait sans doute permis de mieux comprendre ... les données à comparer sont sur la même ligne à chaque fois (donc dans des cellules voisines)??
Si c'est bien le cas, je dirais que tu te compliques la tâche inutilement: une Mise en Forme Conditionnelle devrait arriver à faire la même chose que ce bout de code (qu'il vaudrait mieux oublier ).
Si ce n'est pas d'une comparaison ligne par ligne qu'il s'agit, dépose un classeur qui représente la structure de tes données réelles, en précisant comment la comparaison doit se faire.
Edit: bonjour jpb388 ... désolé pour la "bousculade"
Re : Macro qui compare deux colonnes et colorie les cellules différentes
J'ai modifié ma macro jpb388 et elle marche bien mais dès qu'il y'a un ""#N/A" dans ma colonne CD ca bloque. Mon fichier est top lourd Modeste donc je teste sur ce bout de fichier avec la colonne A et B au lieu de "CD" et "CE" et c'est le même problème, dès qu'il y'a un "#N/A" dans la colonne A qui n'est pas en B ma macro bloque
Sub Comparer()
For i = 2 To Range("A1").End(xlDown).Row
If Cells(i, 1).Value <> Cells(i, 2).Value Then
Cells(i, 1).Interior.ColorIndex = 3
End If
Next i
End Sub
Merci de m'aider à la modifier pour qu'elle marche aussi avec des "#N/A"
re
Bonjour Modeste je te souhaite une bonne journée
Code:
Sub Comparer()
For i = 2 To Range("A1").End(xlDown).Row
If Cells(i, 1).Text <> Cells(i, 2).Text Then
Cells(i, 1).Interior.ColorIndex = 3
End If
Next i
End Sub
si la case de gauche est na et la case de droite est vide alors na sera rouge
pour eviter cela tu met une condition apres ton 1er if du genre
Code:
Sub Comparer()
For i = 2 To Range("A1").End(xlDown).Row
If Cells(i, 1).Text <> Cells(i, 2).Text Then
if (cells(i,1)<>na or cells(i,1)<>"")and (cells(i,2)<>na or cells(i,2)<>"") then
Cells(i, 1).Interior.ColorIndex = 3
end if
End If
Next i
End Sub
Comme quoi, avec un fichier c'est toujours mieux! La présence des #N/A ajoute une difficulté qui n'était pas annoncée.
Une proposition avec MFC sur la colonne A (deux MFC sont nécessaires ici). Ajouté un #N/A en colonne B, pour tester. On peut peut-être écrire la première condition plus succintement ...?
C'est bon, j'ai trouvéé comment le faire en macro:
For i = 2 To Cells(Rows.Count, "CD").End(xlDown).Row
If (IsError(Cells(i, 82)) And Not IsError(Cells(i, 83))) Or (Not IsError(Cells(i, 82)) And IsError(Cells(i, 83))) Then
Cells(i, 82).Interior.ColorIndex = 3
ElseIf Cells(i, 82).Value <> Cells(i, 83).Value Then
Cells(i, 82).Interior.ColorIndex = 3
End If
Next i