cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 2017
-
11 mars 2012 à 01:46
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 2017
-
11 mars 2012 à 11:49
Bonjour,
J'ai une UserForm en mode Modal dans laquelle il y a un contrôle Image et des Labels.
Dans les diverses feuilles lorsque je clique sur certaine cellules, je fais appel à une macro qui va chercher des infos sur le Net ce qui me permet de remplir les Labels et de charger une image. C'est OK.
Mais ci j'appelle de nouveau l'UserForm sans recharger les contrôles, juste pour la revoir, mes Labels sont vides (ou avec le texte mis lors de la création) ainsi que le contrôle Image.
Il y a t-il un moyen de faire persister le contenu de ces contrôles ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 mars 2012 à 02:24
Salut
Tout dépend comment tu fais apparaitre et disparaitre ta UF.
La bonne méthode consiste à :
- Définir une variable objet représentant ta forme, et de bien choisir l'emplacement, selon que tu as plusieurs UF / Modules
Dim|Private|Public maForme As frmMaUserForm1
- La charger comme une instance
Set maForme = New frmMaUserForm1
Load maForme ' Charge sans l'afficher
' Permet d'accéder à ses composants avant visu
maForme.Show vbModal
- Puisque ta UF est chargée en modal, plus rien ne se passe dans le code appelant tant qu'elle est visible.
Si tu dois la réouvrir plus tard ET conserver son contenu, il suffit de la masquer mais ne pas la décharger :
' Dans la forme, dans le bouton Ok ou Annuler, je ne sais pas
Me.Hide
Le code appelant reprend son cours.
Si tu dois réafficher cette même UF, il ta suffira de faire un .Show
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 11 mars 2012 à 11:49
Bonjour Jack,
Après réflexion, je n'utilise pas une instance comme tu me l'a conseillé.
Du fait que sur cette UserForm il n'y a ni bouton Ok ou Annuler, que la croix système pour quitter, j'ai simplifié le tout :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Me.Hide: Cancel = True
End Sub
Merci quand même pour ta réponse que je valide malgré tout, car elle pertinente.
C'est le Hide qui m'a mis sur la piste.
Arggghhhh ! et pourtant je fais cela avec VB6.