VBA - Formulaires MsgBox

Laurine16

XLDnaute Nouveau
Bonjour,

Je souhaite créer un formulaires avec différents champs dont certains sont obligatoires.
Si un champs obligatoire n'est pas rempli, lors de l'enregistrement, la macro affiche un message d'erreur.
Cpdt, je souhaite qu'une fois que tous les champs obligatoires sont remplis, en cliquant sur ENREGISTRER, un MsgBox s'affiche me demandant si je souhaite vraiment créer une nouvelle ligne dans mon fichier excel.

J'ai réussi à créer la première partie mais concernant la seconde, je n'arrive pas à faire apparaître le message même si tous les champs sont bien remplis. Qqn pourrait-il m'aider SVP. Le projet à rendre est assez urgent...

Code VBA:

If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox7 = "" Or TextBox8 = "" Or ComboBox1 = "" Or ComboBox2 = "" Or ComboBox6 = "" Then MsgBox "Merci de remplir les champs obligatoires", vbOKOnly + vbCritical, "ERREUR Enregistrement"
Exit Sub

Unload Me

If MsgBox("Voulez-vous enregistrer ce nouvel arrêt ?", vbYesNo + vbQuestion, "Demande d'Enregistrement") = vbYes Then
L = Sheets("Base").Range("a65536").End(xlUp).Row + 1 'Demande confirmation d'enregistrement

Cordialement
Laurine
 

Laurine16

XLDnaute Nouveau
Hum... Cela ne résolve tjrs pas mon pb.
Lorsque les champs sont tous remplis, que je clique sur ENREGISTRER, la seconde fenêtre avec la confirmation de l'enregistrement ne s'ouvre pas.
Voici mon fichier si cela peut vous aider. Par contre je n'ai pas encore insérer de bouton sur la feuille "BASE" pour accéder au formulaire
 

Pièces jointes

  • Fichier MAJ.xlsm
    103.6 KB · Affichages: 77

Laurine16

XLDnaute Nouveau
Mais si je l'enlève et que j'essaie d'enregistrer avec quelques données manquantes, la macro fait qu'elle enlève mon formulaire pour me demander si je souhaite enregistrer. Sachant que toutes mes données obligatoires ne sont pas renseignées, je suis obliger de tout recommencer ...
 

Dranreb

XLDnaute Barbatruc
Je n'ai pas dit de l'enlever mais de le soumettre à la même condition que le MsgBox, à mettre à la ligne derrière le Then, avec un End If à la fin.

Conseil: Donnez des noms mnémoniques à vos contrôles, commençant par 3 lettres: généralement les majuscules et la dernière lettre du nom de type du contrôle. CBxNatArrêt au lieu de ComboBox6, TBxDernJT au lieu de TextBox5, CBnEnreg au lieu de CommandButton1.
 

Dranreb

XLDnaute Barbatruc
VB:
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox7 = "" _
   Or TextBox8 = "" Or ComboBox1 = "" Or ComboBox2 = "" Or ComboBox6 = "" Then
   MsgBox "Merci de remplir les champs obligatoires", vbOKOnly + vbCritical,  Me.Caption
   Exit Sub: End If
Du moins c'était ce que vous vouliez faire. Personnellement je n'y adhère pas vraiment.

Pour ce qui est de mon conseil, je parlais naturellement de la première propriété (Name) dans la fenêtre de propriété, qui mérite pour chaque contrôle un nom clair, facilitant le développement et la mise au point en permettant de s'y retrouver plus facilement.

Je trouve aussi que le MultiPage n'apporte rien à part de la lourdeur d'utilisation.
 
Dernière édition:

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 644
dernier inscrit
MOLOKO67