VBA Excel : Pb Gestionnaire d'erreur

Résolu/Fermé
sifusalade Messages postés 135 Date d'inscription samedi 21 janvier 2012 Statut Membre Dernière intervention 16 juillet 2021 - 8 août 2012 à 12:42
sifusalade Messages postés 135 Date d'inscription samedi 21 janvier 2012 Statut Membre Dernière intervention 16 juillet 2021 - 8 août 2012 à 15:26
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...

A voir également:

2 réponses

chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
8 août 2012 à 13:43
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.
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
8 août 2012 à 13:53
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.
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
8 août 2012 à 13:54
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
0
sifusalade Messages postés 135 Date d'inscription samedi 21 janvier 2012 Statut Membre Dernière intervention 16 juillet 2021 7
8 août 2012 à 15:26
.... 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.
0