Vérifier remplissage complet formulaire (Userform)

Bonjour,

Je suis actuellement en fin de stage de DUT, et ma mission était de coder un configurateur de machine afin de sélectionner les bons composants, en vue de la construire conformément à ce que demande le client.

L'utilisateur possède donc le compte rendu de réunion d'affaire qui contient toutes les caractéristiques de la machine, lance le configurateur et remplit les choix.

Maintenant que le contexte est posé, je vous expose mon questionnement:

Pour chaque option, l'utilisateur est obligé de sélectionner un optionbutton par catégorie. Je les ai donc regroupés par Groupname.

Lorsque celui-ci a fini de rentrer ses choix, il clique sur un bouton "finaliser" et ma macro se charge de vérifier que tout le formulaire est rempli (qu'un choix a été indiqué pour chaque catégorie). Pour l'instant, ce système est peu robuste et oblige le développeur à rajouter des lignes si dans une catégorie on vient rajouter une option:

Voici un exemple de ce que j'ai écrit:

'Couleur de la machine
'Optionbutton1 = Rouge, Optionbutton1 = Vert, Optionbutton1 = Bleu
dim erreur as Bool

'Si l'utilisateur n'a séléctionné ni rouge, ni vert, ni bleu
if Optionbutton1.value=false and Optionbutton2.value=false and Optionbutton3.value=false Then

'Alors il y a erreur
erreur=True
end if

Si à l'avenir, la société fabrique des machines Magenta, Jaunes et Cyan, alors je devrai rajouter

Optionbutton4.value=false and Optionbutton5.value=false and Optionbutton6.value=false Then ...

Je me demandais donc si il n'y avait pas moyen d'écrire en VBA:

→ Pour chaque GroupName → Vérifie qu'il y a 1 bouton vrai → sinon il y a une erreur.

Malheureusement, je ne peux pas vous transmettre le fichier excel, car il contient sûrement des données confidentielles, mais je peux vous transmettre un aperçu de mon userform:

image

J'ai cherché sur pleeeins de forums mais j'ai pas trouvé de solution à ça, mais ça me semblerait bizzare qu'il n'y en ait pas !

Merci beaucoup de l'attention que vous porterez à ma question

Respectueusment,

Marc.

Bonjour,

J'expose ci-dessous une méthode générique...

La difficulté est que vous utilisez les Frames de manière décorative plus qu'utilitaire...

Servez vous en pour leur finalité première : Faire des groupes d'option et remplacez les vôtres par des Label ou des images vides.

A la limite vous pouvez laisser les anciennes Frames, mais ce n'est pas une bonne habitude à prendre...

Ensuite utilisez les propriétés Tag de vos objets pour procéder comme dans cette démo :

13saisieoblig.xlsm (22.33 Ko)

Les contrôles obligatoires et les Frames dont les OptionsButton sont obligatoires ont leur propriété Tag fixées à "fill"

A+

Merci beaucoup, en effet j'utiliserai mieux les frames à l'avenir !

Dernière chose: Pourriez vous apporter quelques commentaires au code que vous m'avez proposé ? (surtout ces deux fonctions ci-dessous)

Private Function YVerif() As Boolean
Dim Ctrl As Control
   For Each Ctrl In Me.Controls
      If TypeOf Ctrl Is MSForms.TextBox And Ctrl.Tag = "fill" Then
         YVerif = False
         Ctrl.SetFocus
             MsgBox "Saisie invalide !"
         Exit Function
      End If
      If TypeOf Ctrl Is MSForms.Frame And Ctrl.Tag = "fill" Then
         YVerif = False
         MsgBox "Saisie obligatoire !"
         Exit Function
      End If
    Next
    YVerif = True
End Function

'-------------------------------

Private Sub OptionButton1_Click()
   Frame1.Tag = "FillOk"
End Sub

Encore merci,

Marc

Bonjour,

pourquoi ne pas utiliser des listbox ?
Il aura tous les noms sous les yeux de la même façon, et tu n'auras qu'à compléter les listes qui serviront à les alimenter sur une feuille de paramétrage.
Et plus de limitation au nombre d'options, sans besoin de redessiner le userform avec l'ascenseur qui apparaitra.
eric

Bonjour…

Il vaut mieux prévenir que guérir, non ?

Ici, ne sortir que si le texte n’est pas vide ou l’option est sélectionnée ,

et comme Eric (salut) je préfère les fausses cases d’option ! Cela doit te rappeler quelque chose Galopin non ?

exit

Nota : j'indique, presqu'à chaque fois, que la fenêtre des propriétés des objets nous permet d'éviter des longues lignes de code pour des données constantes.

Rechercher des sujets similaires à "verifier remplissage complet formulaire userform"