Modifier la police de tous les contrôles d'un userform

GeoTrouvePas

XLDnaute Impliqué
Bonsoir tout le monde,

Je suis désolé de faire un post pour une histoire aussi basique que ça mais voilà plusieurs heures que je me prends la tête sur ce problème sans avancer d'un poil.

Je m'explique :

J'ai créée une procédure qui sera lancée à l'initialisation de chacun de mes userform pour y changer la police de tous les contrôles.

J'utilise donc :
Code:
Private Sub UserForm_Initialize()

    Call ChangerPolice(Me.Name)

End Sub

pour lancer directement cette procédure :
Code:
Sub ChangerPolice(NomUSF As String)

Dim Ctl As Control
Dim TaillePolice As Byte
Dim NomPolice As String

TaillePolice = 12
NomPolice = "Arial"

[COLOR="Red"]For Each Ctl In UserForms(NomUSF).Controls[/COLOR]
       
    If Ctl.Name <> "Titre" Then
        Ctl.Font.Size = TaillePolice
        Ctl.Font.Name = NomPolice
    End If

Next

End Sub

Mais voilà, tout ce que j'obtiens c'est une "incomptabilité de type" à la ligne marquée en rouge. Je me doute que c'est un problème de type de variable pour NomUSF ou que c'est mon expression Userforms(NomUSF) qui n'est pas correcte mais impossible de corriger ça.

Auriez vous une idée ?

Je mets un fichier exemple en pièce jointe au cas où (dans cet exemple, ma procédure se lance en cliquant sur le bouton, sinon on ne voit pas où se produit l'erreur).

Merci d'avance
 

Pièces jointes

  • ChangerPolice.xls
    27.5 KB · Affichages: 82

JNP

XLDnaute Barbatruc
Re : Modifier la police de tous les contrôles d'un userform

Re :),
Personnellement, j'ai testé
Code:
Sub test()
Dim VBCmp As VBComponent
Dim Ctrl As Control
For Each VBCmp In ThisWorkbook.VBProject.VBComponents
    If VBCmp.Type = 3 Then
        For Each Ctrl In VBCmp.Designer.Controls
            MsgBox Ctrl.Name
        Next
    End If
Next
End Sub
et mes réferences ouvertes sont

attachment.php


Et ça marche :eek:...
Difficile de t'aider plus :rolleyes:...
Bon courage :cool:
 

Pièces jointes

  • Références.JPG
    Références.JPG
    25.9 KB · Affichages: 94
  • Références.JPG
    Références.JPG
    25.9 KB · Affichages: 96
  • Références.JPG
    Références.JPG
    25.9 KB · Affichages: 96

GeoTrouvePas

XLDnaute Impliqué
Re : Modifier la police de tous les contrôles d'un userform

Encore merci JNP.

J'ai les mêmes références activées que toi sauf pour Microsoft Excel Object Library et Microsoft Office Object Library où j'ai les versions 10.0 et non 14.0.

J'avais pensé utilisé la méthode de Banzaï consistant à désigner les userforms par leur indice. Puisque Userforms.count ne comptabilise que les userforms chargés, je voulais faire presque infinie avec :

Code:
For i = 1 To 5000
    On Error Resume Fin:
    For Each Ctrl In Userforms(i)
            MsgBox Ctrl.Name
    Next
Next
Fin:

comme ça dès qu'on a atteind le dernier userform, on sort de la boucle. Mais bien évidement, Userforms(i) ne marche pas non plus chez moi. Tant pis, je vais faire exécuter ma boucle sur chaque contrôle à l'ouverture de chaque userform au lieu de tout faire au lancement.

Merci à tous pour votre aide et bon week end.
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 768
Membres
103 662
dernier inscrit
rterterert