Désactiver une macro usf

olive2b

XLDnaute Nouveau
Bonsoir le forum,

J'ai un usf dans lequel se trouvent 2 listbox ayant chacun une procédure '_Change'.
Est-il possible (et surtout, comment...) annuler la procédure listbox2 dans la procédure listbox1 ?
(Les deux procédures sont des private sub)

Merci, bonne soirée.
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir olive2b,

Pourrais-tu être un peu plus explicite dans tes explications ? Ce que tu demandes, est-ce d'empêcher l'activation de l'événement Change de LB2 lorsque tu es dans la procédure événementielle Change de LB1 ?

Dans ce dernier cas, tu peux l'écrire ainsi (dans LB1):

Application.EnableEvents = False
' Modification du contenu de LB2
Application.EnableEvents = True

Ne pas oublier cette dernière instruction !

A+ ;)
 

Hervé

XLDnaute Barbatruc
bonsoir olive, charly, tonton rené de charly

sinon, as-tu essayer d'utiliser l'evenement click des listbox.

charly, fais gaffe avec ces enableevents, si ton code n'est pas bétonné entre les deux lignes tu risques d'avoir des soucis pour récupérer la main en cas de bug (j'en sais quelque chose :sick:)

salut :)
 

Charly2

Nous a quittés en 2006
Repose en paix
re olive2b, bonsoir Hervé :)

Tu as raison pour EnableEvents et je suis tout confusionné :p

Habituellement, j'utilise une variable de module :

Dim InEvent As Boolean

Private Sub LB_Change
If Not InEvent Then
InEvent = True
' Mon code
InEvent = False
End If

Je pense que je vais m'en tenir à cette habitude ;)

A+
 

olive2b

XLDnaute Nouveau
Salut Charly, salut Hervé,

Tout d'abord, merci pour vos réponses que je n'ai pas encore essayé, je vais essayer d'être plus explicite comme vous le demandez:

Sur un usf, j'ai 2 listbox, donc, contenant des infos différentes mais relatives au même sujet (la référence fournisseur et le nom fournisseur), et je peux choisir d'afficher la fiche fournisseur soit par sa ref, soit par son nom.
Le problème est qu'avec la méthode exit, il faut un évènement, j'ai donc choisi 'Change'. Lorsque je change l'une des 2 LB, je ne comprends pas pourquoi je n'ai que ces deux infos qui s'affichent alors qu'en mettant une des 2 en 'Exit', ça fonctionne sans rien changer d'autre.

Voilà , j'espère avoir été compréhensible car je ne peux pas joindre mon fichier, trop conséquent...
Maintenant je file essayer vos propositions, merci encore et bonne soirée.
 

olive2b

XLDnaute Nouveau
Salut Charly, salut Hervé,

Tout d'abord, merci pour vos réponses que je n'ai pas encore essayé, je vais essayer d'être plus explicite comme vous le demandez:

Sur un usf, j'ai 2 listbox, donc, contenant des infos différentes mais relatives au même sujet (la référence fournisseur et le nom fournisseur), et je peux choisir d'afficher la fiche fournisseur soit par sa ref, soit par son nom.
Le problème est qu'avec la méthode exit, il faut un évènement, j'ai donc choisi 'Change'. Lorsque je change l'une des 2 LB, je ne comprends pas pourquoi je n'ai que ces deux infos qui s'affichent alors qu'en mettant une des 2 en 'Exit', ça fonctionne sans rien changer d'autre.

Voilà , j'espère avoir été compréhensible car je ne peux pas joindre mon fichier, trop conséquent...
Maintenant je file essayer vos propositions, merci encore et bonne soirée.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Hervé, Charly, Olive, le Forum

Ouh la, je suis un peu perplexe même avec tes explications complémentaires...

Qu'appelles-tu 'Méthode Exit' ? et qu'elle différence lui attribues-tu par rapport à ta phrase 'Il lui faut un évènement' ???

La 'méthode' exit que je connais est un évènement en soit :

Private Sub ListBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

