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

Fermé
klissou69 Messages postés 60 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 9 septembre 2013 - Modifié par klissou69 le 21/06/2013 à 11:13
klissou69 Messages postés 60 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 9 septembre 2013 - 21 juin 2013 à 13:54
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 !

A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
21 juin 2013 à 13:37
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
klissou69 Messages postés 60 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 9 septembre 2013
21 juin 2013 à 13:54
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