Détecter 2 lignes identiques

  • Initiateur de la discussion Initiateur de la discussion chris
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

chris

Guest
Salut à tous,

J'ai un tableau de 5 colonnes et 600 lignes.

Il arrive que deux lignes (pas forcement l'une sous l'autre) contiennent les memes valeurs :

exemple :

A B C D E
1 xxx0 YYY0 blablabla0 tructructruc0 chosechose0
2 xxx1 YYY1 blablabla1 tructructruc1 chosechose1
3 xxx2 YYY2 blablabla2 tructructruc2 chosechose2
4 xxx0 YYY0 blablabla0 tructructruc0 chosechose0
5 xxx4 YYY4 blablabla4 tructructruc4 chosechose4

Dans ce cas les lignes 1 et 4 contiennent la même chose.

Comment faire uen macro capable de détecter ces 2 lignes identiques et de les mettres par exemple en couleur ?
 
Salut chris,

En F1 : =A1&B1&C1&D1&E1
formule à copier jusqu'en F5

Puis sélectionner F1:F5 et Menu Format / Mise en forme conditionnelle / la formule est : =NB.SI(F$1:F$5);A1)>1 / Format / Motif / la couleur que tu veux / OK / OK.

Il y a peut-être moyen de trouver une formule n'obligeant pas de créer une colonne supplémentaire, mais jusqu'à présent je ne l'ai pas encore trouvée.

Ândré.
 
Petite erreur que tu aurais certainement corrigée de par toi-même :

Puis sélectionner A1:E5 et Menu Format / Mise en forme conditionnelle / la formule est : =NB.SI($F$1:$F$5);$F1)>1 / Format / Motif / la couleur que tu veux / OK / OK.

Ândré.
 
Bonjour,

Avec une mise en forme conditionnelle directe, sans colonne supplémentaire.
Sélectionner les cellules à partir de A2 jusqu'à E10 ou E600 ou E autre chose
Barre de menu - Format - Mise en forme conditionnelle
Choisir "La formule est" et taper :
=SOMMEPROD(($A2&$B2&$C2&$D2&$E2=A$1:$A1&B$1:$B1&C$1:$C1&D$1:$D1&E$1:$E1)*1)>0
puis choisir couleur, etc.
 
Re,

On peut remplacer SommeProd(()) par Somme(())
=SOMME(($A2&$B2&$C2&$D2&$E2=A$1:$A1&B$1:$B1&C$1:$C1&D$1:$D1&E$1:$E1)*1)>0
La mise en forme conditionnelle accepte des formules qui seraient à valider de façon matricielle dans une cellule.
 
Celle de Thierry fonctionnait très bien mais mon niveau actuel ne me permettait pas de l'adapter à mon fichier déjà bourré de macros.

Cette dernière maquette de Michel est plus "conventionnelle" pour moi...

Merci encore à tous et bravo à ce forum !!!
 
Bonjour Chris, Michel, Ândré, Monique, le Forum

Sorry Chris de ma réactivité à contre-coup, je n'avais pas vu ta demande, mais "Le_Lapin_ Bleu_Qui_Saute_Partout" a déjà frappé !! lol

Bon Aprèm
@+Thierry
 
Bon j'ai réussi à l'intégrer à mon classeur, mais il y a unepartie que je n'arrive pas à comprendre :

' remplissage tableau valeurs uniques si pas de doublon détecté
If Tableau(M - 1) = "" And U = False Then
Tableau(M - 1) = Cible
M = M + 1
ReDim Preserve Tableau(M)
End If
Next Cell

je vois pas à quoi ça sert ça ....

Pour le reste, ça marche impec !!!!
 
bonsoir Chris

Dans la boucle For Each Cell... ,
la comparaison entre la ligne concaténée (Cible ) et les données contenues dans Tableau() permet de verifier si la ligne est un doublon ou pas :
If Cible = Tableau(i - 1) Then...

Si la valeur "Cible" est trouvée dans Tableau() , il s'agit d'un doublon
dans ce cas le numero de la ligne alimente Tableau2() :
Tableau2(N - 1) = Cell.Row

dans le cas contraire , si la valeur "Cible" n'est pas été trouvée , cette donnée va alimenter le Tableau() :
If Tableau(M - 1) = "" And U = False Then
Tableau(M - 1) = Cible
M = M + 1
ReDim Preserve Tableau(M)
End If


En fin de procedure , toutes les lignes (doublons ) dont le numero est contenu dans Tableau2() sont supprimees
For i = N - 1 To 1 Step -1
Rows(Tableau2(i - 1)).Delete
Next i


bonne soiree
michel
 
Pour Michel
Salut
J'ai récuperé ta macro "DoublonsLignesCompletes.zip" qui fonctionne sur un petit tableau.
Je récupère une table qui possède que 10 colonnes mais 40 000 lignes !
Lorsque je lance, la macro s'arrète en erreur "dépassement de capacité" sur la ligne M=M+1 en "remplissage tableau valeur unique.....".
Comment corriger ce problème ?
Ci-joint un des fichiers que j'ai a traiter (moins de colonnes et moins de lignes), mais plantage.
Merci
 

Pièces jointes

bonjour Tinet

pour un tableau de 40000 lignes tu dois adapter les variables
( avec une variable "Integer" tu es limité à 32767 lignes )

tu peux essayer :

Dim Cell As Range
Dim Ligne As Double, i As Double, M As Double, N As Double
Dim j As Byte
Dim Tableau(), Tableau2()
Dim Cible As String, Resultat As String
Dim U As Boolean

je n'ai pas mesuré le temps de traitement pour 40000 lignes mais il est possible que ce soit un peu long et cette macro ne sera peut etre pas adaptée à ton projet...à tester


bonne journee
MichelXld
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour