Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Userform non modal n'arrete pas le programme

2 réponses
Avatar
AndréXS
Bonjour à tous

J'ai eu besoin de maintenir un filtre pendant qu'on écrivait sur la feuille
de calcul
J'ai donc mis une userform avec un bouton OK pour, une fois terminées les
corrections , oter le filtre par la suite de la macro

Cette macro devait fonctionner sous excel 97 comme ...2003...

On m'a donné ici le code suivant :

sur la Userform

Private Sub UserForm_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub

Private Sub UserForm_Initialize()
'place une case pour possibilité de réduire la boite
'Dim hWnd As Long
'hWnd = FindWindowA(vbNullString, Me.Caption)
'SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le
bouton OK ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

---------------

dans le code

#If vba6 Then
'excel 2000 ....
DialogPourUn.Show 0
#Else
'excel 95 et 97
DialogPourUn.Show
#End If

------------

Ca marche au poil pour excel 97 mais pour excel 2000, la boite est bien non
modale mais... n'arrete pas le code ! si bien que le filtre n'est pas
maintenu et la boite de dialogue ne sert à rien

Qui peut m'indiquer la modification à apporter ...
Oter le zero rends la boite modale donc pas possible d'ecrire derrière...
supprimer tout le texte des macros userform n'améliore rien pour excel 2000

Merci d'avance...

André

2 réponses

Avatar
AndréXS
En fait j'ai fini par mettre la partie finale du code dans le bouton OK de
l'userform..
je n'ai pas encore testé sur excel 2000 mais ce devrait etre bon

il faut que l'utilisation de l'userforem soit à la fin de la macro qui le
lance...


"AndréXS" <xschiltz> a écrit dans le message de news:

Bonjour à tous

J'ai eu besoin de maintenir un filtre pendant qu'on écrivait sur la
feuille de calcul
J'ai donc mis une userform avec un bouton OK pour, une fois terminées les
corrections , oter le filtre par la suite de la macro

Cette macro devait fonctionner sous excel 97 comme ...2003...

On m'a donné ici le code suivant :

sur la Userform

Private Sub UserForm_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub

Private Sub UserForm_Initialize()
'place une case pour possibilité de réduire la boite
'Dim hWnd As Long
'hWnd = FindWindowA(vbNullString, Me.Caption)
'SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le
bouton OK ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

---------------

dans le code

#If vba6 Then
'excel 2000 ....
DialogPourUn.Show 0
#Else
'excel 95 et 97
DialogPourUn.Show
#End If

------------

Ca marche au poil pour excel 97 mais pour excel 2000, la boite est bien
non modale mais... n'arrete pas le code ! si bien que le filtre n'est pas
maintenu et la boite de dialogue ne sert à rien

Qui peut m'indiquer la modification à apporter ...
Oter le zero rends la boite modale donc pas possible d'ecrire derrière...
supprimer tout le texte des macros userform n'améliore rien pour excel
2000

Merci d'avance...

André





Avatar
JpPradier
Bonsoir AndréXS

Si tu veux que le code s'arrete avec l'userform, il faut que celui-ci soit modal et donc :
#If vba6 Then
'excel 2000 ....
DialogPourUn.Show 1
#Else
'excel 95 et 97
DialogPourUn.Show
#End If


j-p