Gestion de doublons

Bonjour,

J'ai établi un code pour empêcher de rentrer des doublons dans une banque de données via un userform.

Jusqu'ici il marche, néanmoins lorsque les valeurs ne sont exprimées qu'en chiffres, là le doublon n'est pas détecté et est quand même rentré dans la base de données.

Voici mon code :

Private Sub CommandButton1_Click()

Dim n As Integer
  For n = 2 To 400
  If TextBox1.Value = Sheets("Banque_de_données").Range("I" & n).Value Then
  MsgBox "Ce nom existe déjà dans la liste !"

    Unload Me
  AjoutCalBdd.Show

  Exit Sub
End If
  Next n

If Sheets("Banque_de_données").Range("I2") = "" Then
Sheets("Banque_de_données").Range("I2") = TextBox1.Value

Else
Sheets("Banque_de_données").ListObjects(4).ListRows.Add

dlt = Sheets("Banque_de_données").Range("I1048576").End(xlUp).Row
Sheets("Banque_de_données").Range("I" & dlt) = TextBox1.Value
End If

MsgBox ("Calibre rentré dans la BDD")

Suivi d'une fonction de tri croissant.

Merci pour votre aide, Tom

Bonjour TomRL et bienvenue sur le forum,

Avec le fichier se serait mieux qu'avec le code :p

Sinon voici une piste :

Sub Doublon()

    Dim Plage As Range
    Dim Cel As Range

    With Worksheets("Feuil1")

    'en colonne "A" à partir de A2
       Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))

    End With

    'boucle la plage de la feuille "Compte" et cherche chaque valeur
   'en correspondance exacte dans la plage de la feuille "Source"
   For Each Cel In Plage

        If Application.CountIf(Plage, Cel.Value) > 1 Then

            MsgBox "Ce nom existe déjà dans la liste!"

        End If

    Next Cel

End Sub

Merci pour votre réponse.

Je me pose la question suivante : Comment appliquer la fonction "CountIf" avec comme critère de recherche, dans la plage de cellules voulue, ce que nous entrons dans une TextBox d'un userform ?

Bonjour,

Il faudra remplacer plage par ton Range à toi, et remplacer Cel.value par la Textbox1.Value

J'ai trouvé une autre piste quant à mon cas, le fait de rentrer des chiffres n'est pas détecté comme doublon dans une bdd pour des valeurs égales. Il suffit de rajouter "CStr" dans la fonction d'équivalence. Dans mon cas :

If TextBox1.Value = CStr(Sheets("Banque_de_données").Range("I" & n).Value) Then
  MsgBox "Ce nom existe déjà dans la liste !"

Cordialement

Rechercher des sujets similaires à "gestion doublons"