Microsoft 365 comparer cellules de 2 lignes

ABDELHAK

XLDnaute Occasionnel
Bonjour le forum
Je sollicite votre aide pour réaliser une macro
J’aimerais que la macro compare les cellules de la dernière ligne de mon tableau avec la ligne précédente.
Si les cellules comparées ont la même valeur alors (le remplissage cellule = vert).
Le tableau est composé de 81 colonnes et 7598 lignes.
Exemples :
  • Comparer les lignes n° 7598 et n°7597
  • Comparer les cellules de ces 2 lignes si elles correspondent entre elles les colorier en vert.
  • Comparer les lignes n° 7597 et n°7596
  • Comparer les cellules de ces 2 lignes si elles correspondent entre elles les colorier en vert.
  • Comparer les lignes n° 7596 et n°7595
  • Comparer les cellules de ces 2 lignes si elles correspondent entre elles les colorier en vert.
Merci d’avance pour votre aide.
ABDELHAK
 

Pièces jointes

  • COMPARE_LIGNES.xlsm
    638.7 KB · Affichages: 5

ABDELHAK

XLDnaute Occasionnel
Bonjour M12,
Je viens de tester la macro que vous avez écrite. Elle fonctionne à merveille. Elle s'exécute en moins d'1 minute en traitant 7600 lignes et 80 colonnes.
Vous avez très bien transcrit ce que je voulais. Si cela ne vous dérange pas pouvez-vous écrire quelques notes d'explications ?
Mille merci d'avoir répondu.
A+
ABDELHAK
 

M12

XLDnaute Accro
Re,

Avec explications
VB:
Sub Test()
  '********************************
  '*  DECLARATIONS DES VARIABLES  *
  '********************************
  Dim i%, j%, Dl%, Dc%
  Dim Ws As Worksheet
  '********************************
  '* INITIALISATION DES VARIABLES *
  '********************************
  Set Ws = Sheets("TABLEAU_ORIGINAL")
  Dl = Ws.Range("A" & Rows.Count).End(xlUp).Row - 2 'Dernière ligne vide - 2 depuis le bas(Ligne en bleu & ligne "Comparer les cellules ...")
  Dc = Ws.Cells(1, Columns.Count).End(xlToLeft).Column 'Dernièere colonne depuis la droite
 
  For i = Dl To 3 Step -1 'Je boucle de la dernière ligne jusqu'à la ligne 3 par pas de 1 (-1, je remonte d'une ligne à chaque boucle)
    For j = 2 To Dc 'Je boucle sur les colonnes de la ligne
      If Ws.Cells(i, j).Value <> "" Then 'Si la cellule n'est pas vide
        If Ws.Cells(i, j).Value = Ws.Cells(i - 1, j) Then 'Si la valeur de la cellule est égale à la valeur de la cellule de la ligne du dessus
          Ws.Cells(i - 1, j).Interior.Color = RGB(0, 255, 0) 'Je la colorie en vert
        End If
      End If
    Next j
  Next i
End Sub
 

job75

XLDnaute Barbatruc
Bonjour ABDELHAK, M12,

A priori pas besoin de VBA, voyez le fichier .xlsx joint et la MFC sur les colonnes B à BS entières =ET(LIGNE()>1;B1<>"";B1=B2)

La mise à jour de la MFC est immédiate.

A+
 

Pièces jointes

  • COMPARE_LIGNES(1).xlsx
    618.3 KB · Affichages: 13

job75

XLDnaute Barbatruc
Sur le fichier que j'ai joint menu Accueil => Mise en forme conditionnelle => Gérer les règles.

En cliquant sur Modifier la règle on accède à la formule et on peut la modifier.

En cliquant sur Nouvelle règle on peut ajouter une condition à la MFC.
 

ABDELHAK

XLDnaute Occasionnel
RE,
J'ai mis le tableau original dans la MFC et ça fonctionne à merveille.
Mais lorsque je copie le tableau vers un autre fichier,toutes les cellules traîtés prennent la couleur bleu et cela pose problème.
J'aimerais que les cellules gardent la couleur bleu et vert.
A+
ABDELHAK
 
Haut Bas