Tout est dans le sujet.
Merci par avance pour vos nombreuses réponses :mouarf:
Version imprimable
Tout est dans le sujet.
Merci par avance pour vos nombreuses réponses :mouarf:
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 formCode:
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:
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 :zekill:
A+
Starec
T'inquiète pas, je vais te citer :twisted: J'y vais même de ce pas :mouarf:
Bref, il me manque encore quelque chose. Mais là, je vais être occupé à autre chose, alors si tu veux faire en sorte que tout baigne dans l'huile, ne te gène pas, je copierai ton code dans Contribuez :mouarf2:
A+
Qu'est-ce qu'il te manque
Tiens un exemple
Un grand merci, Sterec, tu devrais placer ton classeur dans Contribuez ;)
Edit
C'est fait ! Merci