VBA Excel : Pb Gestionnaire d'erreur
Résolu
sifusalade
Messages postés
134
Date d'inscription
Statut
Membre
Dernière intervention
-
sifusalade Messages postés 134 Date d'inscription Statut Membre Dernière intervention -
sifusalade Messages postés 134 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je pose beaucoup de questions ces jours-ci désolé :/
Chaque problème réglé m'en donne un autre lol mais bon, disons que ce sont les joies de la programmation lol
Je suis confronté à un problème de gestionnaire d'erreur.
Je vous joint le fichier pour que que vous y voyez plus clair et je vous explique
https://www.cjoint.com/?BHimBGL8mxh
Je veux rendre obligatoire la saisie des champs "numéro, timbre, objet, destinataire, et date d'envoi"
Si en remplissant le formulaire il manque un ou plusieurs de ces 5 éléments, un message bloquant doit apparaitre en disant quel éléments doivent encore être rempli.
Le problème c'est que, le message apparait bien mais les données sont quand même insérées dans la feuille au lieu de bloquer tant que ces 5 éléments obligatoires ne sont pas remplis...
J'ai placé le gestionnaire d'erreur à la fin car si je place le gestionnaire d'erreur au début, j'ai un message d'erreur parlant de lecture seule... Après 1h de recherches sur le net je trouve pas (peut être ai-je mal cherché...) aussi je me retourne vers vous....
En vous remerciant vraiment par avance...
Je pose beaucoup de questions ces jours-ci désolé :/
Chaque problème réglé m'en donne un autre lol mais bon, disons que ce sont les joies de la programmation lol
Je suis confronté à un problème de gestionnaire d'erreur.
Je vous joint le fichier pour que que vous y voyez plus clair et je vous explique
https://www.cjoint.com/?BHimBGL8mxh
Je veux rendre obligatoire la saisie des champs "numéro, timbre, objet, destinataire, et date d'envoi"
Si en remplissant le formulaire il manque un ou plusieurs de ces 5 éléments, un message bloquant doit apparaitre en disant quel éléments doivent encore être rempli.
Le problème c'est que, le message apparait bien mais les données sont quand même insérées dans la feuille au lieu de bloquer tant que ces 5 éléments obligatoires ne sont pas remplis...
J'ai placé le gestionnaire d'erreur à la fin car si je place le gestionnaire d'erreur au début, j'ai un message d'erreur parlant de lecture seule... Après 1h de recherches sur le net je trouve pas (peut être ai-je mal cherché...) aussi je me retourne vers vous....
En vous remerciant vraiment par avance...
A voir également:
- VBA Excel : Pb Gestionnaire d'erreur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonjour,
vu la construction de ta fonction, il est tout à fait normal que ton gestionnaire d'erreur apparaisse après le remplissage des données, vu que ta macro est constituée pour insérer les données avant.
De plus, tu fais plein de Select, de Set qui ralentisse ta macro. Tu peux faire ça simplement, sans sélectionner.
Je regarde ça pour améliorer ton code.
Cordialement.
vu la construction de ta fonction, il est tout à fait normal que ton gestionnaire d'erreur apparaisse après le remplissage des données, vu que ta macro est constituée pour insérer les données avant.
De plus, tu fais plein de Select, de Set qui ralentisse ta macro. Tu peux faire ça simplement, sans sélectionner.
Je regarde ça pour améliorer ton code.
Cordialement.
Re,
ton problème de gestionnaire est résolu :
1°) mets-le au début de ta routine ajout, et remplace les
CelluleNum.Value, CelluleObjet.Value etc... par leur équivalent dans l'userform, soit :
Userform1.TexteNumero.Value
UserForm1.TexteObjet.Value
et ainsi de suite.
De ce fait, ton gestionnaire d'erreur se déclenchera AVANT le remplissage de l'onglet, et se basera sur les valeurs de ton formulaires, pas de celles de la feuille.
Pour l'optimisation de code, c'est à voir plus tard :-D
Cordialement.
ton problème de gestionnaire est résolu :
1°) mets-le au début de ta routine ajout, et remplace les
CelluleNum.Value, CelluleObjet.Value etc... par leur équivalent dans l'userform, soit :
Userform1.TexteNumero.Value
UserForm1.TexteObjet.Value
et ainsi de suite.
De ce fait, ton gestionnaire d'erreur se déclenchera AVANT le remplissage de l'onglet, et se basera sur les valeurs de ton formulaires, pas de celles de la feuille.
Pour l'optimisation de code, c'est à voir plus tard :-D
Cordialement.
Ce qui donne pour le gestionnaire :
'gestionnaire d'erreur If UserForm1.TexteNumero.Value = "" Then MonMessage = MonMessage & " - Un numéro" & Chr(13) End If If UserForm1.TexteTimbre.Value = "" Then MonMessage = MonMessage & " - Un timbre" & Chr(13) End If If UserForm1.TexteObjet.Value = "" Then MonMessage = MonMessage & " - Un objet" & Chr(13) End If If UserForm1.ListeDestinataire.Value = "" Then MonMessage = MonMessage & " - Un destinataire" & Chr(13) End If If UserForm1.TexteDate.Value = "" Then MonMessage = MonMessage & " - Une date d'envoi" & Chr(13) End If If MonMessage <> "" Then MsgBox "ATTENTION" & Chr(13) & "Vous devez saisir" & Chr(13) & MonMessage & "pour continuer", vbCritical Exit Sub End If
.... et se basera sur les valeurs de ton formulaires, pas de celles de la feuille.
Alors chapeau, quand je pense que c'est aussi con que ça... (j'ai honte lol)
En tout cas merci beaucoup c'est super sympa. Et en plus, de me résoudre mon problème uu m'as expliqué. Merci beaucoup, je confirme, ça marche.
Alors chapeau, quand je pense que c'est aussi con que ça... (j'ai honte lol)
En tout cas merci beaucoup c'est super sympa. Et en plus, de me résoudre mon problème uu m'as expliqué. Merci beaucoup, je confirme, ça marche.