Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] [UserForm non-modal] [processus en attente]

2 réponses
Avatar
Joe le Bonka
Bonjour à tous !

Je suis en train de me prendre la tête avec la conversion d'une macro en
excel 97 vers du 2000 en utilisant des userforms modaux/non-modaux.

Je m'explique :
Dans ma macro Excel, un systême de fenêtres modales à choix multiple guide
l'utilisateur pour faire différentes actions. Pour un choix particulier, il
doit saisir dans une feuille excel des chiffres. Une fenêtre non-modale
(appellons la "fenêtre") apparaît à ce moment là, et quand l'utilisateur a
fini, il clique sur un bouton et la macro contrôle les valeurs saisies.

Voilà comment j'ai organisé mon affaire, car je crois que mon problème est
avant tout un problème organisationnel :

affichage d'un USF "Menu" MODAL.

Menu.show

Si l'utilisateur clique sur le bouton qui va bien, on efface ce menu modal,
on affiche la fenêtre non-modale :
Dans ce Menu, dans Private Sub CommandButton1_Click() :

Menu.hide
fenetre.show 0 (affichage de la fenêtre non-modale)
fenetre.hide
Menu.Show ' Ici on fait réapparaitre le menu dés que l'utilisateur a fini
avec la fenêtre
.
.
.
Le problème est ici : l'intérêt d'une fenêtre non-modale est que
l'utilisateur peut saisir des choses en même temps qu'elle est affichée à
l'écran. Mais aussi le processus n'est pas bloqué par l'affichage de cette
fenêtre si bien que ma macro continue sans tenir compte de cette fenêtre.
Dans mon exemple, la 'fenêtre apparaît et disparaît aussitot. Alors que dans
mon esprit, la fenêtre apparaissait, et la procédure du Menu ne reprenait
que quand fenetre lui redonnait la main.
D'ou ma question : comment mettre le processus en 'pause' pour qu'il
s'arrête tant que l'utilisateur n'a pas appuyé sur le bouton de fenêtre ?

2 réponses

Avatar
anonymousA
Bonjour,

je ne suis pas ur d'avoir tout compris à ta démonstration. Ceci dit, si
la fenêtre Menu est modale, le fait de déclencher l'instanciation d'une
fenêtre non modale ( ici fenetre) ne rendra pas pour autant possible
l'accès à cette fenêtre non modale. C'est seulement si cette dernière
est modale que tu pourras y accéder.
Par ailleurs, dans ton programme on affiche la fenêtre non modale (UF
fenetre) puis comme on ne peut y accéder, le programme continue et la
cache et si tu fermes la fenetre Menu par la croix (p.e sous réserve
qu'au click sur celle-ci tu n'aies pas un bout de proc pour fermer le UF
fenetre), alors le UF fenetre est alors actif et non déchargé de la mémoire.

En d'autres termes, si tu veux accéder en mode non modal au UF fenetre
tout en préservant la possibilité de revenir sur le UF Menu, il faut
aussi que le UF Menu soit non modal, du moins c'est comme celà que je
peux interpréter une réponse par rapport à tes explications.

A+


Bonjour à tous !

Je suis en train de me prendre la tête avec la conversion d'une macro en
excel 97 vers du 2000 en utilisant des userforms modaux/non-modaux.

Je m'explique :
Dans ma macro Excel, un systême de fenêtres modales à choix multiple guide
l'utilisateur pour faire différentes actions. Pour un choix particulier, il
doit saisir dans une feuille excel des chiffres. Une fenêtre non-modale
(appellons la "fenêtre") apparaît à ce moment là, et quand l'utilisateur a
fini, il clique sur un bouton et la macro contrôle les valeurs saisies.

Voilà comment j'ai organisé mon affaire, car je crois que mon problème est
avant tout un problème organisationnel :

affichage d'un USF "Menu" MODAL.

Menu.show

Si l'utilisateur clique sur le bouton qui va bien, on efface ce menu modal,
on affiche la fenêtre non-modale :
Dans ce Menu, dans Private Sub CommandButton1_Click() :

Menu.hide
fenetre.show 0 (affichage de la fenêtre non-modale)
fenetre.hide
Menu.Show ' Ici on fait réapparaitre le menu dés que l'utilisateur a fini
avec la fenêtre
.
.
.
Le problème est ici : l'intérêt d'une fenêtre non-modale est que
l'utilisateur peut saisir des choses en même temps qu'elle est affichée à
l'écran. Mais aussi le processus n'est pas bloqué par l'affichage de cette
fenêtre si bien que ma macro continue sans tenir compte de cette fenêtre.
Dans mon exemple, la 'fenêtre apparaît et disparaît aussitot. Alors que dans
mon esprit, la fenêtre apparaissait, et la procédure du Menu ne reprenait
que quand fenetre lui redonnait la main.
D'ou ma question : comment mettre le processus en 'pause' pour qu'il
s'arrête tant que l'utilisateur n'a pas appuyé sur le bouton de fenêtre ?








Avatar
LSteph
Bonjour Joe,

Une possibilité serait de prévoir directement en non modal un userform plus
grand
et d'y rendre visible ou non un cadre contenant les données que tu veux
rendre
disponible pour la saisie...ou si vraiment tu y tiens un autre userform non
modal

lSteph

"Joe le Bonka" a écrit dans le
message de news: 43673f77$0$27402$
Bonjour à tous !

Je suis en train de me prendre la tête avec la conversion d'une macro en
excel 97 vers du 2000 en utilisant des userforms modaux/non-modaux.

Je m'explique :
Dans ma macro Excel, un systême de fenêtres modales à choix multiple guide
l'utilisateur pour faire différentes actions. Pour un choix particulier,
il
doit saisir dans une feuille excel des chiffres. Une fenêtre non-modale
(appellons la "fenêtre") apparaît à ce moment là, et quand l'utilisateur a
fini, il clique sur un bouton et la macro contrôle les valeurs saisies.

Voilà comment j'ai organisé mon affaire, car je crois que mon problème est
avant tout un problème organisationnel :

affichage d'un USF "Menu" MODAL.

Menu.show

Si l'utilisateur clique sur le bouton qui va bien, on efface ce menu
modal,
on affiche la fenêtre non-modale :
Dans ce Menu, dans Private Sub CommandButton1_Click() :

Menu.hide
fenetre.show 0 (affichage de la fenêtre non-modale)
fenetre.hide
Menu.Show ' Ici on fait réapparaitre le menu dés que l'utilisateur a fini
avec la fenêtre
.
.
.
Le problème est ici : l'intérêt d'une fenêtre non-modale est que
l'utilisateur peut saisir des choses en même temps qu'elle est affichée à
l'écran. Mais aussi le processus n'est pas bloqué par l'affichage de cette
fenêtre si bien que ma macro continue sans tenir compte de cette fenêtre.
Dans mon exemple, la 'fenêtre apparaît et disparaît aussitot. Alors que
dans
mon esprit, la fenêtre apparaissait, et la procédure du Menu ne reprenait
que quand fenetre lui redonnait la main.
D'ou ma question : comment mettre le processus en 'pause' pour qu'il
s'arrête tant que l'utilisateur n'a pas appuyé sur le bouton de fenêtre ?