Problème d'affichage avec un Userform
Bonjour
Je m'excuse d'avance si la question a déjà été posée mais je n'ai à priori rien trouvé sur le forum.
Voici mon problème.
1) J'ai une feuille qui est alimentée à intervalles réguliers par des données externes récupérées grâce à une fonction Timer. ici pas de soucis, tout se passe bien
2) J'ai créé un userform modless dans lequel sont affichées des données triées dans une userlist.
3) Lorsque j'initialise mon userform, la liste est alimentée sans pb. Un bouton intégré dans le userform permet de rafraîchir manuellement la liste.
4) J'ai créé une procédure public d'abord intégrée au userform déclenchée par le timer qui devrait rafraîchir la liste mais là ça ne fonctionne pas alors que à la mano pas de pb.
5) le Userform accède sans pb à la feuille (appels "manuels" fc correctement)
J'ai essayé les manips suivantes toutes négatives :
- intégrer les appels timer directement dans le Userform avec la procédure toutes déclarées public
- j'ai sorti les fc timer dans un module indépendant en laissant la procédure dans le userform
- j'ai tout sorti en essayant de rafraîchir via un appel style userform.userlist : cette procédure fonctionne manuellement (je ne savais pas que les objets incorporés à un userform étaient public !)
mais rien n'y fait.
J'ajoute que lorsque je fais tourner "à la mano" c'est à dire hors timer, là ça fonctionne.
Le timer appelle bien mes procédures donc là aussi pas de pb.
Alors je n'y comprends rien.
Je ne sais pas si j'ai été très clair dans mon exposé mais si vous aviez une idée ou une amorce de solution, vous m'en verrez ravi.
Cordialement
Nouveaux tests et nouvel échec
Bonjour
Comme suggéré plus haut j'ai donc mis mon sub déclaré en public directement dans le userform -> audcune amélioration. J'ai aussi vérifié que le sub est bien appelé par le timer ce qui est le cas.
J'ai aussi mis userform.repaint. Au début ça semblait marcher mais au bout de 10mn plus rien.
Voici mon sub :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Public Sub essais_ecrit()
Me.TextBox1.Text = "test" 'uniquement pour forcer le rafraichissement du CTL
Me.ListBox2 = ""
'Me.TxtBox_Num_dev.Value = ""
Me.ComboBox1.Value = "TOUS"
Me.TextBox1.Text = ""
Call cherche("", "TOUS", "")
'Call Me.essais_ecrit
Formulaire_Saisie.Repaint
'MsgBox "procedure essais_ecrit appelée" 'pour test appel
End Sub
A noter que le ME est juste là pour la lisibilité du code. Si on le supprime ou que l'on mette userform.<nom_ctl>, ça ne change strictement rien.
Voici maintenant le contenu du bouton RAZ qui fonctionne à tous les coups !
Private Sub BTN_RAZ_Click()
Me.TextBox1.Text = ""
Me.ListBox2 = ""
Me.ComboBox1.Value = "TOUS"
Call cherche("", "TOUS", "")
End Sub |
Bon bref je m'arrache les cheveux et ne trouve rien alors si par hasard ne serait-ce que l'amorce d'une idée ou une piste à explorer ,je suis preneur.
Bien cordialement