Bonjour,
Sous Excel 2007, J'utilise un ruban personnalisé via du code XML
Dans un onglet personnalisé, j'ai créé trois bouton sur lequel je veux pouvoir modifier dynamiquement le label a l'aide de la propriété "getLabel"
dans VBA j'ai bien créé la fonction callback associé, je passe par la variable publique "label_Temp" pour afficher le texte souhaité
J'ai également créé ma fonction Refreshcontrol qui rafraichit le contrôle souhaité avec un texte particulier
Jusque ici tout va bien, si j'execute le code ci-dessous, j'ai bien mon bouton "Bt1" qui se modifie dans le ruban et qui affiche "toto"
Par contre, si dans la même sub, j'exécute :
Je me retrouve a la fin avec "tutu" sur mes 3 boutons!
J'ai l'impression que la fonction invalidatecontrol, ne s'effectue réellement que lorsque le code est terminé et donc à ce moment là, mes 3 boutons sont rafraichit avec la même valeur de la variable label_temp.
Quelqu'un aurait-il une idée pour forcer réellement le rafraichissement du ruban? Ou une autre idée qui me permettrait de résoudre mon problème?
D'avance merci
PS: A terme, je vais avoir beaucoup plus que 3 boutons donc je n'ai vraiment pas envie de créer autant de variable temporaire (ni de fonction callbacks) que de boutons.
Sous Excel 2007, J'utilise un ruban personnalisé via du code XML
Dans un onglet personnalisé, j'ai créé trois bouton sur lequel je veux pouvoir modifier dynamiquement le label a l'aide de la propriété "getLabel"
Code:
<button id="Bt1" getLabel="SubLbl" />
<button id="Bt2" getLabel="SubLbl" />
<button id="Bt3" getLabel="SubLbl" />
dans VBA j'ai bien créé la fonction callback associé, je passe par la variable publique "label_Temp" pour afficher le texte souhaité
Code:
'Callback for Bti getLabel
Sub SubLbl(control As IRibbonControl, ByRef returnedVal)
returnedVal = Label_Temp
End Sub
J'ai également créé ma fonction Refreshcontrol qui rafraichit le contrôle souhaité avec un texte particulier
Code:
Sub RefreshControle(Controle As String, Label as string)
Label_temp = Label
If Not objRuban Is Nothing Then objRuban.InvalidateControl Controle
end sub
Jusque ici tout va bien, si j'execute le code ci-dessous, j'ai bien mon bouton "Bt1" qui se modifie dans le ruban et qui affiche "toto"
Code:
Refreshcontrol ( "Bt1", "Toto")
Par contre, si dans la même sub, j'exécute :
Code:
Refreshcontrol ( "Bt1", "Toto")
Refreshcontrol ( "Bt2", "Tata")
Refreshcontrol ( "Bt3", "Tutu")
J'ai l'impression que la fonction invalidatecontrol, ne s'effectue réellement que lorsque le code est terminé et donc à ce moment là, mes 3 boutons sont rafraichit avec la même valeur de la variable label_temp.
Quelqu'un aurait-il une idée pour forcer réellement le rafraichissement du ruban? Ou une autre idée qui me permettrait de résoudre mon problème?
D'avance merci
PS: A terme, je vais avoir beaucoup plus que 3 boutons donc je n'ai vraiment pas envie de créer autant de variable temporaire (ni de fonction callbacks) que de boutons.