Recherche de doublon

bonjour a tous

j'ai récupérer ce code qui recherche si il y a des doublons dans la colonne B de la feuille Base de Données si le nom est déjà présent il fonctionne très bien mais certaine personne sont dans la liste avec leurs fils ou frère et donc me sortent comme des doublons car cela ne recherche que dans la colonne des nom (B:B)

dans la le code peut t'on y ajouter la colonne C:C pour que cela me signale le doublon que si le nom (colonne B:B) et le prénom colonne (C:C) sont présent cela déclenche mon MsgBox

merci & bon dimanche

Private Sub T1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Dim rg As Range
    Dim rep As Integer
    If T1.Text = "" Then Exit Sub
    Set rg = Sheets("Base de Données").Range("B:B").Find(T1.Text)
    If Not rg Is Nothing Then
        rep = MsgBox("Cet adhérent est existant " & "Voulez vous continuer", vbCritical + vbYesNo)
        If rep = vbYes Then
            T2.SetFocus: GoTo 1
            Cancel = True
        Else
            MsgBox ("Opération annulé")
            Unload Me
        End If
    End If

1 End Sub

Bonjour

Tu devrais joindre ton fichier...

Bye !

re

je ne peut pas car j'ai dessus des données confidentielles

Bonsoir,

faire une comparaison sur deux colonnes ce n'est pas bien compliqué, mais il faut connaitre les variables servant à faire cette comparaison.
Si j'ai bien compris T1.Text correspond au nom, mais quelle est la variable pour le prénom ?

Après on pourra lancé une recherche Find sur le nom, et en cas d'égalité on vérifie le prénom, si différent alors on tient le bon bout, mais il faut continuer la recherche sur le Nom afin de tester toutes les paires, et si au final aucune paire nom Prénom est identique à l'entrée, alors nouvelle personne, sinon doublon.

@ bientôt

LouReeD

bonsoir et merci de prendre du temps

pour le prenom c'est t2.text

pour etre plus precis

T1(nom du textbox)=le nom (qui se trouve a partir de la colonne B2 de la feuille 2 nomée Base de Données)

T2(nom du textbox)=le prenom (qui se trouve a partir de la colonne C2 de la feuille 2 nomée Base de Données)

merci

Bonsoir,

voici ce que je vous propose :

Private Sub CommandButton1_Click()
    ' on vérifie que le nom et prénom sont bien indiqués sinon on quitte
    If T1 = "" Or T2 = "" Then Exit Sub
    Dim c As Range, firstAddress As String, Doublon As Boolean
    ' avec la feuille Base de données et la colonne B de la ligne 2 à 10
    With Sheets("Base de Données").Range("B2:B10")
        ' on fait le rahcerche du nom avec FIND
        Set c = .Find(T1, LookIn:=xlValues)
        ' si le résultat de la recherche est différente de rien
        If Not c Is Nothing Then
            ' on met en mémoire l'adresse de la cellule trouvée
            firstAddress = c.Address
            ' on rentre dans une boucle indéfinie
            Do
                ' on rend la main à l'utilisateur
                ' permet de garder la main dans le cas d'une boucle infinie
                DoEvents
                ' on test le prénom
                If c.Offset(, 1) = T2 Then
                    ' si le prénom est identique au prénom de la cellule trouvée
                    ' on passe l'intérupteur doublon à vrai
                    Doublon = True
                Else
                    ' sinon on lance une nouvelle recherche du nom
                    Set c = .FindNext(c)
                End If
                ' s'il y a doublon on sort de la boucle
                If Doublon Then Exit Do
            ' on boucle tant que l'adresse de la cellule trouvée est différente de la première adresse trouvée
            ' si c'est le cas c'est que FIND revient en début "de boucle"
            Loop While c.Address <> firstAddress
        End If
    End With
    ' s'il y a doublon
    If Doublon Then
        ' on l'indique
        MsgBox ("Cet adhérent est existant")
        T1 = "": T2 = ""
    ' sinon on fait ce qu"il y a à faire avec ce nouveau membre
    Else
        ' je ne sais ce que vous voulez faire s'il est inconnue dans la base de données
        MsgBox ("Cet adhérent n'existe pas, vous pouvez continuer son inscription")
    End If
End Sub

avec le fichier :

Il y a certainement d'autres moyens, voir plus simple et rapide...

@ bientôt

LouReeD

je ne peut pas car j'ai dessus des données confidentielles

Alors je fais à ma sauce avec un fichier de mon cru...

9classeur1.xlsm (24.10 Ko)

Bye !

bonsoir a tous

merci pour votre aide tout fonctionne

amicalement & bonne fin de soirée

Bonsoir à tous ,

Un peu en retard...

Une autre macro :

Bien sûr c'est vous qui décidez des actions à mettre dans chaque cas du If ... End If final.

Private Sub CommandButton1_Click()
Dim der&, t, i&, n&, nom$, prenom$, nomprenom$
   nom = LCase(T1): prenom = LCase(T2)
   If Trim(nom) = "" Or Trim(prenom) = "" Then MsgBox "Le nom et le prénom sont obligatoires", vbCritical: Exit Sub
   With Sheets("Base de Données")
      der = .UsedRange.Row + .UsedRange.Rows.Count
      t = .Range("b1:c1").Resize(der)
      For i = 1 To UBound(t)
         If LCase(t(i, 1)) = nom Then If LCase(t(i, 2)) = prenom Then n = n + 1
      Next
      nomprenom = UCase(nom) & " " & Application.Proper(prenom)
      If n = 0 Then
         MsgBox nomprenom & vbLf & " n'existe pas ! ", vbExclamation
      ElseIf n = 1 Then
         MsgBox nomprenom & " existe " & vbLf & "et il est unique.", vbInformation
      Else
         MsgBox nomprenom & vbLf & " existe " & n & " fois !", vbExclamation
      End If
   End With
End Sub
Rechercher des sujets similaires à "recherche doublon"