Demander la saisie du Nom avant le Prenom

today

XLDnaute Nouveau
Bonjour,
Je suis vraiment débutant. Si vous pouviez m'aider à réaliser cette commande.

J'ai défini Tbnom & TBprenom avec avec "Insertion nom >Définir" sous Excel

Je recopié ce qui suis dans un module VB mais cela marche pas

Private Sub Tbprénom_Enter()
If Tbnom.Value = '' Then
MsgBox 'vous devez saisir un nom avant de saisir le prénom, merci !'
Tbnom.SetFocus
End If

Ici, il est demandé de saisir obligatoirement le nom avant le prénom.

Ou sinon autre formule pour rendre obligatoire la saisie du champ nom.

Merci de votre aide
 

Cousinhub

XLDnaute Barbatruc
Re : Demander la saisie du Nom avant le Prenom

Bonsoir, tu fais référence à une Textbox, ListBox, ComboBox??

Private Sub TextBox2_Enter()
If TextBox1.Value = "" Then MsgBox "remplir tb1": TextBox2.Value = "": TextBox1.SetFocus
End Sub

Ce langage est pour une Box issue d'un UserForm
Pour une cellule dans ton fichier, il faut un autre langage, et intercepter les évènements de la feuille
 

ya_v_ka

XLDnaute Impliqué
Re : Demander la saisie du Nom avant le Prenom

Hello,
je ne sais pas pour le reste mais il me semble déjà que ca irait mieux comme ça :

Private Sub Tbprénom_Enter()
If Tbnom.Value = "" Then
MsgBox "vous devez saisir un nom avant de saisir le prénom, merci !"
Tbnom.SetFocus
End If

sinon peut-être avec le contrôle IS EMPTY ... sans avoir testé...

Ya'v
 

Cousinhub

XLDnaute Barbatruc
Re : Demander la saisie du Nom avant le Prenom

Regarde:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 2 And Target.Count = 1 Then
If Target.Offset(0, -1) = "" Then MsgBox "Veuillez d'abord remplir le nom": Target = ""
End If
Application.EnableEvents = True
End Sub

Fais très attention, la commande Application.EnableEvents = False est très dangereuse, si tu as un bug en milieu de macro, ne pas oublier de relancer Application.EnableEvents = True, ceci pour intercepter tous les évènements qui se déroulent dans Excel
 

Pièces jointes

  • today.xls
    20 KB · Affichages: 72
  • today.xls
    20 KB · Affichages: 75
  • today.xls
    20 KB · Affichages: 73
Dernière édition:

today

XLDnaute Nouveau
Re : Demander la saisie du Nom avant le Prenom

Bonjour à tous et merci pour votre aide.
Je vais essayer de répondre à chacun car mes connaissances sont vraiment limités

bhbh : Il s’agit juste d’afficher une msgbox "Vous devez saisir un nom avant de saisir le prénom, merci !" si le nom est tapé directement dans la cellule avant le prénom.
Merci pour l’idée du langage pour intercepter les évènements.

ya v_ka : J’ai placé ces instruction sous VB onglet Général mais cela fonctionne pas.

Private Sub Tbprenom_Enter()
If Tbnom.Value = "" Then
MsgBox "vous devez saisir un nom avant de saisir le prénom, merci !"
Tbnom.SetFocus
End If
End Sub

bhbh : ton fichier convient bien, mais je n’arrive pas à remplacer la ligne 1 par la ligne 6 pour essai (car dons mon fichier la cellule pour saisir le nom s’y trouve )
Comment faire ?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Demander la saisie du Nom avant le Prenom

Bonjour le fil, bonjour le forum,

Today je ne comprends pas ton problème de ligne puisque le code de bhbh fonctionne sur toutes les lignes... Je te propose une solution basée sur la sienne mais où Application.Enabled est remplacé par une variable boléenne.

Code:
Private test As Boolean 'déclare la variable test
Private Sub Worksheet_Change(ByVal Target As Range)
If test = True Then test = False: Exit Sub 'si test est vrai, test devient faux et sort de la procédure
'condition : si la modification à lieu dans la colonne B et sur une seule cellule
If Target.Column = 2 And Target.Count = 1 Then
 
    If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure
 
    test = True 'définit la variable test
 
    'si la cellule à gauche de la cellule éditée est vide, message
    If Target.Offset(0, -1) = "" Then MsgBox "Veuillez d'abord remplir le nom."
 
    Target = "" 'annule l'édition
    Target.Offset(0, -1).Select 'place le curseur dans la cellule de gauche
End If 'fin de la condition
End Sub
 

today

XLDnaute Nouveau
Re : Demander la saisie du Nom avant le Prenom

Salut a tous,
Je sèche !!!
Voilà, cela fonctionne avec les modifs que tu reconnaitras.

Private Sub Worksheet_Change(ByVal Target As Range)
'condition : si la modification à lieu dans la colonne B et sur une seule cellule
If Target.Column = 2 And Target.Count = 1 Then

'si la cellule à gauche de la cellule éditée est vide, message
If Target.Offset(0, -1) = "" Then MsgBox "Veuillez d'abord remplir le nom."

Target.Offset(0, -1).Select 'place le curseur dans la cellule de gauche
End If 'fin de la condition
End Sub

Mais j'ai un problème !
comment placer le curseur a droite de la cellule éditer si la cellule de gauche est non vide

Si on saisie cellule colonne B il demande de valider la cellule colonne A et la tabulation se fait manuellement vers la droite OK
Mais si on saisie la cellule colonne A puis cellule colonne B dans l'ordre logique, la curseur se replace en colonne A au lieu de la colonne C

Je sais que j'ai demandé la placement du curseur à gauche , mais je voudrais sortir de cette condition si la colonne A est non vide et bien sur sans effacer le contenu de B.

Merci ++
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Demander la saisie du Nom avant le Prenom

bonjour le fil, bonjour le forum,

Oui c'est vrai que ce n'était pas logique... Regarde ci cela te convient :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'condition : si la modification à lieu dans la colonne B et sur une seule cellule
If Target.Column = 2 And Target.Count = 1 Then
'si la cellule à gauche de la cellule éditée est vide, message
If Target.Offset(0, -1) = "" Then
    MsgBox "Veuillez d'abord remplir le nom."
    Target.Offset(0, -1).Select 'place le curseur dans la cellule de gauche
End If
End If 'fin de la condition
End Sub
 

Statistiques des forums

Discussions
312 679
Messages
2 090 851
Membres
104 677
dernier inscrit
soufiane12