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 -
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.
Merci d'avance pour votre aide !
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
-
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 -
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