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
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 :)

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
0
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 5
Modifié le 2 oct. 2019 à 15:11
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
0
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
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()" ?
0
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
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
0
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
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.
0
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
Tu peux faire une boucle sur tous tes UserForm pour y mettre le code

https://silkyroad.developpez.com/VBA/UserForm/#LV-C
0