Excel UserForm

Résolu
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 11 mars 2012 à 01:46
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 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 ?


Merci et bon Dimanche,

Cheyenne

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 mars 2012 à 02:26
PS : Il faudra faire un
Unload maForme
avant de quitter Excel pour bien nettoyer
3
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
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.

Bon Dimanche à toi.

Cheyenne
0
Rejoignez-nous