Repaint un USF dont le nom est en variable [Résolu]

Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
- - Dernière réponse : cs_Le Pivert
Messages postés
6286
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 octobre 2019
- 2 oct. 2019 à 16:09
Bonjour à tous,

Je suis à la recherche d'une méthode pour exécuter un .Repaint sur un UserForm dont le nom est stocké dans une varibale.

J'ai essayé quelques syntaxes telles que :
MaVariable.Repaint
VBA.UserForms.Add(MaVariable).Repaint => pas d'erreur mais pas de repaint non plus :(

Il me reste la solution de faire des If sur le nom de MaVariable et faire un MonUSF.Repaint mais on est d'accord que c'est pas terrible terrible...

Je suis sûr qu'il doit y avoir un moyen mais je ne connais pas :/

Merci à tous :)
Afficher la suite 

2 réponses

Messages postés
6286
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 octobre 2019
400
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3 -
J'ai testé cela :

Sub lancementUSF()
    Dim sVariable As String
    
    sVariable = "UserForm1"
    VBA.UserForms.Add(sVariable).Show
End Sub


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
Commenter la réponse de cs_Le Pivert
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
0
Merci
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()" ?
cs_Le Pivert
Messages postés
6286
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 octobre 2019
400 -
tu fais une sub avec les éléments que tu as mis dans
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
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3 -
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.
cs_Le Pivert
Messages postés
6286
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 octobre 2019
400 -
Tu peux faire une boucle sur tous tes UserForm pour y mettre le code

https://silkyroad.developpez.com/VBA/UserForm/#LV-C
Commenter la réponse de roideseaux