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

Contribuez Discussion :

[Sources][VBA] Transparence de fenêtre [Fait]


Sujet :

Contribuez

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut [Sources][VBA] Transparence de fenêtre
    a fonction API SetLayeredWindowAttributes, permet de modifier la transparence
    des fenêtres windows ..

    déclaration des fonctions à mettre dans 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
     
    '
    ' APIs gestion des fenêtres transparentes
    '
    Public Const GWL_EXSTYLE As Long = (-20)
    Public Const WS_EX_LAYERED As Long = &H80000
    Public Const LWA_COLORKEY As Long = &H1
    Public Const LWA_ALPHA As Long = &H2
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
                     ByVal hwnd As Long, _
                     ByVal nIndex As Long) As Long
     
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
     
    Public Declare Function SetLayeredWindowAttributes Lib "user32" _
    (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long
     
    ' Pour Excel ou Word, FindWindow.. afin de déterminer l'handle de la fenêtre
     
    Public Declare Function FindWindowA Lib "user32" _
            (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    rendre une fenêtre transparante

    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
     
    Private Sub UserForm_Initialize()
        Dim MeHwnd As Long
        'Recupere le handle de la fenêtre
         MeHwnd = FindWindowA(vbNullString, Me.Caption)
     
        'Rajoute l'attribut transparent à la fenêtre..
        SetWindowLong MeHwnd, GWL_EXSTYLE, _
        GetWindowLong(MeHwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
     
        'Definie la transparence de la fenêtre
        '125 = Taux de transparence de 0 à 255
        SetLayeredWindowAttributes MeHwnd, 0, 125, LWA_ALPHA
     
    End Sub
    SetLayeredWindowAttributes permet aussi de rendre une couleur transparente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub UserForm_Initialize()
        Dim MeHwnd As Long
        'Recupere le handle de la fenêtre
         MeHwnd = FindWindowA(vbNullString, Me.Caption)
     
        'Rajoute l'attribut transparent à la fenêtre..
        SetWindowLong MeHwnd, GWL_EXSTYLE, _
        GetWindowLong(MeHwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
         Me.BackColor = vbBlue 'Passe la couleur de fond en bleu avant de la
        'rendre tansparante
        SetLayeredWindowAttributes MeHwnd, vbBlue, 0, LWA_COLORKEY
     
    End Sub
    ci-joint un exemple sous excel 2000
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    la transparence d'une form est déjà dans la FAQ VB

    http://vb.developpez.com/faq/?page=Form#transparence

    Je peux compléter avec la transparence d'une couleur
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Candidat au Club
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Changer la couleur transparente
    Bonjour, je voulais savoir comment je peux changer la transparence d'une couleur à 60% au lieu de ce que l'exemple montre qui est à la pleine transparence ou 0. merci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ' Rendre invisible une couleur
    Private Sub CdbJaune_Click()
      ' Pour mémoire vbYellow = &Hffff& = 65535
      SetLayeredWindowAttributes MeHwnd, vbYellow, 0, LWA_COLORKEY
    End Sub
    Private Sub CdeBleu_Click()
      'Pour mémoire : vbBlue = &HFF0000
      SetLayeredWindowAttributes MeHwnd, vbBlue, 0, LWA_COLORKEY
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un classeur en démonstration : Comment appliquer une transparence dans un userform ?

    Philippe

  5. #5
    Candidat au Club
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour le lien. Oui, je suis en train de rendre le fond transparent userform MAIS je veux que tous les contrôles pour ne pas être transparent. Par exemple de l'OP-ce que cela en utilisant une couleur, mais elle rend totalement transparent et je veux seulement 60% transparent.

    Rappel ... Notez, je voulais juste le fond userform transparente à 60%, puis à tous ses contrôles ne pas être transparent.

Discussions similaires

  1. [Source][VBA-E] Remplir une zone de liste Excel par une requête Access
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/01/2007, 13h26
  2. [Sources][VBA-O] Addon outlook challenge
    Par SpaceFrog dans le forum Contribuez
    Réponses: 12
    Dernier message: 08/11/2006, 09h53
  3. Etat avec source VBA
    Par Sam 069 dans le forum Access
    Réponses: 3
    Dernier message: 17/07/2006, 13h05
  4. [VBA-E]Dimensions fenêtre
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/03/2006, 14h36

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