Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA : Ordre dans l'exécution des Private Sub ???

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 !

Besnard68

XLDnaute Occasionnel
Bonjour Forum,

Beug ou pas ?

Dans une application que je créé actuellement, je constate le fait suivant :

- J'ai 2 contrôles qui sont :

* TextBox1
* CommandButton1 (Qui ferme la UserForm1)

- J'ai 2 Private Sub qui sont :

* Une Private Sub TextBox1_Exit
* Une Private Sub UserForm1_QueryClose

Alors que TextBox1 a la focus, je clique sur CommandButton1 pour fermer la UserForm1.

Je pensais, à tort à priori, que l'ordre d'exécution des Private Sub allait être le suivant : D'abord TextBox1_Exit, puis UserForm1_QueryClose.

En fait, c'est l'inverse qui se produit : VBA exécute d'abord 'QueryClose' puis 'TextBox1_Exit'.

C'est pour moi un non sens car les instructions que j'avais positionné dans 'TextBox_Exit' sont primordiales et doivent valider préalablement des données que la PrivateSub 'QueryClose' enregistre ensuite sur une feuille excel.

Dans ce cas de figure, il résulte donc que QueryClose a enregistré des données fausses puisqu'elles n'ont pas été 'corrigées' par les intructions de TextBox_Exit.

Auriez-vous déjà constaté ceci ?
Si oui, auriez-vous une 'parade' permettant d'éviter cette priorité bien génante ?


Merci d'avance pour votre aide.
 
Re : VBA : Ordre dans l'exécution des Private Sub ???

Bonjour

je viens de faire l'essai que tu décris
En ayant le focus dans le textbox :
Click sur le CommandButton, j 'ai d'abord l'événement Exit du TextBox ensuite j'ai le focus sur le CommandButton et il faut un click suppléméntaire pour quitter sur l'usf
Click sur la croix de fermeture, j'ai l'événement Exit du TextBox et je quitte l'usf
Version 2003


Donc pas de soucis

Edit: Je viens de voir tu as XL 2000
 
Re : VBA : Ordre dans l'exécution des Private Sub ???

Bonsoir Banzai64, Re Forum,

Je viens de tester à nouveau et malheureusement c'est tjrs pareil.

Si ça marche chez toi avec la version 2003, c'est donc qu'il s'agit bien d'un beug dans ma version 2002.

C'est quand même rageant 😡 !!!

Merci pour ton aide.

Bonne soirée et Bonne fêtes de fin d'année.
 
Re : VBA : Ordre dans l'exécution des Private Sub ???

Bonsoir Besnard, Banzai eet tout le forum,

Il ne me semble pas avoir, au lire de ton post, qu'il y ait des particularités entre 2000/2002/2003...

Ce n'est pas pas, non plus, ton fichier joint (zippé) qui permet d'affirmer le contraire...

C'est rageant de ne pas avoir de fichier sur lequel travailler...

Bonne soirée aussi et Bonnes fêtes, mais sans rien, on ne peut faire grand-chose.
 
Re : VBA : Ordre dans l'exécution des Private Sub ???

Bonsoir Jean-Pierre,

Voici le fichier en question.

Désolé, mais comme il fait partie d'une plus grosse application, il m'a fallu le réduire à sa plus simple expression.


Merci pour votre aide.
 

Pièces jointes

Re : VBA : Ordre dans l'exécution des Private Sub ???

Bonsoir Besnard, Jean-Pierre, Banzai

Pas tout compris, petite question idiote sans doute, quel est l'intérêt d'alimenter un textbox lors de sa sortie, par un texte fixe qui est ensuite utilisé dans l'événement "querryclose" comme suit :

Code:
Sheets("Param_société").Range("B89").Value = TxtBx_Cpteur_Devis.Value

autant mettre directement :

Code:
Sheets("Param_société").Range("B89").Value = "Devis"

d'autre part pourquoi utiliser l'événement "querryclose", ce dernier est plus souvent utilisé pour contoler le type de fermeture. J'utiliserais plutôt l'événement "Terminate", qui me semble t il est le dernier à se déclencher.

Enfin c'est juste mon avis, je n'ai sans doute pas toutes les données du problème...

bonne soirée
@+
 
Re : VBA : Ordre dans l'exécution des Private Sub ???

Bonsoir Pierrot,

En réponse à ta question, je précise à nouveau que j'ai réduit le problème à sa plus simple expression, pour 'centrer le débat' sur le problème que je rencontre.

L'application complète intègre bien entendu d'autres lignes de procédures dans la Private Sub TextBox1_Exit, qui doivent impérativement être exécutées avant même l'exécution de 'QueryClose'.

Hormis le fait que la taille du fichier complet aurait été importante, vous donner l'ensemble des procédures n'aurait rien apporté de plus.

Cordialement
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…