Code userform interrompu

  • Initiateur de la discussion Initiateur de la discussion Oliver
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

Oliver

Guest
Bonjour le forum,

je travaille sous Excel 97 et j'ai un problème pour exécuter un code vba dans un userform.
J'ai 2 userform :
- Le premier est le formulaire de saisie des données.
- Le second est une fenetre d'attente.

Mon soucis est lorsque je clique sur le bouton 'valider' de mon 1er userform, j'affiche la fenetre d'attente pour indiquer que excel est en train de calculer, mais l'affichage de ce 2eme userform interrompt l'exécution du 1er (c'est le 1er qui calcule), bref, tant que je ne quitte pas le 2eme userform, le 1er ne peut pas continuer de travailler.

J'ai essayé de rendre mes userforms non modal, mais ca ne donne rien.
Est-il possible de faire des threads sous vba, pour faire de l'exécution parallèle ?

Je vous remercie d'avance pour les pistes de réponses.

Bonne journée 🙂
 
Bonjour olivier 🙂

Pourtant, la solution passe bien par l'affichage non modal de tes 2 usf.

encore faut-il savoir comment tu as précisé cette propriété.

pour excel97, il existe une procédure particulière expliquée dans ce post.

Lien supprimé

salut
 
Salut,
j'utilise ce code de S.Bullen, trouvé sur ce forum :

Option Explicit ' (USERFORM NON-MONDAL sous XL97 De Stephen Bullen)

Private Declare Function FindWindowA Lib 'User32' _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function EnableWindow Lib 'User32' _
(ByVal hWnd As Long, ByVal bEnable As Long) As Long

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 Sub UserForm_Activate()
EnableWindow FindWindowA('XLMAIN', Application.Caption), 1
End Sub

Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub

Ce code est présent sur mes 2 userforms, mais bloque toujours le code. Peut-etre y a t'il une option à cocher dans Excel ?

Merci bcp pour ton aide 🙂

Bon après midi
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
38
Affichages
486
Réponses
3
Affichages
514
Réponses
5
Affichages
696
Retour