Initialisation de deux UserForm! - VB/VBA/VBS - Programmation
Marsh Posté le 31-05-2006 à 19:29:28
j'ai en plus l'impression qu'on ne peut pas renomer userform_initialize en userform_initialize1 puis 2 ...
mama mia help!
Marsh Posté le 31-05-2006 à 19:36:33
en gros le pb c'est comment aller dans le bon module (UserForm1 ou UserForm2), sans passer par une fonction....donc sans pourvoir récupérer une valeur d'etat des bouton qui font apparaitre l'userForm....
c'est galere n'est ce pas!
++
Marsh Posté le 31-05-2006 à 19:20:02
Bonsoir
Voila j'ai une feuille excel avec deux bouton.
l'action sur l'un des deux boutons entraine l'affichage d'un userform, qui est initialisé avec private sub UserForm_Initialize
J'ai l'impression que cette sub est intrinseque a vb. car je voudais la transformer en fonction afin d'initialiser le userform approprié à l'action sur le bouton.
voila mon code :
Private Sub CommandButton2_Click()
Dim logical As boolean
logical = commandbutton2.Value
UserForm_Initialize(logical)
End Sub
Private Sub CommandButton3_Click()
....'c'est le meme principe que sauf que l'on force logical à false
End Sub
Function UserForm_Initialize(etat_boutton as boolean)
Dim MyUser As UserForm
If logical = True Then
Set MyUser = UserForm1
Else
Set MyUser = UserForm2
End If
End Function
apres ca se complique car et je n'ai jamais tres bien compris prkoi le set Myser
va dans la partie d'initialisation a proprement parlé
le code
'a mettre toujours au debut dans le user pettons le mettre dans un module à part? je pense que c'est de
la que vient mon erreur
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Function UserForm_Initialize(etat_bouton As boolean) 'ici vba rale a la compilation car il trouve deux fct 'semblable alors qu'a l'origine avec Private Sub UserForm_Initialize ya pas de probleme, mais bon moi j'ai deux user a 'initialiser...
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D" ) & "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
UserForm1.Show ou UserForm2.Show selon le Set MyUser = UserForm..dependant de l'etat du bouton
EtiquetteErreur:
For i = 1 To 100
On Error GoTo zut
MyUser.Show
Next i
End
zut:
Resume Next
End Sub
Si vous pouvez m'aider ca serait cool, j'ai envie de diminuer la taille du code c'est pourcela que j'aimerai faire une fonction.
BYe
lden
Message édité par lden le 02-06-2006 à 09:24:00