Soucis de code erreur à la fermeture volontaire de l'userform
Résolu/Fermé
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
-
Modifié par gilles52300 le 19/05/2013 à 19:36
gilles52300 Messages postés 34 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018 - 20 mai 2013 à 15:37
gilles52300 Messages postés 34 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018 - 20 mai 2013 à 15:37
A voir également:
- Soucis de code erreur à la fermeture volontaire de l'userform
- Erreur 0x80070643 - Accueil - Windows
- Code ascii de a - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
10 réponses
Mike-31
Messages postés
18356
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
31 janvier 2025
5 112
19 mai 2013 à 19:57
19 mai 2013 à 19:57
Salut,
Il serait intéressant d'avoir ton fichier sans note confidentielle que tu peux joindre avec ce lien
https://www.cjoint.com/
Il serait intéressant d'avoir ton fichier sans note confidentielle que tu peux joindre avec ce lien
https://www.cjoint.com/
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
Modifié par gilles52300 le 19/05/2013 à 20:17
Modifié par gilles52300 le 19/05/2013 à 20:17
Bonsoir Mike,
Merci de t'intéresser à mon cas.
voici le lien du fichier. https://www.cjoint.com/?0EtumVrzDcf
c'est avec l'userform3 et le module 4 que j'ai ce problème.
il est existant avec l'userform " aecraser" et le module 1 qui le concerne.
toutes les données sur le fichiers sont des données test.
merci encore.
cordialement
Merci de t'intéresser à mon cas.
voici le lien du fichier. https://www.cjoint.com/?0EtumVrzDcf
c'est avec l'userform3 et le module 4 que j'ai ce problème.
il est existant avec l'userform " aecraser" et le module 1 qui le concerne.
toutes les données sur le fichiers sont des données test.
merci encore.
cordialement
Mike-31
Messages postés
18356
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
31 janvier 2025
5 112
Modifié par Mike-31 le 19/05/2013 à 21:19
Modifié par Mike-31 le 19/05/2013 à 21:19
Re,
il faudrait que je comprenne ce que tu cherches faire ce qui risque être assez long vu l'importance du code, mais si tu sécurises cette ligne
DateReception = UserForm3.TextBox1.Text
l'erreur se retrouve également sur la ligne suivant
en attendant que je trouve mieux, essaye de sécuriser ces deux lignes comme ceci
If TextBox1 <> "" Then DateReception = UserForm3.TextBox1.Text
If TextBox2 <> "" Then DatePrelevement = UserForm3.TextBox2.Text
ou mieux sans toucher aux lignes ajoute simplement une gestion d'erreur après l'ouverture de l'userform3
UserForm3.Show
On Error Resume Next
teste le fichier et tu reviens me dire
tu as le même problème avec ce code,
Sub ecrasement()
sur lequel je te conseille d'ajouter la même gestion d'erreur après l'ouverture de l'userform
aecraser.Show
On Error Resume Next
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
il faudrait que je comprenne ce que tu cherches faire ce qui risque être assez long vu l'importance du code, mais si tu sécurises cette ligne
DateReception = UserForm3.TextBox1.Text
l'erreur se retrouve également sur la ligne suivant
en attendant que je trouve mieux, essaye de sécuriser ces deux lignes comme ceci
If TextBox1 <> "" Then DateReception = UserForm3.TextBox1.Text
If TextBox2 <> "" Then DatePrelevement = UserForm3.TextBox2.Text
ou mieux sans toucher aux lignes ajoute simplement une gestion d'erreur après l'ouverture de l'userform3
UserForm3.Show
On Error Resume Next
teste le fichier et tu reviens me dire
tu as le même problème avec ce code,
Sub ecrasement()
sur lequel je te conseille d'ajouter la même gestion d'erreur après l'ouverture de l'userform
aecraser.Show
On Error Resume Next
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 251
19 mai 2013 à 21:23
19 mai 2013 à 21:23
Bonjour,
et pourquoi n'utilises-tu pas UserForm3.hide ?
eric
et pourquoi n'utilises-tu pas UserForm3.hide ?
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
19 mai 2013 à 21:42
19 mai 2013 à 21:42
Merci Mike pour ton aide.
On Error Resume Next
fonctionne parfaitement et je n'ai plus ce message d'erreur.
En ce qui concerne la longueur du code, c'est du trompe l'oeil car il y a de la répétition. juste 4 fois le premier passage est répété avec seulement 2 lignes qui changent à chaque fois. et ensuite c'est l'ensemble qui est répété 3 fois.
je suis en train de regarder pour le simplifier avec quelqu'un.
Merci bien pour la solution. J'ai testé plein de truc mais pas ça!
pourquoi faire simple quand on veut essayer de faire compliqué!
Bonjour Eric,
userform3.hide je l'utilise losque mon userform est rempli.
et en plus il me fait quand même l'erreur.
là c'est dans le cas ou je veux le fermer sans le remplir. Oui c'est idiot, pourquoi l'ouvrir?
avec mac, j'ai pas la possibilité ou pas encore trouver la possibilité de mettre l'userform en mode 'non modale' aussi si j'ai pas pris toutes mes infos, je suis obligé de le fermer sans l'avoir rempli.
On Error Resume Next
fonctionne parfaitement et je n'ai plus ce message d'erreur.
En ce qui concerne la longueur du code, c'est du trompe l'oeil car il y a de la répétition. juste 4 fois le premier passage est répété avec seulement 2 lignes qui changent à chaque fois. et ensuite c'est l'ensemble qui est répété 3 fois.
je suis en train de regarder pour le simplifier avec quelqu'un.
Merci bien pour la solution. J'ai testé plein de truc mais pas ça!
pourquoi faire simple quand on veut essayer de faire compliqué!
Bonjour Eric,
userform3.hide je l'utilise losque mon userform est rempli.
et en plus il me fait quand même l'erreur.
là c'est dans le cas ou je veux le fermer sans le remplir. Oui c'est idiot, pourquoi l'ouvrir?
avec mac, j'ai pas la possibilité ou pas encore trouver la possibilité de mettre l'userform en mode 'non modale' aussi si j'ai pas pris toutes mes infos, je suis obligé de le fermer sans l'avoir rempli.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 251
19 mai 2013 à 21:51
19 mai 2013 à 21:51
et en plus il me fait quand même l'erreur.
Ca ne faisait plus l'erreur chez moi sans rien toucher d'autre, c'est pour ça...
Ce qui n'est pas illogique puisqu'il se contente de le masquer.
eric
Ca ne faisait plus l'erreur chez moi sans rien toucher d'autre, c'est pour ça...
Ce qui n'est pas illogique puisqu'il se contente de le masquer.
eric
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
19 mai 2013 à 22:07
19 mai 2013 à 22:07
Si j'arrivais à comprendre.... tout a l'heure j'avais un code sans erreur. je le copie et le met à la suite sans rien changer hormis les ranges..... et là il ne fonctionnait plus.
Quand je vois comment je me casse la tête dès fois pour une ligne de code....
Mais je reconnais que ta solution aurait pu m'arranger.
Quand je vois comment je me casse la tête dès fois pour une ligne de code....
Mais je reconnais que ta solution aurait pu m'arranger.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 251
Modifié par eriiic le 19/05/2013 à 22:46
Modifié par eriiic le 19/05/2013 à 22:46
Re,
Dim DateReception As Date
DateReception = UserForm3.TextBox1.Text
Je pense que ce qu'il n'aime pas c'est une chaine vide...
Essayer de tester pour toutes les dates :
if UserForm3.TextBox1.Text <>"" then DateReception = UserForm3.TextBox1.Text
Ou mieux, mettre un contrôle date&time picker qui contrôlera la validité des dates car tu auras le même soucis si qcq'un fait une faute de frappe et fournit une date non valide.
Je te laisse tester ;-)
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Dim DateReception As Date
DateReception = UserForm3.TextBox1.Text
Je pense que ce qu'il n'aime pas c'est une chaine vide...
Essayer de tester pour toutes les dates :
if UserForm3.TextBox1.Text <>"" then DateReception = UserForm3.TextBox1.Text
Ou mieux, mettre un contrôle date&time picker qui contrôlera la validité des dates car tu auras le même soucis si qcq'un fait une faute de frappe et fournit une date non valide.
Je te laisse tester ;-)
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
19 mai 2013 à 22:58
19 mai 2013 à 22:58
C'est une bonne idée ta reflexion sur la fausse date. Je n'y avais pas songé mais tu as entièrement raison.
Je vais me pencher sur ce problème et vous tiens informé de l'avancé de la résolution du problème.
Je te remercie de ton aide.
Je vais me pencher sur ce problème et vous tiens informé de l'avancé de la résolution du problème.
Je te remercie de ton aide.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 251
19 mai 2013 à 23:06
19 mai 2013 à 23:06
et on peut se demander pourquoi ton programme va trainer sur ces lignes là puisque qu'on est sensés quitter sans traitement (?)
eric
eric
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
Modifié par gilles52300 le 20/05/2013 à 01:12
Modifié par gilles52300 le 20/05/2013 à 01:12
Ah non on est sensé les traités, mais dans ce cas précis, c'est suite à fausse manip.
Autrement tous les combo et text sont à remplir avec les bonnes données. donc effectivement si la date n'est pas bonne (fausse date comme le 29/2) il faut le signaler car cela va influer sur le reste de l'exécution du traitement des données.
Dans ce cas précis, je ne saurais te dire pourquoi il n'obéit pas à l'ordre de tout stopper.
Autrement tous les combo et text sont à remplir avec les bonnes données. donc effectivement si la date n'est pas bonne (fausse date comme le 29/2) il faut le signaler car cela va influer sur le reste de l'exécution du traitement des données.
Dans ce cas précis, je ne saurais te dire pourquoi il n'obéit pas à l'ordre de tout stopper.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 251
Modifié par eriiic le 20/05/2013 à 01:28
Modifié par eriiic le 20/05/2013 à 01:28
Oui, en marche normale quand on valide.
Mais si on abandonne il ne devrait pas passer par ces lignes.
Après ton UserForm3.Show tu ne devrais plus rien avoir.
Et avoir tes calculs sur le bouton de validation, et en final le .hide si toutes les saisies sont correctes et les calculs effectués.
En résumé sur le bouton de validation :
- contrôle des saisies
- si non correctes : message d'erreur et exit sub pour rester sur le formulaire.
- si correctes on calcule et .hide
Sur le bouton d'annulation (et tu peux remettre la croix de fermeture, tu cherchais à cacher la poussière sous le tapis là) :
.hide
eric
Mais si on abandonne il ne devrait pas passer par ces lignes.
Après ton UserForm3.Show tu ne devrais plus rien avoir.
Et avoir tes calculs sur le bouton de validation, et en final le .hide si toutes les saisies sont correctes et les calculs effectués.
En résumé sur le bouton de validation :
- contrôle des saisies
- si non correctes : message d'erreur et exit sub pour rester sur le formulaire.
- si correctes on calcule et .hide
Sur le bouton d'annulation (et tu peux remettre la croix de fermeture, tu cherchais à cacher la poussière sous le tapis là) :
.hide
eric
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
20 mai 2013 à 01:54
20 mai 2013 à 01:54
Ok je vois ce que tu veux dire. Je vais apporter la modification. Car effectivement le reste de mes calculs se font à la suite de userform.show
Pour la poussière sur le tapis, je reconnais..... mea culpa!!!!!
Pour la poussière sur le tapis, je reconnais..... mea culpa!!!!!
Mike-31
Messages postés
18356
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
31 janvier 2025
5 112
20 mai 2013 à 09:03
20 mai 2013 à 09:03
Re,
en décortiquant ton code, sur l'userform3 le bouton Fermeture et Enter ont la même fonction fermer l'userform un avec Hide l'autre Unload donc il est normal que l'on retrouve ce message d'erreur sur les deux.
Ensuite le code à mon sens est mal placé et devrait être exemple sous un bouton Enter ou enregistrer etc ... parce qu'Excel se trouve avec un ordre sans aboutissement d'où erreur qu'il faut gérer ou il faut revoir ton code qui semble un mix
en décortiquant ton code, sur l'userform3 le bouton Fermeture et Enter ont la même fonction fermer l'userform un avec Hide l'autre Unload donc il est normal que l'on retrouve ce message d'erreur sur les deux.
Ensuite le code à mon sens est mal placé et devrait être exemple sous un bouton Enter ou enregistrer etc ... parce qu'Excel se trouve avec un ordre sans aboutissement d'où erreur qu'il faut gérer ou il faut revoir ton code qui semble un mix
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
20 mai 2013 à 12:43
20 mai 2013 à 12:43
Je te remercie pour tes conseils Mike.
Je suis un novice en VBA. j'ai débuté vba en 2006 (fichier de stock, création d'annonce en csv pour import sur le net, facturation...) et depuis plus rien jusqu'à ces jours.
alors j'ai une petite base (toute petite) et je ne fini pas de découvrir la puissance et la complexité de vba. Je prend des morceau de code pour ce que je veux faire et je les assemble et fait en sorte que cela fonctionne.
Donc je prend tous les conseils que l'on me donne et les appliques.
C'est vrai que pour l'appel de l'userform j'ai toujours fait comme ça, mais c'est plus judicieux comme tu dis.
A+
Gilles
Je suis un novice en VBA. j'ai débuté vba en 2006 (fichier de stock, création d'annonce en csv pour import sur le net, facturation...) et depuis plus rien jusqu'à ces jours.
alors j'ai une petite base (toute petite) et je ne fini pas de découvrir la puissance et la complexité de vba. Je prend des morceau de code pour ce que je veux faire et je les assemble et fait en sorte que cela fonctionne.
Donc je prend tous les conseils que l'on me donne et les appliques.
C'est vrai que pour l'appel de l'userform j'ai toujours fait comme ça, mais c'est plus judicieux comme tu dis.
A+
Gilles
Mike-31
Messages postés
18356
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
31 janvier 2025
5 112
20 mai 2013 à 13:00
20 mai 2013 à 13:00
Re,
C'est que j'ai remarqué, des bout de code pas toujours harmonieux, une sorte d'empilement.
en fait je reprendrai les codes à zéro depuis la première action, mais bon si ça marche comme cela
C'est que j'ai remarqué, des bout de code pas toujours harmonieux, une sorte d'empilement.
en fait je reprendrai les codes à zéro depuis la première action, mais bon si ça marche comme cela
Normad
Messages postés
112
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
10 juin 2015
39
20 mai 2013 à 15:05
20 mai 2013 à 15:05
C'est que ton code s'exécute alors qu'il ne devrait pas, est-ce que tu l'aurais mis dans l'évenènement Terminate par Hasard ?
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
20 mai 2013 à 15:37
20 mai 2013 à 15:37
Je n'avais pas mis mon code dans le bouton "enter"
donc en fait mon code s'exécutait quand même dans tous les cas.
merci pour ton info.
donc en fait mon code s'exécutait quand même dans tous les cas.
merci pour ton info.