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.
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.
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.
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…
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 ?
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é.
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.
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.
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
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.