Tester si un userform est affiché !

W

Willy

Guest
Bonjour le forum,

Je souhaiterai savoir si il existe une fonction pour tester si un userform est affiché ( show ) ou pas dans le style :

if userform1.show = True then
bla bla
else
BloBlo
end if

Bien sur celle-ci ne marche pas ! lol

Bon Dimanche
Willy
 
@

@Christophe@

Guest
Bonjour Willy

Peux être qu'il existe un truc!

Regarde ce que j'ai trouvé dans le fichier suivant. Je bosse avec un variable public USFOpen as boolean

Dans userform initialize je mets USFOpen = true

et lors de la fermeture je remets sur USFOpen = False

Lors de ton contrôle tu n'as cas intéroger la variable:

If USFOpen = true then
bla
bla
bla

Bonne chance

@Christophe@
 

Pièces jointes

  • UsfOpen.zip
    10.2 KB · Affichages: 81
W

Willy

Guest
Bonjour christophe,
Je vais regarder ton fichier, c'est vrai que j'avais pensé faute de mieux lors de l'ouverture de l'userform à indiqué dans une cellule : 1 et à sa fermeture : 0. ainsi je pouvais tester si l'userform est affiché ou pas.

Je regarde
Bonne journée et merci encore
Willy
 
O

omicron

Guest
Bonsoir Willy

Pour tester si un contrôle graphique est affiché ou pas, il suffit de tester sa propriété "visible" (Booléen)

"UserForm" étant un contrôle graphique, il suffit donc de tester :


if UserForm1.visible then
<< séquence à exécutuer si la fenêtre est visible>>
end if
ou
if not UserForm1.visible then
<<séquence à exécuter si la fenêtre est masquée>>
end if

nb: bien sur on peut bien sur tester "userform1.visible = true / false "

Bon courage pour la suite ....
 
W

Willy

Guest
Bonsoir omicron

Merci à toi, je trouvais quand même bizarre de ne pas pouvoir tester la présence ou pas d'un USF simplement.

Cela m'aura ainsi permis de connaître la méthode interressante de Christophe.

Bonne fin de soirée à tous et merci encore.
Willy
 
L

LaurentTBT

Guest
Bonsoir à tous.

Petit inconvénient:

if UserForm1.visible then ... permet en effet de savoir si UserForm1 est affiché. Mais cela ne permet pas de tester s'il est chargé où non. D'ailleurs, s'il n'était pas chargé, le fait de lancer ce test va le charger en mémoire, et notamment lancer la procédure userform_Initialize.
Il faudrait aussi un test du style: If UserForm1.loaded=true... mais je ne crois pas que cela existe.

Rq: la différence entre "visible" et "chargé" et la même que celle qu'il y a pour enlever le Userform avec Userform1.Hide, (ie effacé de l'écran mais toujours en mémoire), et Unload Userform1, où là, il est supprimé et de l'écran, et de la mémoire.
Dans le premier cas (Hide) on peut toujours travailler dessus, récupérer des infos sue ses contrôles...

Bonne nuit.
 
W

Willy

Guest
Bonjour à tous
Merci Laurent pour cette petite précision mais qui du coup remet tout en cause !! lol

Pour le moment je vais rester avec la méthode de Christophe. Je suis étonné par le fait que si l'on teste un usf pour savoir si il est visible ou non, cela permettrai en outre de le charger et donc de lancer la procédure userform_Initialize. Je croyais la fonction visible beaucoup plus anodine !!
c'est bon à savoir
merci à tous et bonne semaine
Willy
 
@

@+Thierry

Guest
Bonjour Willy, Laurent, @Xtof@, le Forum


Je vous dirais franchement que j'hallucine un peu en lisant ce fil... On dirait que tu as monté une sacré usine à gaz mon cher Willy pour avoir besoin d'un test si tes UserForm sont Loaded and Hidden !!!

Cà ne se fait pas par l'opération du Saint Esprit tout de même qu'un UserForm se charge en mémoire ... Non ?? Je me demande vraiment ce que tu as fais pour perdre le contrôle de ton application à ce point ...

En règle générale, un Seul UserForm de base suffit à toute appli...

On peut éventuellement avoir un ou deux "Micro-UserForm" contenant des Option, ou éventuellement une fenetre d'aide, ou encore une ListBox de données à choisir... Mais ces UserForms que je qualifierais de "Satellites" s'ouvre, on récupère leur valeur et puis on fait Unload... Basta... Vraiment je ne vois pas comment pourrais-je avoir besoin de tester si mes UserForms sont en charge ou pas en cours de mes programmes...

Je sais toujours où ils sont, quand ils s'ouvrent, quand ils sont Hidden, quand ils sont Morts...

Enfin c'est une façon de voir les choses...

Bon App
@+Thierry
 
L

LaurentTBT

Guest
Hello tout le monde.

Bon, c'est un point de vue, Thierry. De mon côté, j'avais cherché à mettre dans une listbox les noms de plusieurs userfoms qui étaient contenus dans mon projet, pour que l'utilisateur puisse choisir. Tu me diras, dans ce cas, un seul userform que l'on modifie selon le choix pouvait aller. Mais bon, il faut bien débuter!

Toujours est-il que pour Willy, j'ai la solution qui consiste à faire la différence entre un userform du projet, un userfrom chargé, et un userform visible.
Mais depuis le boulot, je ne peux pas insérer de pièce jointe. Donc il faudra patienter jusqu'à ce soir.

Bonne journée.

Laurent.
 
W

Willy

Guest
Re bonjour,
Ben l'interêt d'avoir plusieurs userform c'est de les lancer quand on en as besoin.

Voici pour du concret comment se passe mon appli :

L'utilisateur effectue une requette sur la liste des personnes ayant le permis PL.
La liste est affiché dans le listbox d'un usf. Le listbox contient 7 colonnes de données par agent. Si l'utilisateur à besoin d'infos sup, en cliquant sur la ligne de l'agent concerné, un second usf s'ouvre et contient la photo scannée du permis de conduire et divers infos sup style, n° du permis, date de validité des PL, SPL, etc..

C'est vrai que j'aurai pu intégrer la photo du permis dans le permier usf mais ça commence à charger, de plus l'utilisateur n'as pas forcément besoin d'avoir les infos du permis mais surtout j'ai pris comme exemple la requette permis PL.
Et les requettes possibles j'en ai plus de 60 avec à terme pour presque chaque requette un document à afficher ( dans le même principe du permis )
Donc le principe de 2 usf est je trouve très interressant et permet beaucoup plus de clarté dans l'appli.

D'ou le besoin de tester si l'usf photo document est affiché ou pas
car si il est affiché, l'utilisateur peut ensuite cliquer sur différents agents et obtenir le document correspondant.

Bonne journée
Willy
 
L

LaurentTBT

Guest
Re-bonsoir à tous

Bon chose promise...

Ceci dit, à la lecture de tes explications sur ton appli, Willy, je vais un peu dans le sens de Thierry.
Tu peux modifier les infos du userform2 en les chargeant dans la procédure événementielle ListBox1_Change() de ton Usf1.

Enfin, il faudrait avoir tout ton programme pour y voir plus clair.

Bon courage, et bonne soirée.
 

Pièces jointes

  • UsfChargeVisible.zip
    18.2 KB · Affichages: 110

Discussions similaires

Réponses
13
Affichages
260
Réponses
1
Affichages
309
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 358
Messages
2 087 585
Membres
103 600
dernier inscrit
Tora61