Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Couleur pour tout control d'une Userform

  • Initiateur de la discussion Initiateur de la discussion Yaloo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Yaloo

XLDnaute Barbatruc
Bonjour à tous,

J'ai plusieurs Userform dans différents fichiers, je souhaiterai mettre la même couleur à tous les contrôles de mon Userform.

La couleur en question est le : 00FFC0C0&

Il faudrait un truc du genre if control then color = 00FFC0C0& mais évidemment
je n'y arrive pas.
Même si je le lance pour chaque Userform je gagnerai énormément de temps.

Merci d'avance à celui ou celle qui pourra m'aider.

Yaloo
 
Re : Couleur pour tout control d'une Userform

Bonjour Yaloo,

00FFC0C0& ne semble pas exister, mais FFC0C0& existe...

Code:
Sub CouleurControls()
For Each c In ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls
c.BackColor = FFC0C0& 'pas terrible comme couleur...
Next
End Sub
Onglet Développeur => Sécurité des macros => Paramètres des macros :

vérifier que la case "Accès approuvé au modèle d'objet du projet VBA" est cochée.

A+
 
Re : Couleur pour tout control d'une Userform

Re,

Et bien sûr on peut faire une boucle sur les UserForm :

Code:
Sub CouleurControls()
Dim a, i As Byte, c As Object
a = Array("Userform1", "UserForm2", "UserForm3")
For i = 0 To UBound(a)
  For Each c In ThisWorkbook.VBProject.VBComponents(a(i)).Designer.Controls
    c.BackColor = FFC0C0& 'pas terrible comme couleur...
  Next
Next
End Sub
Et on peut même mettre une couleur différente pour chaque UserForm en utilisant un tableau des couleurs b de même taille que le tableau a.

A+
 
Dernière édition:
Re : Couleur pour tout control d'une Userform

Re,

Si chaque UserForm a le même nom "UserForm1" et se trouve dans un fichier différent :

Code:
Sub CouleurControls()
Dim a, i As Byte, c As Object
a = Array("Classeur1.xlsm", "Classeur2.xlsm", "Classeur3.xlsm")
For i = 0 To UBound(a)
  For Each c In Workbooks(a(i)).VBProject.VBComponents("UserForm1").Designer.Controls
    c.BackColor = FFC0C0& 'pas terrible comme couleur...
  Next
Next
End Sub
A+
 
Re : Couleur pour tout control d'une Userform

Salut Job,

Désolé je m'était absenté, je sais pas terrible comme couleur, mais ce n'est pas moi qui ai choisi, moi je m'en fout je suis daltonien.

Je vais essayer tout ça et te dis dès que possible.

Merci pour ces 3 propositions, je n'ai que l'embarras du choix.

A+
 
Re : Couleur pour tout control d'une Userform

Re Job, le forum,

Au post #3 tu mets UserForm1, UserForm2, UserForm3

Comment faire la même chose mais avec des noms d'UserForm différent, du type :

Vente
Achat
Client

Je suis obligé de rentrer tous les noms des UserForm, ou existe-t-il un truc de type :

VB:
For i = 1 to 5 then
userform(i)
blabla etc...
next i


A+
 
Re : Couleur pour tout control d'une Userform

Re Yaloo,

Dans la macro du post #3 "UserForm1" etc sont les noms des UserForms. Si l'on modifie ces noms il faut modifier le tableau.

Il existe en effet une collection UserForms et des objets UserForms(index) mais voyez l'aide VBA :

La collection UserForms est l'ensemble des objets UserForm chargés dans une application.

Donc il est possible de faire une boucle avec cette collection mais seuls les UserForms chargés seront modifiés par la macro.

Edit : j'ai essayé avec 2 UserForms chargés, mais ce code beugue sur la 3ème ligne :

Code:
Dim i As Byte, c As Object
For i = 0 To UserForms.Count - 1
  For Each c In ThisWorkbook.VBProject.VBComponents(UserForms(i).Name).Designer.Controls
    c.BackColor = FFC0C0& 'pas terrible comme couleur...
  Next
Next
qu'il soit lancé manuellement ou par un bouton dans un UserForm.

La propriété Designer ne semble pas fonctionner sur un UserForm chargé.

A+


A+
 
Dernière édition:
Re : Couleur pour tout control d'une Userform

Re,

Bon, j'ai trouvé comment modifier tous les UserForms sans avoir à écrire leurs noms :

Code:
Sub CouleurControls()
Dim i As Integer, c As Object
On Error Resume Next
For i = 0 To 100 'adapter si plus de 100 feuilles dans VBAProject
  For Each c In ThisWorkbook.VBProject.VBComponents(i).Designer.Controls
    c.BackColor = FFC0C0& 'pas terrible comme couleur...
  Next
Next
End Sub
Aucun UserForm ne doit donc être chargé.

A+
 
Re : Couleur pour tout control d'une Userform

Re,

Une petite précision : perso j'ai opté pour un UserForm.

En effet c'est un terme anglais, et il est du genre neutre.

Je sais bien qu'en français on dit une forme...

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…