Comment interdire les doublons (formulaire)

BOnjour à tous.

Dans le classeur ci-joint, est-il possible d'interdire les doublons seulement pour la colonne E

Il peux m'arriver d'avoir pour la meme société un contact different.

78classeur.xlsm (57.84 Ko)

(Re)Bonjour pouns94,

Est-il nécessaire d'interdire les doublons, ou une mise en forme rouge peut suffire?

Grâce à une formule de mise en forme conditionnelle, tu pourrais mettre en fond rouge les doublons (par exemple).

Sinon en VBA c'est très facil.

For numLigne = 2 to Cells(rows.count,"E").End(xlUp).Row
if numSaisie = Cells(numLigne,"E") then
     msgbox "Numéro en double"
     Exit sub
Next numLigne

'Ecrire le contact

Je ne vais pas me risquer à éditer ton code je comprend moyennement comment il fonctionne ^^

l'ideale serais que j'ai un message qui me dise par exemple

"contact déjà inscrit"

je vais tester ton code mais à tu une idée d'où le placer?

Private Sub CommandButton1_Click()
    Set cell = Range("A3:A" & Application.Max(3, Range("A" & Rows.Count).End(xlUp).Row)) _
        .Find(CmbNom, lookat:=xlWhole)

    lgn = Application.Max(3, Range("A" & Rows.Count).End(xlUp)(2).Row)

    For j = 1 To 7
        Cells(lgn, j) = Controls("textBox" & j)
    Next j

    Range("A3:G" & lgn).Sort key1:=Range("A3"), order1:=xlAscending, Header:=xlNo

    MsgBox "Les données de " & CmbNom & " ont été prises en compte.", 64
    Unload Me
End Sub

Une idée de où je doit placer le code?

Private Sub CommandButton1_Click()
    Dim numLigne As Integer
    Set cell = Range("A3:A" & Application.Max(3, Range("A" & Rows.Count).End(xlUp).Row)) _
        .Find(CmbNom, lookat:=xlWhole)

    lgn = Application.Max(3, Range("A" & Rows.Count).End(xlUp)(2).Row)

    For numLigne = 2 To lgn
        If TextBox5.Value = Cells(numLigne, "E").Value And TextBox5.Value <> "" Then
            MsgBox "Ce numéro a déjà été saisi"
            Exit Sub
        End If
    Next numLigne

    For j = 1 To 7
        Cells(lgn, j) = Controls("textBox" & j)
    Next j

    Range("A3:G" & lgn).Sort key1:=Range("A3"), order1:=xlAscending, Header:=xlNo

    MsgBox "Les données de " & CmbNom & " ont été prises en compte.", 64
    Unload Me
End Sub

Voilà. Si le numéro est déjà présent, tu auras un message d'erreur. A toi d'adapter si tu veux d'autres critères pour les doublons

Voici mon code reel, car j'ai du mettre mon formulaire sur une autre feuille, du coup, ta proposition ne fonctionne pas.

private Sub CommandButton1_Click()
  With Ws
    Set cell = .Range("A3:A" & Application.Max(3, .Range("A" & Rows.Count).End(xlUp).Row)) _
               .Find(CmbNom, lookat:=xlWhole)

    lgn = Application.Max(3, .Range("A" & Rows.Count).End(xlUp)(2).Row)

    For j = 1 To 7
      .Cells(lgn, j) = Controls("textBox" & j)
    Next j

    .Range("A3:G" & lgn).Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlNo
  End With

  MsgBox "Les données de " & CmbNom & " ont été prises en compte.", 64
  Unload Me
End Sub

quelqu'un peut m'aider svp?

Bonjour

Intègre le code de d3d9x dans ta macro

Private Sub CommandButton1_Click()
Dim numLigne As Integer
  With Ws
    Set cell = .Range("A3:A" & Application.Max(3, .Range("A" & Rows.Count).End(xlUp).Row)) _
               .Find(CmbNom, lookat:=xlWhole)

    lgn = Application.Max(3, .Range("A" & Rows.Count).End(xlUp)(2).Row)

    For numLigne = 2 To lgn
      If TextBox5.Value = .Cells(numLigne, "E").Value And TextBox5.Value <> "" Then
        MsgBox "Ce numéro a déjà été saisi"
        Exit Sub
      End If
    Next numLigne

    For j = 1 To 7
      .Cells(lgn, j) = Controls("textBox" & j)
    Next j

    .Range("A3:G" & lgn).Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlNo
  End With

  MsgBox "Les données de " & CmbNom & " ont été prises en compte.", 64
  Unload Me
End Sub

parfait ca fonctionne nickel merci

Rechercher des sujets similaires à "comment interdire doublons formulaire"