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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA][Excel] UserForm modeless dans une boucle

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA][Excel] UserForm modeless dans une boucle

n°2188551
Tzol
Posté le 02-05-2013 à 14:59:34  profilanswer
 

Bonjour,
 
Dans mon programme, j'ai une boucle qui appelle un UserForm  
Pour compléter cet UserForm, l'utilisateur a besoin d'avoir accès à la feuille excel, l'option .Show est donc définie avec False.
Or, avec False, la boucle passe automatiquement à l'étape suivante sans laisser la main à l'user, et seul l'UserForm correspondant au dernier élément de la boucle est affichée à l'écran.
Si je passe le .Show en True, là, tous les UserForm sont affichés les uns après les autres, mais l'user ne peut plus accèder à la feuille excel.
Schématiquement, j'ai besoin d'avoir ceci :
 

Code :
  1. For each c in MyRange
  2. MyUserForm.Show (False)
  3. 'Laisser l'user remplir l'user form
  4. '
  5. Next c


 
J'ai l'impression de manquer un truc simple, genre une commande "break" ou "resume". Une idée ?


Message édité par Tzol le 02-05-2013 à 15:00:16
mood
Publicité
Posté le 02-05-2013 à 14:59:34  profilanswer
 

n°2188552
Marc L
Posté le 02-05-2013 à 15:06:45  profilanswer
 

 
           Bonjour.
 
           Vraiment pas clair …
 
           Un UserForm a besoin d'être actif afin que ces champs soient saisissables !
 
           Quelle est donc précisément son utilité ?
 

n°2188554
Tzol
Posté le 02-05-2013 à 15:15:39  profilanswer
 

Le "mode", ce n'est pas de savoir si l'UserForm est actif ou non, mais de savoir si le reste de l'application excel est accessible ou non lorsque l'UserForm est actif.
 
Cf aide :  
 

Citation :

Remarks
 
When a UserForm is modal, the user must supply information or close the UserForm before using any other part of the application. No subsequent code is executed until the UserForm is hidden or unloaded. Although other forms in the application are disabled when a UserForm is displayed, other applications are not.
 
When the UserForm is modeless, the user can view other forms or windows without closing the UserForm.
 
Modeless forms do not appear in the task bar and are not in the window tab order.

n°2188557
Marc L
Posté le 02-05-2013 à 15:26:17  profilanswer
 

 
           Si cela avait été précisé dès le premier message !
 
           Bref, simplement passer une fois pour toutes sa propriété  ShowModal  à  False  dans la fenêtre des propriétés de l'UserForm.
 
           Mais alors il y aurait un souci de conception auquel je ne pourrais répondre sans connaître la problématique la plus précise …
 

n°2188795
Tzol
Posté le 03-05-2013 à 13:55:29  profilanswer
 

J'y penserai la prochaine fois :jap:
 
Donc, a priori, c'est du à un souci du design de ShowModal : un UserForm en modeless n'interrompt pas le code (je comprends pas vraiment pourquoi, mais c'est comme ca :o).
 
J'ai testé pas mal de trucs pour essayer de contourner ca (une boucle Do While DoEvents, ou lancer l'UserForm depuis une autre application, mais sans succès).
 
Si quelqu'un a une idée je prends :o

n°2188807
Marc L
Posté le 03-05-2013 à 15:19:35  profilanswer
 

 
           C'est tout à fait normal !
 
           Un UserForm en mode non modal sert par exemple à une boîte à outils, une calculatrice, … bref à toute procédure indépendante.
 
           Tu peux insérer l'instruction  Stop  dans ta procédure mais l'utilisateur saura-t-il la relancer ?
 

n°2188816
Tzol
Posté le 03-05-2013 à 16:35:32  profilanswer
 

L'user, ce sera moi pour au moins les premiers mois, donc ca devrait aller :o
 
Par la procédure Stop, tu veux dire le bouton rouge qu'on utilise avec F9 dans le code ? Est-ce qu'il y a des moyens de le controler avec des macro/boutons sur l'UserForm ou alors c'est à coup de F5/F9 ?

n°2188817
Marc L
Posté le 03-05-2013 à 16:42:11  profilanswer
 

 
           Une instruction …

Code :
  1.     For each c in MyRange
  2.         MyUserForm.Show (False)
  3.         Stop
  4.     '
  5.     Next c


 

n°2189313
Tzol
Posté le 08-05-2013 à 11:16:24  profilanswer
 

Bon, ça faisait pas non plus ce que je voulais, du coup j'ai du rusé en important toutes les données utiles dans l'UserForm :o
 
Merci bien quand même :jap:


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

  [VBA][Excel] UserForm modeless dans une boucle

 

Sujets relatifs
[VBA] [Access] Soucis de byref et conversion de type[VBA][Excel] modif- selection onglet source.[résolu]
S.O.S excel/access VBAProblème sur une boucle
erreur formule excel[VBA-Macros][Excel]Comparaison de deux dates
A l'aiiiiide.!! Programation Excel urgent 
Plus de sujets relatifs à : [VBA][Excel] UserForm modeless dans une boucle


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