Colorier les lignes différentes de deux feuilles

Résolu
guillaume gdco Messages postés 75 Statut Membre -  
guillaume gdco Messages postés 75 Statut Membre -
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

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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

    1
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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.
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Ce sera pareil : « les lignes identiques ne sont pas dans le même classement »
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        as-tu essayé? as-tu remarqué la double boucle?
        0
  3. guillaume gdco Messages postés 75 Statut Membre
     
    Merci c'est parfait
    0
  4. guillaume gdco Messages postés 75 Statut Membre
     
    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
    
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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


    0
  7. guillaume gdco Messages postés 75 Statut Membre
     
    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
    
    0
  8. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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

    0
  9. guillaume gdco Messages postés 75 Statut Membre
     
    Merci Patrice, je tâtonnais mais pas au bonne endroit.
    0