C'est un peu embrouillé tout ça ?

Sinon dacodac avec Hervé pour ne pas privilégier l'Application.EnableEvents... Et Dacodac avec Charly pour une Boolean Publique niveau Private Module servant de 'Verrou'...

Pour le reste c'est trop 'touffu' pour pouvoir suivre sans un fichier...

Bon Courage et soirée
[ol]@+Thierry[/ol]
 

olive2b

XLDnaute Nouveau
Salut Charly, salut Hervé,

Tout d'abord, merci pour vos réponses que je n'ai pas encore essayé, je vais essayer d'être plus explicite comme vous le demandez:

Sur un usf, j'ai 2 listbox, donc, contenant des infos différentes mais relatives au même sujet (la référence fournisseur et le nom fournisseur), et je peux choisir d'afficher la fiche fournisseur soit par sa ref, soit par son nom.
Le problème est qu'avec la méthode exit, il faut un évènement, j'ai donc choisi 'Change'. Lorsque je change l'une des 2 LB, je ne comprends pas pourquoi je n'ai que ces deux infos qui s'affichent alors qu'en mettant une des 2 en 'Exit', ça fonctionne sans rien changer d'autre.

Voilà , j'espère avoir été compréhensible car je ne peux pas joindre mon fichier, trop conséquent...
Maintenant je file essayer vos propositions, merci encore et bonne soirée.
 

olive2b

XLDnaute Nouveau
Salut Thierry,

Désolé pour la répétition de la réponse, ma connection a du bugger...

Pour 'Exit', c'est bien un évènement et quand je parle 'd'évènement', il s'agit d'action sur une touche ou sur la souris...Je m'embrouille un peu avec les mots...
Je joins donc un fichier réduit au strict minimum, sachant que mon problème se situe au niveau de la référence fournisseur et de la raison sociale et que j'ai un fournisseur dont les données jusqu'à 'ville' sont enregistrées.

@+ et merci.
 

olive2b

XLDnaute Nouveau
Re Thierry,

Voilà enfin le fichier ! Forcément, quand on n'a que winrar, c'est un peu plus long...

Bonne soirée

[file name=PbUSF.zip size=28882]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PbUSF.zip[/file]
 

Pièces jointes

  • PbUSF.zip
    28.2 KB · Affichages: 16

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Olive, Hervé, Charly, le Forum

J'ai testé sur ton fichier avec des Boolean comme ceci :

Private VerrouLB1 As Boolean
Private VerrouLB2 As Boolean


Private Sub MultiPage1_Change()
'Blah Blah Blah (ta macro)
End Sub
Private Sub UserForm_Activate()
'Blah Blah Blah (ta macro)
End Sub

Private Sub reffourn2_change()
VerrouLB2 =
True
If VerrouLB1 = True Then Exit Sub

'Blah Blah Blah (ta macro)

VerrouLB2 =
False
End Sub
Private Sub raisoc2_change()
VerrouLB1 =
True
If VerrouLB2 = True Then Exit Sub

'Blah Blah Blah (ta macro)

VerrouLB1 =
False
End Sub

Mais hélas pour toi ça ne semble pas améliorer les choses... En l'état, je n'ai pas vraiment trop de temps à consacrer pour tout refaire, ce qui me semble être déjà pas très génial c'est les RowSources paramétrées en mode Design par la fenêtre propriété qui peuvent certainement poser (ou poseront) souci...

L'état général du module avec ces noms de controls arnarchiques rendent un travail d'optimisation bien plus difficile...

Voilà pour mon approche perso.

Je pense que tu devrais t'entrainer sur des démos de ce Forum pour comprendre des astuces pour alimenter ou vider tes contrôles ActivesX en masse par simples Boucles (et les nommer de manière plus conventionnelle aussi)

Bon Courage et soirée
[ol]@+Thierry[/ol]
 

Discussions similaires

Statistiques des forums

Discussions
312 482
Messages
2 088 766
Membres
103 955
dernier inscrit
mikaveli