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 :

Peut-on rendre un userform transparent ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut Peut-on rendre un userform transparent ?
    Tout est dans le sujet.
    Merci par avance pour vos nombreuses réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Ouskel'n'or

    Peut-être avec les API, regarde à transparence dans la FAQ VB.

    Starec

  3. #3
    Invité
    Invité(e)
    Par défaut
    C'est .

    Starec

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci Sterec, j'ai regardé le lien, hélas, il fonctionne parfaitement en VB mais transposé en VBA, il ne reconnaît pas certaines fonctions.
    Je ne connais pas (plus) assez VB pour savoir ce que je dois modifier et si je peux adapter.
    Si tu peux jeter un oeil savant Pièce jointe 15318
    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Je vais tester ce soir, j'ai déjà utilisé les API pour faire des formulaires Arrondis avec Access, je vais essayer de trouver le truc.

    Je te donne la réponse dés que possible.

    A +

    Starec

  6. #6
    Invité
    Invité(e)
    Par défaut
    BINGO

    Re Ousk,

    J'ai trouvé, en fait le problème avec l'UserForm, c'est qu'elle n'est pas de Handle, donc avec un code de la FAQ VBA, j'ai trouvé comment le récupérer.

    dans une module tu mets
    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
    ' ===== pour gérer la transparence =====
    Public Declare Function SetLayeredWindowAttributes Lib "user32.dll" ( _
         ByVal hwnd As Long, _
         ByVal crKey As Long, _
         ByVal bAlpha As Byte, _
         ByVal dwFlags As Long) As Long
     
    Public Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _
         ByVal hwnd As Long, _
         ByVal nIndex As Long, _
         ByVal dwNewLong As Long) As Long
     
    Public Const WS_EX_LAYERED As Long = &H80000
    Public Const LWA_ALPHA As Long = &H2
    Public Const GWL_EXSTYLE As Long = -20
     
    ' ===== pour récupérer le handle de l'user form =====
     
    Public Declare Function FindWindowA Lib "user32" _
            (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
     
    Public Sub Transparence(handle, alpha As Long)
        ' cette routine va être appelé dans l'user form
        SetWindowLong handle, GWL_EXSTYLE, WS_EX_LAYERED
        SetLayeredWindowAttributes handle, 0, 255 * alpha / 100, LWA_ALPHA
    End Sub
    Et sur la form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Initialize()
        ' ===== on va récupérere le handle de la form =====
        Dim MeHwnd As Long
        MeHwnd = FindWindowA(vbNullString, Me.Caption)
        'MsgBox "le Handle de l'Userform " & Me.Caption & " est : 0x" & Hex(MeHwnd)
        Call Transparence(MeHwnd, 50)
     
     
    End Sub
    Avec le chiffre comme transparence (de 0 rien à 100 opaque)

    Si tu veux tu peux peut-être en faire une contribution, tous les codes sont dans la FAQ VBA et la FAQ VB.

    Tu me cites sinon

    A+

    Starec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#]Comment rendre un label transparent ?
    Par Kcirtap dans le forum Windows Forms
    Réponses: 20
    Dernier message: 05/08/2009, 16h35
  2. [SWING][GlassPane] comment rendre un fond transparent ?
    Par PoPeio dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/04/2006, 01h55
  3. [FLASH 8] Rendre un symbole transparent
    Par TERRIBLE dans le forum Flash
    Réponses: 2
    Dernier message: 06/04/2006, 00h32
  4. Réponses: 4
    Dernier message: 01/02/2006, 09h47
  5. Rendre le fond transparent dans une picturebox
    Par fun31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/01/2005, 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