Colorier les lignes différentes de deux feuilles [Résolu]

Signaler
Messages postés
70
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
-
Messages postés
70
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
-
Bonjour,

j'ai besoin de faire ressortir les différence entre deux feuilles.

pour cela j’exécute un code qui me colorie les lignes différentes, mais il me colorie les lignes identiques.

En fait j'ai besoin de colorier les lignes différentes dans la feuille 2 uniquement et ma contrainte et que les lignes identiques ne sont pas dans le même classement.

merci

 'colorie doublons
Sub essai()
der_ligne = Range("A" & "65000").End(xlUp).Row
For Each cel1 In Sheets("Feuil1").Range("A1:A" & der_ligne)
    For Each cel2 In Sheets("Feuil2").Range("A1:A" & der_ligne)
      If cel1 <> cel2 Then
        li = li + 1
        cel1.Interior.ColorIndex = 3
        cel2.Interior.ColorIndex = 3
      End If
    Next
  Next
End Sub



Configuration: Windows / Firefox 60.0

8 réponses

Messages postés
8361
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2021
1 572
Bonjour,

Essaies comme ça :
Option Explicit
Sub Comparer()
' Compare les valeurs de la feuille 1 et celles de la feuille 2
Dim dv1 As Object
Dim cel As Range
Dim d°L As Long
  ' Mémoriser les valeurs de la feuille 1 sans doublon
  Set dv1 = CreateObject("Scripting.Dictionary")
  With Worksheets(1)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A1:A" & d°L)
      dv1(cel.Value) = ""
    Next
  End With
  ' Colorer les différences sur la feuille 2
  With Worksheets(2)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A1:A" & d°L)
      If Not dv1.Exists(cel.Value) Then
        cel.Interior.ColorIndex = 3
      Else
        cel.Interior.ColorIndex = xlNone
      End If
    Next
  End With
End Sub

Messages postés
14035
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 janvier 2021
790
bonjour,
merci de spécifier "basic" quand tu utilises les balises de code avec du vba.
je suggère, pour que tu comprennes ce que fait ton code, que tu changes temporairement la logique: colorie les lignes identiques.
Messages postés
8361
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2021
1 572
Ce sera pareil : « les lignes identiques ne sont pas dans le même classement »
Messages postés
14035
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 janvier 2021
790 >
Messages postés
8361
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2021

as-tu essayé? as-tu remarqué la double boucle?
Messages postés
70
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020

Merci c'est parfait
Messages postés
70
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020

petite question complémentaire, si je veux colorer la colonne B correspondante, je peux faire ainsi?

Option Explicit
Sub Comparer()
' Compare les valeurs de la feuille 1 et celles de la feuille 2
Dim dv1 As Object
Dim cel As Range
Dim d°L As Long
  ' Mémoriser les valeurs de la feuille 1 sans doublon
  Set dv1 = CreateObject("Scripting.Dictionary")
  With Worksheets(1)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A2:B" & d°L)
      dv1(cel.Value) = ""
    Next
  End With
  ' Colorer les différences sur la feuille 2
  With Worksheets(2)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A2:B" & d°L)
      If Not dv1.Exists(cel.Value) Then
        cel.Interior.ColorIndex = 37
      Else
        cel.Interior.ColorIndex = xlNone
      End If
    Next
  End With
End Sub

Messages postés
8361
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2021
1 572
Non,

Essaies comme ça :
Option Explicit
Sub Comparer()
' Compare les valeurs de la feuille 1 et celles de la feuille 2
Dim dv1 As Object
Dim cel As Range
Dim d°L As Long
  ' Mémoriser les valeurs de la feuille 1 sans doublon
  Set dv1 = CreateObject("Scripting.Dictionary")
  With Worksheets(1)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A2:A" & d°L)
      dv1(cel.Value) = ""
    Next
  End With
  ' Colorer les différences sur la feuille 2
  With Worksheets(2)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A2:A" & d°L)
      If Not dv1.Exists(cel.Value) Then
        cel.Resize(1, 2).Interior.ColorIndex = 37
      Else
        cel.Resize(1, 2).Interior.ColorIndex = xlNone
      End If
    Next
  End With
End Sub


Messages postés
70
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020

Bonjour,

après utilisation je me retrouve avec une erreur dans l'application de la macro.

J'ai besoin de vérifier si les colonnes A et C sont identique au 2 feuilles et pas que la colonne A.

J'ai essayé de modifier les lignes 10, 11 et 17, 18 de la macro précédente ainsi mais cela ne marche pas.

merci de votre aide

Option Explicit
Sub Comparer()
' Compare les valeurs de la feuille 1 et celles de la feuille 2
Dim dv1 As Object
Dim cel As Range
Dim d°L As Long
  ' Mémoriser les valeurs de la feuille 1 sans doublon
  Set dv1 = CreateObject("Scripting.Dictionary")
  With Worksheets(1)
    d°L = .Cells(.Rows.Count, "A;C").End(xlUp).Row
    For Each cel In .Range("A2:A" & d°L)
      dv1(cel.Value) = ""
For Each cel In .Range("C2:C" & d°L)
      dv1(cel.Value) = ""
    Next
  End With
  ' Colorer les différences sur la feuille 2
  With Worksheets(2)
    d°L = .Cells(.Rows.Count, "A;C").End(xlUp).Row
    For Each cel In .Range("A2:A" & d°L)
For Each cel In .Range("C2:C" & d°L)
      If Not dv1.Exists(cel.Value) Then
        cel.Resize(1, 2).Interior.ColorIndex = 37
      Else
        cel.Resize(1, 2).Interior.ColorIndex = xlNone
      End If
    Next
  End With
End Sub
Messages postés
8361
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2021
1 572
Bonjour,

Si j'ai bien compris tu veux vérifier pour chaque ligne de la feuille 2 si le couple de valeurs en A et C existe quelque part sur la feuille 1 en A et C d'une même ligne.

Essaies comme ça :
Option Explicit
Sub Comparer()
' Compare les valeurs de la feuille 1 et celles de la feuille 2
Dim dv1 As Object
Dim cel As Range
Dim d°L As Long
  ' Mémoriser les valeurs de la feuille 1 sans doublon
  Set dv1 = CreateObject("Scripting.Dictionary")
  With Worksheets(1)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A2:A" & d°L)
      dv1(cel.Value & Chr(1) & cel.Offset(0, 2).Value) = ""
    Next
  End With
  ' Colorer les différences sur la feuille 2
  With Worksheets(2)
    d°L = .Cells(.Rows.Count, "A").End(xlUp).Row
    For Each cel In .Range("A2:A" & d°L)
      If Not dv1.Exists(cel.Value & Chr(1) & cel.Offset(0, 2).Value) Then
        cel.Resize(1, 3).Interior.ColorIndex = 37
      Else
        cel.Resize(1, 3).Interior.ColorIndex = xlNone
      End If
    Next
  End With
End Sub

Cordialement
Patrice

Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Messages postés
70
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020

Merci Patrice, je tâtonnais mais pas au bonne endroit.