Suppression de doublon base de données excel (4 critères)

ArcticM

XLDnaute Nouveau
Bonjour,

Je sens que je vais vous donner mal à la tête avec mon problème.

J'ai une base de données Excel avec un grand nombre de données. Je souhaite contrôler si j'ai des doublons dans cette dernière.

Cependant les doublons dépendent de 4 paramètres... C'est à dire de la colonne "Date", "Ligne", "Poste" et "Format".
Il faut donc que ces 4 paramètres soient identiques pour déterminer que c'est un doublon sur un nombre de ligne important (supérieur à 1000).

J'ai vu quelques solutions comme SOMMEPROD mais cela me semble compliqué à mettre en place dans mon cas de figure.

Merci d'avance pour votre aide.
ArcticM
 
C

Compte Supprimé 979

Guest
Re : Suppression de doublon base de données excel (4 critères)

Bonjour ArcticM,

Pas envie de créer un fichier, donc si tu veux de l'aide, tu sais ce qu'il te reste à faire ;)

A+
 

ArcticM

XLDnaute Nouveau
Re : Suppression de doublon base de données excel (4 critères)

Voici un exemple de ce que je veux faire, c'est à dire pouvoir détecter le doublon surligné en jaune en fonction des 4 premières paramètres en rouge.

Pour résumer, scanner l'ensemble de ma base de données en fonction de ces 4 critères afin de détecter d'éventuels doublons.

Merci:rolleyes:
 

Pièces jointes

  • Exemple.xls
    16.5 KB · Affichages: 71
  • Exemple.xls
    16.5 KB · Affichages: 81
  • Exemple.xls
    16.5 KB · Affichages: 87

R@chid

XLDnaute Barbatruc
Re : Suppression de doublon base de données excel (4 critères)

Bonjour @ tous,
Salut Bruno45,
Sélectionner toute la feuille...
Supprimer Doublons...
ArcticM.png
Amicalement
 
C

Compte Supprimé 979

Guest
Re : Suppression de doublon base de données excel (4 critères)

Re,

Voici le code qui pourrait aller ;)
VB:
Sub SuppressionDoublon4Critères()
  Dim DLig As Long, Lig As Long
  Dim NbVal As Integer
  With Sheets("Feuil1")
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    For Lig = DLig To 2 Step -1
    If Lig = 14 Then Stop
      NbVal = 0
      NbVal = Application.Evaluate("=SUMPRODUCT((A$2:A$" & DLig & "=A" & Lig & ")*(B$2:B$" & DLig & "=B" & Lig & ")*(C$2:C$" & DLig & "=C" & Lig & ")*(D$2:D$" & DLig & "=D" & Lig & "))")
      If NbVal > 1 Then
        .Rows(Lig).Delete
      End If
    Next Lig
  End With
End Sub

Avec ce code, pour chaque ligne en partant de la fin j'utilise une formule matricielle
Code:
=SOMMEPROD((A$2:A$29=A29)*(B$2:B$29=B29)*(C$2:C$29=C29)*(D$2:D$29=D29))
Celle-ci me renvoie le nombre d’occurrences identiques avec la 4 mêmes critères

A+
 
Dernière modification par un modérateur:

tototiti2008

XLDnaute Barbatruc
Re : Suppression de doublon base de données excel (4 critères)

Bonjour ArcticM, bonjour Bruno :), bonjour Rachid :),

La solution de Rachid permet de supprimer les doublons, pas de les mettre en évidence, mais c'est aussi possible en Excel 2003 en utilisant le filtre élaboré
Tu veux les supprimer ou les mettre en évidence ?
Pour les mettre en évidence, je ne vois que la mise en forme conditionnelle basée sur la fonction SOMMEPROD

Edit : bing, et VBA bien sûr ;)
 

ArcticM

XLDnaute Nouveau
Re : Suppression de doublon base de données excel (4 critères)

Merci beaucoup pour vos réponses!
Alors je souhaite les mettre en évidence, autant pour moi.... sachant que l'exemple que j'ai donné est une petite partie dema BdD. J'ai un nombre conséquent de ligne en réalité.

La mise en forme conditionnel serait la meilleur solution?

ArcticM
 

ArcticM

XLDnaute Nouveau
Re : Suppression de doublon base de données excel (4 critères)

Est ce que quelqu'un aurait une idée?

Pour redonner une idée de ce que je veux faire: parcourir ma base de données et détecter d'éventuels doublons en fonction de 4 paramètres.

Merci!!
 

leop93

XLDnaute Occasionnel
Re : Suppression de doublon base de données excel (4 critères)

Bonjour à tous les intervenants du topic !

Si tes 4 colonnes se suivent, tu n'as qu'à modifier la valeur dans Set r = [A:J] de ce code:

Code:
Sub Doublons()
Dim r As Range, ncol%, d As Object, t$, col%, doublon As Range
Set r = [A:J]
Set r = Intersect(r, ActiveSheet.UsedRange)
If r Is Nothing Then Exit Sub
ncol = r.Columns.Count
Set d = CreateObject("Scripting.Dictionary")
For Each r In r.Rows
  t = ""
  For col = 1 To ncol
    t = t & r.Cells(col) & Chr(1)
  Next
  t = UCase(Application.Trim(t))
  If d.Exists(t) Then
    Set doublon = Union(IIf(doublon Is Nothing, r, doublon), r)
  Else
    d(t) = t
  End If
Next
If Not doublon Is Nothing Then doublon.EntireRow.Interior.ColorIndex = 8
End Sub

Là tous tes doublons (pas sûr que le "premier", "l'original" soit compris dedans) seront en bleu clair, il faudra que tu gères le changement de couleur à chaque nouveaux doublons. ;)

Bon après-midi

Leop93
 

leop93

XLDnaute Occasionnel
Re : Suppression de doublon base de données excel (4 critères)

De rien, chez moi ça marche sur mon classeur d'origine.

J'ai aussi créé un fichier test de 4 colonnes (A, B, C et D) avec des valeurs différentes et identiques et ça fonctionnait, mais l'original (la ligne sur laquelle se base la macro) n'est pas mise en évidence... Uniquement les doublons.
 

Discussions similaires

Réponses
7
Affichages
349

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 178
dernier inscrit
BERSEB50