Repaint un USF dont le nom est en variable

Résolu
roideseaux Messages postés 274 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    0
    1. roideseaux Messages postés 274 Statut Membre 5
       
      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
  2. roideseaux Messages postés 274 Statut Membre 5
     
    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
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
    2. roideseaux Messages postés 274 Statut Membre 5
       
      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