Gestion des doublons


#1

Bonjour à tous,

Je débute sur vba, et sur cette plate-forme d’entre-aide aussi d’ailleurs, et j’ai un projet en cours qui avance doucement et qui nécéssite un peux d’aide.
Alors voilà, j’aimerais détecter les doublons dans mon fichier et ne coloré que la deuxième seulement (càd la deuxième doublon) et à la fin de la deuxième ligne où se trouve le deuxième doublon (càd à côté), j’aimerais ajouté un mot “Doublons” pour mieux les distingués des autres.

P.S :
Il y a des noms qui se ressemblent mais avec des prénoms différents qui ne doit pas être comprise comme des doublons.
Autrement dit, les doublons doivent se ressembler sur toutes les colonnes.
Oui, je sais je m’éxprime un peut mal mais j’espère avoir été claire, en ésperant que vous pourrez m’aider.

Voici le fichier sur lequel je travail.


#2

Bonjour @Ghaby,

Ton fichier n’est pas passé, pour joindre un fichier suivre cette procédure:

Joindre un fichier

@+
Cordialement.


#3

Bonjour @mdo100

J’ai déjà fait cette procédure plusieurs fois mais ça ne fait que s’enregistrer et une fois que j’envoi le message, il n’y est pas.

Je sais pas pourquoi!!! :frowning:


#4

bonjour ghaby

Et bien venue sur ce forum je ne suis pas expert mais voila j’ais fait quelque recherche sur le net et j’ais trouvé

c’la regarde ci c’la t’intéresse essai doublon .xlsm (17,0 Ko)

Cordialement

kiss6


#5

Bonjour kiss6,

Merci pour ta réponse, en effet c’est à peut prêt ce que je veut faire mais avec des gros fichiers, composés de beaucoup de ligne et de colonne, elle ne fonctionne pas. Il ne se passe rien.


#6

Re ,

Ne pourriez vous pas faire parvenir un fichier EX:

Joindre un fichier

Cordialement

kiss6


#7

J’ai déjà essayé d’envoyer le fichier sur lequel je travaille mais il fait +de 4Mo et je crois que c’est pour çela qu’il n’est pas joignable sur mon message.

Voici un autre fichier qui ressemble à peut près à celui sur lequel je travail.


#8

Re-salut à tous,

Mon problème c’est d’identifié les doublons que sur des colonnes bien précise, par exemple sur cette autre fichier, je dois voir les doublons seulement en fonction du nom, prenom et date de naissance, de ne coloré que la deuxième doublons et d’y ajouter un petit mot “Doublons” en fin du ligne pour les distingués des autres lignes…

Alors votre aide sont les bienvenues…

Merci d’avance!!!


#9

Bonjour,

Pour une raison qui parait évidente sur internet, il est préférable de ne pas partager un document avec des informations confidentielles (surtout celles de vos clients ?).
Ainsi le mieux serait de supprimer au moins le numéro de téléphone/l’adresse mail et éventuellement leur adresse.
Il est aussi possible et conseillé de créer un fichier “modèle” avec environ 5 lignes qui montrent un exemple de votre fichier.

concernant votre problème l’utilisation de VBA est-elle obligatoire ?


#10

Bonjour @Jauster,

Merci pour votre conseil, et je ferais gaffe la prochaine fois.
Concernant mon problème, oui, on m’a éxigé d’utilisé VBA, surtout sur le dernier fichier que j’ai ajouté.


#11

Re @Ghaby, toutes et tous,

Voici une proposition:
Ayant pris soin d’enlever les infos confidentielles, comme l’a justement rappelé Jauster.

Tout d’abord j’ai inséré une ligne vide au début du tableau et je suis partie de l’idée d’une formule pour identifier les doublons concernant les 3 colonnes Nom, Prénom, Date de naissance.

J’ai mis les résultats dans la colonne “H” mais on peut mettre les résultats a la fin.

En “H2” cette formule se copie jusqu’à la dernière ligne vide dans la limite de 65536.

=SI(NB.SI.ENS($E$2:$E$65536;E2;$F$2:$F$65536;F2;$G$2:$G$65536;G2)>1;"Doublon";"")

Faire un appuis sur le bouton “Go” en “H1”.

