Eviter les doublons lors de la saisie dans un formulaire

balou11 -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour a tous,

Je vous expose mon problème (j'ai essayé de trouver la solution sur le net, mais en vain)
Voila j'ai une BD sur excel, en colonne B le nom, en colonne C le prénom, et en colonne A j'ai une formule qui concatène les 2.

Exemple : Je saisie en B: DUPONT
en C: ALAIN
En A : DUPONT ALAIN (cela se renseigne seul)

Mais voila, je remplie cette base via un formulaire (qui fonctionne très bien), par contre j'aimerais via VBA, interdire la saisie des doublons il deviendrait impossible de re-saisir un DUPONT ALAIN.
Il faudrait que ce code d'interdiction s’exécute après avoir saisie ALAIN, car l'utilisateur devra obligatoirement saisir le nom en premier.

Par avance je vous remercie

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    a mettre dans le module de la feuille:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Application.WorksheetFunction.CountIf(Range("B:B"), Target.Value) > 1 Then
    MsgBox "Nom déja employé"
    Target.Value = ""
    Target.Select
    End If
    End Sub
    

    0
  2. balou11
     
    Tout d'abord merci pour la réponse Monsieur "le pivert" !

    Mais cela ne fonctionne pas, je peux très bien créer un DUPONT PASCALE, il faudrait que le code puisse aller voir dans la coloonne (A) qui concatène le nom et le prénom (DUPONT ALAIN).
    Il faudrait que l'utilisateur puisse dans le champ "nom" renseigner "DUPONT".
    Il faudrait qu'ensuite, il puisse renseigner le prénom, mais que si dans la colonne A qui concatène les deux (non et prénom) un message s'affiche !
    Merci encore a tous de prendre de votre temps
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Rectification pour la colonne A contenant prénom et nom

      A mettre dans l'userForm:

      Option Explicit
      Private Sub CommandButton1_Click()
      Dim DerniereLigneUtilisee As Long
      DerniereLigneUtilisee = Range("A" & Rows.Count).End(xlUp).Row + 1
      Range("C" & DerniereLigneUtilisee).Value = TextBox1 'prénom
      Range("B" & DerniereLigneUtilisee).Value = TextBox2 'nom
      Range("A" & DerniereLigneUtilisee).Value = Range("C" & DerniereLigneUtilisee).Value & " " & Range("B" & DerniereLigneUtilisee).Value
      End Sub
      
      


      a mettre dans la feuille concernée:

      Option Explicit
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Application.WorksheetFunction.CountIf(Range("A:A"), Target.Value) > 1 Then
      MsgBox "Nom déja employé"
      Target.Value = ""
      Range("B" & Target.Row) = ""
      Range("C" & Target.Row) = ""
      Target.Select
      End If
      End Sub
      


      Voilà
      0
      1. balou11 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Monsieur "le Pivert "

        non ce n'ai toujours pas mieux, j'ai essayé avec d'autres modifications, mais cela ne fonctionne pas, je ne peux même plus créer des noms inconnu dans la base ! ! !

        J'avoue que ce n'est pas simple,
        Merci pour vos réponses
        0
      2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > balou11
         
        Poster ton classeur anonymisé sur ce site. Ensuite coller le lien dans ce post:

        https://www.cjoint.com/

        @+ Le Pivert
        0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Pour obliger à un ordre de saisie (prenom puis nom ou l'inverse !..)

    utilise la propriété des textbox: enabled
    dans l'aide Vba


    tantque "prénom" n'est pas renseigné, tu ne peux pas écrire dans "nom"
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Si tu n'as pas l'habitude de manipuler des formulaires (userform), tu as ce topo très détaillé de SilKyroad, ancien MVP Microsoft
      https://excel.developpez.com/cours/?page=prog#userform
      0