[VBA] gestion des doublons

phileas1412 Messages postés 7 Statut Membre -  
JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je saisi des données par l'intermédiaire d'une useform (via textbox) qui remplit la colonne ("A:A") d'une feuille Excel. J'aimerai vérifier si dans cette colonne, la valeur du textbox n'existe pas déjà, auquel cas il renvoi un message d'erreur.

Je bloque un peu la dessus pour continuer ma programmation. Si vous pouvez me donner un coup de main, ce serait super...

Merci d'avance
Phileas1412
Configuration: Office 2000

2 réponses

  1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    hello,

    je pense que je ferais quelquechose comme ça, (en ayant un bouton appelé cmdOK sur le formulaire pour valider la valeur du TextBox1) :

    Private Sub cmdOK_Click()
        Dim varDoublon As Variant
        
        On Error Resume Next
        Columns(1).Find(TextBox1.Value, , xlValues, xlWhole).Select
        If Err.Number Then
            Range("A65536").End(xlUp).Offset(1, 0).Value = TextBox1.Value
        Else
            MsgBox "Cette valeur existe déjà", vbExclamation, ThisWorkbook.Name
        End If
    End Sub
    

    2
    1. phileas1412 Messages postés 7 Statut Membre
       
      Bonjour,

      Merci beaucoup Kobaya, c'est exactement ça que je cherchais. Je vais pouvoir avancer.

      Au plaisir d'une autre ligne de programmation....

      Phileas1412
      0
  2. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
     
    bonsoir,

    en torturant un peu le code de Kobaya, et si tu veux faire plus compliqué :

    Private Sub cmdOK_Click()
        If Evaluate("=SUM(IF(A1:A" & Range("A65536").End(xlUp).Row & "=""" & TextBox1.Value & """,1,0))") = 0 Then
            Range("A65536").End(xlUp).Offset(1, 0).Value = TextBox1.Value
        Else
            MsgBox "Cette valeur existe déjà", vbExclamation, ThisWorkbook.Name
        End If
    End Sub


    je n'ai pas testé sur des dates.

    A+
    2