Repaint un USF dont le nom est en variable
Résolu/Fermé
roideseaux
Messages postés
261
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
16 février 2023
-
2 oct. 2019 à 11:20
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 2 oct. 2019 à 16:09
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 2 oct. 2019 à 16:09
2 réponses
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
2 oct. 2019 à 11:30
2 oct. 2019 à 11:30
Bonjour,
voir ceci:
https://silkyroad.developpez.com/VBA/UserForm/#LIII-A-3
voir ceci:
https://silkyroad.developpez.com/VBA/UserForm/#LIII-A-3
roideseaux
Messages postés
261
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
16 février 2023
5
2 oct. 2019 à 14:10
2 oct. 2019 à 14:10
J'ai continué mes recherches et il semblerait que la méthode Repaint ne corresponde pas à ce que je souhaiterais faire.
Je m'explique :
Dans mon USF, j'ai des TextBox dans lesquels je place du texte contenu dans certaines cellules d'une de mes feuilles. Mon USF est exécuté en non modal, donc j'ai accès à la feuille même si l'USF n'est pas fermé.
Il peut arriver qu'un autre USF ou qu'une autre macro modifie le contenu des cellules de ma feuille, dans ce cas, je souhaiterais actualiser les TexBox de mon premier USF.
Il doit bien exister un moyen pour que l'USF réexécute le fonction "UserForm_Initialize()" ?
Je m'explique :
Dans mon USF, j'ai des TextBox dans lesquels je place du texte contenu dans certaines cellules d'une de mes feuilles. Mon USF est exécuté en non modal, donc j'ai accès à la feuille même si l'USF n'est pas fermé.
Il peut arriver qu'un autre USF ou qu'une autre macro modifie le contenu des cellules de ma feuille, dans ce cas, je souhaiterais actualiser les TexBox de mon premier USF.
Il doit bien exister un moyen pour que l'USF réexécute le fonction "UserForm_Initialize()" ?
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
Modifié le 2 oct. 2019 à 14:42
Modifié le 2 oct. 2019 à 14:42
tu fais une sub avec les éléments que tu as mis dans
comme ceci:
Si tu veux que cela s’exécute dans une certaine UserForm il faut mettre ceci:
Tu n'auras plus qu'à appeler ta
voilà c'est simple
@+ Le Pivert
Private Sub UserForm_Initialize()
comme ceci:
Option Explicit Private Sub UserForm_Initialize() afficher End Sub Sub afficher() TextBox1.Value = Range("A1").Value End Sub
Si tu veux que cela s’exécute dans une certaine UserForm il faut mettre ceci:
UserForm1.TextBox1.Value = Range("A1").Value 'adapter le nom de l'UserForm
Tu n'auras plus qu'à appeler ta
Sub afficher()
voilà c'est simple
@+ Le Pivert
roideseaux
Messages postés
261
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
16 février 2023
5
2 oct. 2019 à 15:07
2 oct. 2019 à 15:07
Oui, j'avais pensé à cette possibilité mais étant donné que je gère 7 USF, je me disait que cela alourdirait le code et avait plutôt cherché une solution moins lourde.
Il n'y en a peut être pas finalement...
Merci pour ton aide en tout cas.
Il n'y en a peut être pas finalement...
Merci pour ton aide en tout cas.
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
2 oct. 2019 à 16:09
2 oct. 2019 à 16:09
Tu peux faire une boucle sur tous tes UserForm pour y mettre le code
https://silkyroad.developpez.com/VBA/UserForm/#LV-C
https://silkyroad.developpez.com/VBA/UserForm/#LV-C
Modifié le 2 oct. 2019 à 15:11
Mais je ne veux pas faire un show car cela m'affiche un nouvel USF par dessus, j'ai donc remplacé le .Show par .Repaint mais ça ne fonctionne pas