Excel - Formulaire - Champs obligatoire
Résolu/FerméBamS_59 Messages postés 19 Date d'inscription lundi 15 novembre 2021 Statut Membre Dernière intervention 31 octobre 2022 - 31 oct. 2022 à 16:19
- Excel - Formulaire - Champs obligatoire
- Liste déroulante excel - Guide
- Si et excel - Guide
- Formulaire de réclamation facebook - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
5 réponses
Modifié le 29 oct. 2022 à 11:49
Bonjour,
En fait toute la partie où tu as les apostrophes, met la dans ton userform (en supposant que CommandButton_Valider_Click soit le bouton qui se trouve dans le userform)
Private Sub CommandButton_Valider_Click()
'Tester la saisie des champs dans le userform /formulaire
If Len(Me.ComboBox_site) = 0 Then
lblmessage = "Veuillez sélectionner le site concerné pour la création du dossier"
Me.ComboBox_site.SetFocus
ElseIf Len(Me.TextBox_Intitule) = 0 Then
lblmessage = "Veuillez saisir un titre pour la création du dossier"
Me.TextBox_Intitule.SetFocus
ElseIf Len(Me.TextBox_DateOuverture) = 0 Then
lblmessage = "Veuillez saisir la date d'ouverture du dossier sous le format XX/XX/XXXX"
Me.TextBox_DateOuverture.SetFocus
ElseIf Len(Me.TextBox_Objectif_Commentaire) = 0 Then
lblmessage = "Veuillez saisir la problématique observée et le ou les objectif(s) à atteindre pour clôturer le dossier"
Me.TextBox_Objectif_Commentaire.SetFocus
ElseIf Len(Me.ComboBox_SuiviPar) = 0 Then
lblmessage = "Veuillez sélectionner votre nom dans la liste"
Me.ComboBox_SuiviPar.SetFocus
ElseIf Len(Me.ComboBox_Importance) = 0 Then
lblmessage = "Veuillez sélectionner le niveau d'importance dans la liste"
Me.ComboBox_Importance.SetFocus
Else
Nouvelle_affaire
End If
End Sub
Et c'est seulement si tous tes champs obligatoires sont remplis que tu fais appel à la macro "Nouvelle_affaire" (dernier ELSE)
Tu ne devrais pas avoir d'erreur.
29 oct. 2022 à 12:47
Bonjour,
Outre la réponse de ptitpanda, j'aurais rajouté un "Exit Sub" sous chaque ***.SetFocus.
Comme ceci :
If Len(Me.ComboBox_site) = 0 Then
lblmessage = "Veuillez sélectionner le site concerné pour la création du dossier"
Me.ComboBox_site.SetFocus
Exit Sub
.....
Ainsi le déroulement se fige jusqu'au remplissage de l'objet
29 oct. 2022 à 12:54
Bonjour Cousinhub
Euhhh ce n'est pas nécessaire puisqu'après chaque ..setfocus il arrive direct sur le "End Sub"
++
31 oct. 2022 à 09:37
Hello cousinhub29,
J'ai réalisé plusieurs tests avec l'ajout de "Exit sub", mais je n'ai pas trouvé de différences dans le comportement du formulaire.
Merci pour ta participation, ça fait plaisir.
Bonne journée et un bon halloween.
29 oct. 2022 à 15:45
Re-,
Effectivement, mais j'ai l'habitude d'effectuer tous mes contrôles de cette manière, ainsi je suis sûr de l'arrêt de la procédure.
Sinon, si jamais le demandeur repasse par ici...
Je vois que tu utilises un Tableau Structuré [Tableau1]
Pourquoi ne profites-tu pas des possibilités offertes par ce TS, notamment pour le remplissage (plus besoin de End(xlUp), l'index que tu définis par I te donne déjà la ligne à remplir.
Il te reste juste à utiliser TS.DataBodyRange(I, "nom de colonne") pour ce faire.
@ te relire
Bon W-E
31 oct. 2022 à 10:12
Hello cousinhub29,
En fait je suis à l'origine de la création du tableau et du "cahier des charges" mais pas de toutes les VBA codées. Avec mes connaissances j'ai créé un outil pour aider l'équipe à communiquer et ne pas faire de doublon et éviter les oublis. Puis de fil en aiguille la nécessité de perfectionner le tableau c'est fait ressentir et c'est là que toi et d'autres contributeurs interviennent et me conseilles sur la création et la correction de VBA. Ca c'est pour le contexte.
Pour répondre à ta question, je navigue en fonction de vos préférences de codage :-) d'où ce choix et pas un autre ;-)
Encore merci pour ta contribution.
Ca aide beaucoup au quotidien.
Bonne journée et un bon halloween.
31 oct. 2022 à 10:23
Hello,
Une amélioration en appel une autre.
Dans la phase de contrôle du formulaire, j'aimerais qu'un format de date soit respectée avant de passer à l'étape suivante.
Ci-dessous un extrait de la phase de contrôle, j'ai remplacé :
Elseif Len(Me.TextBox_DateOuverture) = 0 Then
par
Elseif Len(Me.TextBox_DateOuverture) = DD/MM/YYYY Then
Et sans trop de surprise j'ai un message d'erreur !
Vous seriez me guider pour ajouter ce niveau de contrôle dans le formulaire ?
ElseIf Len(Me.TextBox_DateOuverture) = 0 Then
lblmessage = "Veuillez saisir la date d'ouverture du dossier sous le format XX/XX/XXXX"
Me.TextBox_DateOuverture.SetFocus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question31 oct. 2022 à 10:53
Hello BamS
Le mieux c'est de mettre ça:
If Not IsDate(Me.TextBox_DateOuverture) Then lblmessage = "Veuillez saisir la date d'ouverture du dossier sous le format XX/XX/XXXX" Me.TextBox_DateOuverture.SetFocus Else Me.TextBox_DateOuverture=CDate(Me.TextBox_DateOuverture) End If
Comme ça le prog vérifie tout de suite si c'est bien un format date qui est saisi et même si la personne a saisi 06/05/20 il le changera en 06/05/2020
Bonne journée
31 oct. 2022 à 12:03
Hello Ptitpanda,
J'ai intégré ta proposition. Résultat, le formulaire ne calcul plus le champ où la date n'est pas renseignée et passe direct au champs suivant. Je pense que je n'ai pas intégré ton codage au bon endroit. Ainsi il passe de "Intitulé" à "Objectif_Commentaire".
Tu trouveras ci-dessous ton précédent code, peux-tu m'indiquer où je dois intégrer ta dernière proposition ?
Private Sub CommandButton_Valider_Click()
'Tester la saisie des champs dans le userform /formulaire
If Len(Me.ComboBox_site) = 0 Then
lblmessage = "Veuillez sélectionner le site concerné pour la création du dossier."
Me.ComboBox_site.SetFocus
Exit Sub
ElseIf Len(Me.TextBox_Intitule) = 0 Then
lblmessage = "Veuillez saisir un titre pour la création du dossier. 3 mots maximum. Pas de caractères spéciaux (?./§,;:!@}]@^\`|[{#~=)_-(' &. "
Me.TextBox_Intitule.SetFocus
Exit Sub
ElseIf Len(Me.TextBox_DateOuverture) = 0 Then
lblmessage = "Veuillez saisir la date d'ouverture du dossier sous le format XX/XX/XXXX."
Me.TextBox_DateOuverture.SetFocus
Exit Sub
ElseIf Len(Me.TextBox_Objectif_Commentaire) = 0 Then
lblmessage = "Veuillez saisir la problématique observée et le ou les objectif(s) à atteindre pour clôturer le dossier."
Me.TextBox_Objectif_Commentaire.SetFocus
Exit Sub
ElseIf Len(Me.ComboBox_SuiviPar) = 0 Then
lblmessage = "Veuillez sélectionner votre nom dans la liste."
Me.ComboBox_SuiviPar.SetFocus
Exit Sub
ElseIf Len(Me.ComboBox_Importance) = 0 Then
lblmessage = "Veuillez sélectionner le niveau d'importance dans la liste."
Me.ComboBox_Importance.SetFocus
Exit Sub
Else
Nouvelle_affaire
End If
End Sub
31 oct. 2022 à 15:11
Erf, c'est vrai que je n'avais pris en compte le "ElseIf" donc tu peux l'intégrer de différentes manières mais pour garder la même structure que tu as déjà intègre le de cette façon:
Private Sub CommandButton_Valider_Click() 'Tester la saisie des champs dans le userform /formulaire If Len(Me.ComboBox_site) = 0 Then lblmessage = "Veuillez sélectionner le site concerné pour la création du dossier." Me.ComboBox_site.SetFocus Exit Sub ElseIf Len(Me.TextBox_Intitule) = 0 Then lblmessage = "Veuillez saisir un titre pour la création du dossier. 3 mots maximum. Pas de caractères spéciaux (?./§,;:!@}]@^\`|[{#~=)_-(' &. " Me.TextBox_Intitule.SetFocus Exit Sub ElseIf Not IsDate(Me.TextBox_DateOuverture) Then lblmessage = "Veuillez saisir la date d'ouverture du dossier sous le format XX/XX/XXXX" Me.TextBox_DateOuverture.SetFocus Exit Sub ElseIf Len(Me.TextBox_Objectif_Commentaire) = 0 Then lblmessage = "Veuillez saisir la problématique observée et le ou les objectif(s) à atteindre pour clôturer le dossier." Me.TextBox_Objectif_Commentaire.SetFocus Exit Sub ElseIf Len(Me.ComboBox_SuiviPar) = 0 Then lblmessage = "Veuillez sélectionner votre nom dans la liste." Me.ComboBox_SuiviPar.SetFocus Exit Sub ElseIf Len(Me.ComboBox_Importance) = 0 Then lblmessage = "Veuillez sélectionner le niveau d'importance dans la liste." Me.ComboBox_Importance.SetFocus Exit Sub Else Me.TextBox_DateOuverture=CDate(Me.TextBox_DateOuverture) 'car on sait maintenant que la date est bonne Nouvelle_affaire End If End Sub
Bonne journée
31 oct. 2022 à 16:19
Yessss ça fonctionne !
Ca fait plaisir.
Merci beaucoup.
Bonne fin de journée.
31 oct. 2022 à 09:32
Hello petitpanda,
Je viens de tester ta proposition, je confirme, plus d'erreur :-)
Ca fait plaisir. Trop fort, merci beaucoup.
Bonne journée et un bon halloween.