Bonjour à tous,
Je crée actuellement un tableau de bord munit d'un userform qui fait office de page d'acceuil, et qui par le biais de boutons ouvre différents userform (7 au total).
Afin d'adapter l'outil aux différents utilisateurs, j'ai codé de telle sorte que l'userform principal s'adapte à la résolution de l'écran et que sa taille soit modifiable par action de la souris (comme une fenêtre classique).
Je voudrais faire de même pour les autres userform du programme, mais je ne voudrais pas avoir à copier coller 7 fois le code (imaginez la lourdeur).
Est-il possible de créer les procédures avec comme paramètre le userform ?
Un exemple concret :
Dans un module standard :
Puis dans le module de l'userform :
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 Public largeurbouton(), hauteurbouton(), leftbouton(), topbouton() As String Public w As Integer Public ctrl As Control Public largeure_usf, hauteure_usf As Long Sub determine() hauteure_usf = UserForm1.Height largeure_usf = UserForm1.Width w = 0 For Each ctrl In UserForm1.Controls w = w + 1 ReDim Preserve largeurbouton(w) largeurbouton(w) = ctrl.Width ReDim Preserve hauteurbouton(w) hauteurbouton(w) = ctrl.Height ReDim Preserve topbouton(w) topbouton(w) = ctrl.Top ReDim Preserve leftbouton(w) leftbouton(w) = ctrl.Left Next End Sub
Je voudrais pouvoir écrire
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 Private Sub UserForm_Initialize() Ouverture = True Usf_Visible = True Nom_Classeur = ThisWorkbook.Name determine 'appele la procedure qui va memoriser la taille et position de chaque controls hwnd = FindWindow(vbNullString, Me.Caption) wLong = GetWindowLongA(hwnd, GWL_STYLE) Or WS_SIZEBOX Or WS_TROIS_BOUTON 'si apostrophe devand il n'y a plus de bouton juste un cadre mince SetWindowLong hwnd, GWL_STYLE, wLong 'applique le style a l'userform With UserForm1 .StartUpPosition = 3 .Width = Application.Width - 2 .Height = Application.Height - 3 End With End Sub
Call determine (userform)
Merci d'avance pour votre réponse
Partager