IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Couleur barre titre Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Couleur barre titre Userform
    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

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonsoir Raikko68, le forum
    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 :

    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
    Pour les bordures, il faut :
    • 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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    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

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    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 ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private sub UserForm_Deactivate()
       SetSysColors 1, COLOR_ACTIVECAPTION, OldColor
     end sub
    puis clique sur projet VBA ... et constate la modification

    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à.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Points : 40
    Points
    40
    Par défaut Re Bandeau de Titre
    Bonsoir à toi et ceux qui passeront par ici,

    Dans un module ordinaire:

    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
    Dans ton USF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    CACHER_BANDE_BLEUE Me
    End Sub
    Et là, il n'y aura plus de bande bleue... Tu pourras remplacer le "Top = 0"
    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

Discussions similaires

  1. Barre titre d'une Userform
    Par taratata dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2008, 02h57
  2. Fenêtre sans barre titre et avec bordures
    Par gbuxo dans le forum Access
    Réponses: 7
    Dernier message: 22/09/2006, 14h13
  3. Affichage barre titre
    Par jmjmjm dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 11/01/2006, 18h04
  4. [JFrame] Couleur barre de titre
    Par triscorp dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 29/10/2004, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo