Eviter les doublons lors de la saisie dans un formulaire

balou11 -  
michel_m Messages postés 16602 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
A voir également:

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
balou11 > cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729 > balou11
 
Poster ton classeur anonymisé sur ce site. Ensuite coller le lien dans ce post:

https://www.cjoint.com/

@+ Le Pivert
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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