Sub Doublons3Col()
 
    Range("H2").Select 'A partir de H2
    'Copier la formule =SI(NB.SI.ENS(E2:E65536;E2;F2:F65536;F2;G2:G65536;G2)>1;"Doublon";"")
    ActiveCell.FormulaR1C1 _
    = "=IF(COUNTIFS(R2C5:R65536C5,RC[-3],R2C6:R65536C6,RC[-2],R2C7:R65536C7,RC[-1])>1,""Doublon"","""")"
    'De H2 jusqu'à la dernière ligne non vide colonne A max A65536
    Selection.AutoFill Destination:=Range("H2:H" & Range("A65536").End(xlUp).Row)
    
 End Sub

Les doublons seront colorés en jaune avec une simple MFC.

Voir le fichier ICI==> Ghaby V1.xlsm (119,9 Ko)

Cordialement.


#12

Salut MDO

Bien vu :+1:

Petit défit:

Tu n’as plus qu’à faire une bonne macro pour ne plus voir la formule et incoporer la MFC dedans :wink:


#13

Merci beaucoup @mdo100, c’est exactement ce que je recherche.

@Mimimathy, oui oui, je n’ai plus qu’à faire ça et tous va pour le mieux.

Merci pour votre aide et conseil précieuse.


#14

Salut l’ami @Mimimathy, :wink:

Merci, mais je n’ais pas ton talent concernant les macros, alors pas de moqueries :yum: non mais !

Par contre j’attends ta proposition, qui elle je n’en doute pas sera bien meilleur.

Amicalement.


#15

Re,

Eh ben, je suis dessus, mais elle est pas gagnée,
mais j’aime çà :yum:


#16

En faite @mdo100, est-ce que cette formule est applicable quand on change de fichier à analyser!??

Parce que je suis entrain de le tester sur une autre fichier mais ça bug de partout.


#17

Re @Ghaby,

La macro est adaptée aux colonnes “E, F, G” du fichier que tu as joins, et dont j’ai anonymisé le contenu avant que tu ne le retire du forum.

Si tu as mis la macro dans un autre fichier et que les colonnes ne correspondent pas, il faut adapter / modifier la macro au nouveau fichier.

Sinon, modifie la formule que j’ai mis dans mon message, ça ne prend pas plus de place que la macro et c’est beaucoup plus rapide pour l’adapter…

Mais bon attendons aussi, la proposition de @Mimimathy, si tu veux absolument du VBA, son talent pour les macros n’est plus a démontré.

Et le m’sieur à dit:

Cordialement.


#18

Re,

Voici une version avec VBA

Sub Doublons()
Dim i As Integer
Dim Dl As Long
Dim Ws As Worksheet

'**************************************************
'*  MODIFIER LE NOM DE LA FEUILLE DANS LE SET Ws  *
'**************************************************

Set Ws = Worksheets("131017_ABPREST_1-15") 'Initialisation feuille travail
Dl = Ws.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne non vide
Ws.Range("H2:H" & Dl).Value = "" 'Efface les données colonne H
    For i = 1 To Dl 'Boucle sur toutes les lignes non vides
            If Application.WorksheetFunction.CountIfs(Range(Cells(2, 5), Cells(Dl, 5)), Cells(i, 5), _
              Range(Cells(2, 6), Cells(Dl, 6)), Cells(i, 6), _
              Range(Cells(2, 7), Cells(Dl, 7)), Cells(i, 7)) > 1 Then
              Cells(i, 8).Value = "Doublon"    'Formule de MDO 100 en version VBA
              Range(Cells(i, 1), Cells(i, 9)).Interior.Color = vbYellow 'Couleur cellule jaune
              Range(Cells(i, 1), Cells(i, 9)).Font.Color = vbRed 'Couleur police Rouge
              Range(Cells(i, 1), Cells(i, 9)).Font.Bold = True 'Police en GRAS
            Else
              Range(Cells(i, 1), Cells(i, 9)).Interior.Color = xlNone 'Remise en mode normal des couleurs,fonts et type police
              Range(Cells(i, 1), Cells(i, 9)).Font.Color = vbBlack
              Range(Cells(i, 1), Cells(i, 9)).Font.Bold = False
            End If
    Next i
End Sub

Ghaby V1.xlsm (115,1 Ko)


#19

Nickel!!!..

Merci beaucoup les gars @mdo100, @Mimimathy, votre aide, l’un comme l’autre m’a vraiment beaucoup aidé dans mon projet.

Et j’ai aussi testé la version VBA par @Mimimathy de la formule de @mdo100 dans d’autre fichier et ça a marché du tonnere, il suffit juste d’y adapter les cellules et les colonnes.

Encore merci les gars, vous êtes les meilleurs.

Cordialement.


#20

Re @Mimimathy,

Que dire ? :pray:Je ne peux pas lutter :disappointed_relieved: a part dire bravo et merci de mettre ton savoir au service de tous sur ce forum.

Amicalement.