Bonjour à toutes et à tous
Je cherche à modifier la couleur bleue de la barre titre et le contour d'un userform.
Merci beaucoup pour votre aide
Bonjour à toutes et à tous
Je cherche à modifier la couleur bleue de la barre titre et le contour d'un userform.
Merci beaucoup pour votre aide
Une astuce piquée sur internet :
Couleur du bandeau de titre d'un userform
Peut-on changer la couleur du bandeau de titre d'un userform ?
Dans le haut d'un module standard :
Pour les bordures, il faut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long Public Const COLOR_ACTIVECAPTION = 2 'Déclaration dans le haut du formulaire de la variable suivante : Dim OldColor As Long Private sub Form_Load() MaCouleur end sub Private sub Form_Unload(Cancel As Integer) SetSysColors 1, COLOR_ACTIVECAPTION, OldColor end sub sub MaCouleur() OldColor = GetSysColor(COLOR_ACTIVECAPTION) SetSysColors 1, COLOR_ACTIVECAPTION, RGB(255, 0, 0) end sub 'Et si ton formulaire est affiché dans une fenêtre non modale ... ajoute ceci : Private sub UserForm_Deactivate() SetSysColors 1, COLOR_ACTIVECAPTION, OldColor end sub Private sub UserForm_Activate() MaCouleur end sub Auteur : Denis Michon
- choisir dans les options (que tu n'aimes pas si j'ai compris),
- ou les supprimer et ajouter une image à la UserForm (".picture")
- ou les faire (en images ou avec des objets cadres) et les ajouter à la UserForm.
C'est du bricolage. Tout dépendant du niveau désiré.
ESVBA
Merci pour l'aide mais j'avais deja trouver ce code mais il ne fonctionne pas.
La couleur de la barre titre est toujours bleu
salut
Il te faut comprendre les points suivants :
- le code montré modifie les paramètres de configuration d'affichage du système (toutes les fenêtres pas seulement la fenêtre de ton application)
- ta constante COLOR_ACTIVECAPTION (valeur 2) concerne la fenêtre active. Lorsque tu es dans ton projet VBA et que tu passes en mode exécution, la fenêtre active n'est pas ton userform, mais celle de ton projet VBA.
Si tu veux en avoir la preuve, inhibe donc cette partie ;
puis clique sur projet VBA ... et constate la modification
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private sub UserForm_Deactivate() SetSysColors 1, COLOR_ACTIVECAPTION, OldColor end sub
De toutes manières et surtout : il est imprudent de modifier les paramètres de configuration (même en les rétablissant tels qu'ils étaient au déchargement) pour les raisons suivantes :
- toutes les fenêtres, de toutes les applications, les subiront tant qu'ils seront en cours
- qu'une interruption inopinée de ton appli survienne et ce seront ces nouveaux paramètres qui seront pris en compte, que tu le veuilles ou non, pour toutes les fenêtres actives !
Si tu tiens vraiment à une "barre de titre" personnalisée, il te faut donc :
- supprimer la barre de titre de ton userform
- lui substituer ce que tu souhaites (un Frame ferait l'affaire)
voilà.
Bonsoir à toi et ceux qui passeront par ici,
Dans un module ordinaire:
Dans ton USF:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Declare Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Declare Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Sub CACHER_BANDE_BLEUE(USF As UserForm) Dim hWnd& hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption) SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And Not &HC00000: DrawMenuBar hWnd End Sub
Et là, il n'y aura plus de bande bleue... Tu pourras remplacer le "Top = 0"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub UserForm_Initialize() CACHER_BANDE_BLEUE Me End Sub
d'un éventuel Label par: (Hum!!! – 15 ou autre, ou rien, je ne sais plus) , si tu veux.
Important il ne faudra pas oublier de créer un bouton avec "Unload me"Sinon: Alt + F4
Amicalement
Yann
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager