Excel UserForm

Résolu
Signaler
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
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

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