Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Général VBA > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, codes sources, astuces pour VBA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/09/2006, 07h55   #1
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 350
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 350
Points : 22 982
Points : 22 982
Envoyer un message via Skype™ à bbil
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 :
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 :
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 :
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
Type de fichier : zip transparent.zip (18,5 Ko, 149 affichages)
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 08h24   #2
ThierryAIM
Responsable Visual Basic

 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 671
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 50
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 671
Points : 8 320
Points : 8 320
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

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2013, 18h09   #3
oxicottin
Invité de passage
 
Lycéen
Inscription : 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 :
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
oxicottin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2013, 18h39   #4
Philippe JOCHMANS
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 18 473
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 45
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 18 473
Points : 40 673
Points : 40 673
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

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

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Vous pouvez consulter mes articles sur Access et PowerPoint

Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2013, 18h52   #5
oxicottin
Invité de passage
 
Lycéen
Inscription : 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
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.
oxicottin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h21.


 
 
 
 
Partenaires

Hébergement Web