Comparer des cellules de lignes de 2 feuilles différentes Excell

klissou69 Messages postés 61 Statut Membre -  
klissou69 Messages postés 61 Statut Membre -
Bonjour,

Le débutant en excell que je suis se lance !

J'aurais besoin d'un petit coup de main.

Je vais essayer d'exprimer mon problème clairement.

J'ai 2 feuilles excell.

J'aimerai comparer 5 cellules ( par exemple A5 à E5) de chaque ligne de la première feuille à 5 cellules ( B7 à F7) de la 2ème feuille.

Si et seulement si les valeurs des 5 cellules sont identiques, j'aimerai colorier la ligne de la feuille 1 de même couleur que la ligne de la feuille 2.

Je ne sais pas si c'est clair, je vous joins le début de mon code avec lequel j'ai tenté de comparer toute la ligne.

Mais je me suis rendu que cela ne marcherait pas car certaines cellules sont décalées ( il y a une colonne en plus dans la 2 ème feuille ).

Dans ces cellules il y aura des cellules avec des chiffres, et dans d'autres des lettres.

Sub Test1coloricolonne()

nbcolonne1 = Sheets("Feuil1").UsedRange.Columns.Count 'compte le nombre de colonnes non vides sur la feuille 1
nbligne1 = Sheets("Feuil1").UsedRange.Rows.Count 'compte le nombre de lignes non vides sur la feuille 1

nbcolonne2 = Sheets("Feuil2").UsedRange.Columns.Count 'compte le nombre de colonnes non vides sur la feuille 2
nbligne2 = Sheets("Feuil2").UsedRange.Rows.Count 'compte le nombre de lignes non vides sur la feuille 2

Cells(nbligne1 + 1, 1) = "Commentaires SCP" 'Ajout de la mention Com en prévision de l'ajout des com

For i = 2 To nbligne1
    
    For j = 2 To nbcolonne1
  
  For k = 2 To nbligne2
    
       For l = 3 To nbcolonne2

          If i <> j Then 'On évite de comparer la même ligne

           If Sheets("Feuil1").Cells(i, 4) = Sheets("Feuil2").Cells(k, 5) & 
              Sheets("Feuil1").Cells(i, 5) = Sheets("Feuil2").Cells(k, 6) &
	Sheets("Feuil1").Cells(i, 6) = Sheets("Feuil2").Cells(k, 7) & 
	Sheets("Feuil1").Cells(i, 7) = Sheets("Feuil2").Cells(k, 8) & Then

            	'Si les 3 cellulles de la feuille 1 comparées 1 à 1 aux 3 autres cellules de la feuilles 2 sont égales alors :

                Sheets("Feuil1").rows(i).Interior.Color = Sheets("Feuil2").rows(k).Interior.Color

                 End If  
           End If
   Next
            Next
     Next
Next

End sub



Merci d'avance pour votre aide !

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Essaies ce code :
    Option Explicit
    
    Sub ColorieLigne()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim row1 As Range
    Dim row2 As Range
    Dim i As Integer
    Dim egal As Boolean
    
    Set rng1 = Intersect(Worksheets("Feuil1").Columns("A:E"), Worksheets("Feuil1").UsedRange)
    Set rng2 = Intersect(Worksheets("Feuil2").Columns("B:F"), Worksheets("Feuil2").UsedRange)
    
    Application.ScreenUpdating = False
    For Each row1 In rng1.Rows
      For Each row2 In rng2.Rows
        egal = True
        For i = 1 To row1.Cells.Count
          If row1.Cells(1, i).Value <> row2.Cells(1, i).Value Then egal = False
        Next i
        If egal Then
          row1.Interior.Color = row2.Interior.Color
        End If
      Next row2
    Next row1
    Application.ScreenUpdating = True
    
    End Sub
    1
  2. klissou69 Messages postés 61 Statut Membre
     
    Bonjour Patrice,

    Merci beaucoup, effectivement ton code marche et même très bien.
    ( je vais peut être exagérer mais j'aimerai colorier la ligne entière car la ça ne colore que les 4 colonnes sélectionnées, comment faire stp ? ).

    J'avais réussi à faire fonctionner mon code mais je mettais 10 min à parcourir les nombreuses lignes ( 750 ) car je les comparais une à une.

    J'ai maintenant besoin de faire quelque chose d'autre :

    Je voudrais regrouper les lignes ayant la même couleur.

    Pourrais-tu m'aider une nouvelle fois je te prie ?

    Je te remercie.

    Bon après-midi
    0