Modifier ma macro qui marche

jihane

XLDnaute Junior
Bonjour à tous :D

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" :)
 
Dernière édition:

jpb388

XLDnaute Accro
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
 

Modeste

XLDnaute Barbatruc
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 :eek:).
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"
 

jihane

XLDnaute Junior
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"
 

Pièces jointes

  • test macro.xlsx
    9.8 KB · Affichages: 54
  • test macro.xlsx
    9.8 KB · Affichages: 57
  • test macro.xlsx
    9.8 KB · Affichages: 62

jpb388

XLDnaute Accro
Re : Modifier ma macro qui marche

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
 

Modeste

XLDnaute Barbatruc
Re : Modifier ma macro qui marche

Re-bonjour,

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 ...?
 

Pièces jointes

  • MFC jihane.xlsx
    12.5 KB · Affichages: 53

jihane

XLDnaute Junior
Re : Modifier ma macro qui marche

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
 

Discussions similaires

Réponses
0
Affichages
132