Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1710 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code fermeture Userform

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code fermeture Userform

n°1338644
alain_mc
Posté le 04-04-2006 à 13:20:19  profilanswer
 

Bonjour à tous,
 
Qui peut me venir en aide ?  Une partie du code de mon programme oblige la saisie, par InputBox, de toute donnée oubliée ou erronée dans une TextBox. La structure de boucle que j'ai mise en place est de type "Do While TextBox1="" or Not IsNumeric(TextBox1) then .....Code=InputBox(etc...)........ Loop. Cela fonctionne parfaitement.
 
Mon problème est que si je veux mettre fin à mon UserForm chargé à l'écran avec UserForm1.Show, en cliquant sur la croix rouge située à l'extrémité supérieure droite de ma boîte de dialogue, mon InputBox apparait quand même pour m'obliger à une saisie pour ma TextBox, ce que je ne veux pas.
 
Question :
 
Dans les structures If..... End If, j'ai donc l'obligation de positionner le code du clic pour décharger mon UserForm (croix rouge supérieure droite) à un niveau supérieur à celui du contrôle de la saisie dans ma TextBox.
 
Mais je bloque sur le code Vba pour Excel 2003 à écrire dans le cas où je veux mettre fin à mon affichage de boîte de dialogue par simple clic sur la croix rouge du UserForm, que l'information qui doit prendre place dans la TextBox1 ait été remplie ou pas.
 
Merci de votre coopération.
 
Alain_mc

mood
Publicité
Posté le 04-04-2006 à 13:20:19  profilanswer
 

n°1338705
tegu
Posté le 04-04-2006 à 14:16:18  profilanswer
 

Je ne comprends pas ce que vient faire ton inputbox là au milieu.
Quand une zone texbox est mal remplie on demande à ce qu'elle le soit avant de valider/sauvegarder/passer à l'écran suivant.
On ne détourne pas la saisie dans une inputbox. La saisie doit se faire dans la textbox.
Et si je comprends bien la structure de ton prog, ça t'éviterais d'avoir à gérer une boucle de validation inutile.
 
Il faut que tu sois plus précis sur le déclenchement actuel des événements et des traitements que tu fais. Ta structure IF.. Endif, elle sert à quoi ? Elle est dans quelle partie du code ? Elle se déclenche quand ?

n°1338887
alain_mc
Posté le 04-04-2006 à 16:12:33  profilanswer
 

**** Pour une meilleure compréhension, je joins la procédure concernée dont les Inputbox fonctionnent très bien en cas de mauvaises saisies.
En clair, quel code dois-je insérer à l'intérieur pour que la boîte de dialogue soit automatiquement déchargée, si je clique sur la croix rouge en haut du Userform, sans tenir compte de la saisie ou non dans les Inputbox.
 
Merci d'avance.
 
Alain_mc
 

Code :
  1. Private Sub TbCorrectionCtsEuros_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  2. Do While TbCorrectionCtsEuros = ""
  3. CtsEuros = InputBox("Tu n'as saisi aucun centime d'euro ! Frappe les centimes !", "SAISIE OBLIGATOIRE :" )
  4. TbCorrectionCtsEuros = CtsEuros
  5. Loop
  6. Do While Not IsNumeric(TbCorrectionCtsEuros)
  7. CtsEuros = InputBox("Ce que tu viens de saisir ne correspond pas à des centimes ! : Recommence la saisie !", "SAISIE OBLIGATOIRE :" )
  8. TbCorrectionCtsEuros = Format(TbCorrectionCtsEuros, "00" )
  9. TbCorrectionCtsEuros = CtsEuros
  10. Loop
  11. 'Les 3 boutons doivent à présent s’afficher sur le formulaire.
  12. BtonMiseAJour.Visible = True 'Le bouton "Exporter ces données...base de données" qui était masqué réapparaît.
  13. 'Nouvelle position du bouton.
  14. BtonMiseAJour.Height = 60
  15. BtonMiseAJour.Left = 360
  16. BtonMiseAJour.Top = 24
  17. BtonMiseAJour.Width = 156
  18. 'Je repositionne les deux autres boutons.
  19. BtonRecommencer.Height = 60
  20. BtonRecommencer.Left = 360
  21. BtonRecommencer.Top = 102
  22. BtonRecommencer.Width = 156
  23. BtonAnnuler.Height = 60
  24. BtonAnnuler.Left = 360
  25. BtonAnnuler.Top = 174
  26. BtonAnnuler.Width = 156
  27. BtonMiseAJour.SetFocus
  28. End Sub


Message édité par alain_mc le 04-04-2006 à 16:18:12
n°1338940
tegu
Posté le 04-04-2006 à 16:52:29  profilanswer
 

Il faut réussir à différencier :
la sortie en cliquant sur la croix (qui évite les contrôles)  
et les autres types de sortie (qui passent dans les contrôles).
 
Tu crées une variable booléenne « flag » qui est à True si tu veux passer dans les contrôles et à False sinon.
Tu places un grand « IF flag Endif » encadrant tes boucles de validation (éventuellement d'autres lignes) et le tour est joué.
Mais je n'en pense pas moins ce que jai écrit avant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code fermeture Userform

 

Sujets relatifs
[Swish]Code source pour passer un "stop"Code VBA d'importation de module
[Résolu] code instablehtmlentities et code html, pb avec <br>
pb de fermeture de popup[Résolu] Du mal a analyser ce code
ajouter un label sur un formulaire par code?Pb de code VB sous access : FileDialog
[Batch]Explication de code svp 
Plus de sujets relatifs à : Code fermeture Userform


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR