Tout est dans le sujet.
Merci par avance pour vos nombreuses réponses![]()
Tout est dans le sujet.
Merci par avance pour vos nombreuses réponses![]()
Bonjour Ouskel'n'or
Peut-être avec les API, regarde à transparence dans la FAQ VB.
Starec
C'est là.
Starec
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
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
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
Et sur la form
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
Avec le chiffre comme transparence (de 0 rien à 100 opaque)
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
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
Partager