Je maintiens une ancienne application écrite en VBA pour Excel 2002 (XP)/2003, et j'essaie de l'internationaliser. Pour ce faire, je lis dynamiquement les chaînes traduites et met à jour les différents contrôles de mon userform en mettant à jour leur propriété .Caption.Comment changer le texte de la barre de titre d'un Userform en VBA?
Cela fonctionne comme prévu pour tous les contrôles, mais pas pour le formulaire lui-même - lorsque je change la propriété .Caption du formulaire, la barre de titre affiche la valeur "codée en dur" et la nouvelle valeur est affichée au-dessous, au sommet de la «toile» de la forme elle-même.
Est-il possible de modifier le texte de la barre de titre d'un objet UserForm après son affichage ou dois-je modifier la propriété .Caption du formulaire avant qu'il ne soit affiché pour qu'il soit reflété dans la barre de titre plutôt que dans la zone de canevas/client?
Mon code ressemble à ceci:
' in frmFoo
Private Sub UserForm_Activate()
' ...
TranslateDialog Me, "frmFoo"
' ...
End Sub
' in a VBA module
Sub TranslateDialog(pForm As UserForm, pFormName As String)
Dim new Caption As String
Const notFound As String = "###[email protected]@[email protected]@!!###"
' ...
' GetMessage() returns the translated message for a given key, or the
' default value (second parameter) if no translation is available.
' The translation key for the form caption is the form name itself.
newCaption = GetMessage(pFormName, notFound)
If newCaption <> notFound Then pForm.Caption = newCaption
' ...
End Sub
Comme je l'ai dit, l'affectation à pForm.Caption
a un effet - mais il n'écrit pas à la barre de titre de la fenêtre, mais directement en dessous . Je cours Excel 2003 sur Windows XP SP 3.
Excellent - merci pour votre aide! Cela a effectivement fonctionné. –