VBA Suspendre l'action d'un ComboBox

Bonjour à tous,

Private Sub ComboBox1_Change()
    Call AllerEn
End Sub

Peux-t-on suspendre momentanément cette action, sachant que j'ai d'autres macros

évènementielles qui doivent rester actives ?

amicalement

Claude.

Bonjour,

Pas facile de te donner une solution sans connaitre le critère.

Une idée serait de créer une variable de type Boolean qui mise à TRUE sortirait de la précédure via un EXIT SUB.

Donne plus d'explications ce sera plus facile.

Amicalement

Dan

Salut Dan,

je ne suis pas prêt à expliquer davantage, je ne sais pas trop ou je vais !

je pensais à un :

Application.EnableEvents = False

s'appliquant uniquement au comboBox1

ou alors : comboBox1 .visible = false ??? c'est possible çà !

Je galère avec ces listes (contrôle) et les macros qui vont avec.

c'est la suite de ce fil

https://www.excel-pratique.com/forum/viewtopic.php?t=5365

amicalement

Claude.

Re,

Dans ton fil précédent il y a trois macros :

En feuille 1 : Private sub combo

En feuille 2 : Private sub combo + une Sub

Sache que la Sub devrait être dans un module.

Les deux combos étant sur des feuilles séparées, je ne vois pas pourquoi tu veux suspendre des événements puisqu'il ne s'agit que d'exécuter une macro par la combo (ici AllerEn)

A te relire

Dan

re,

Dan, j'ai refait un fichier test plus explicatif quant à mes questions.

https://www.excel-pratique.com/~files/doc/liste_deroulante4.xls

Je ne crois pas que c'est comme çà qu'il faille écrire les codes "If"

Besoin d'aide pour bien démarrer

amicalement

Claude.

Bonsoir, Claude

Dans ton code, tu as inversé "actions" et "cours"......

De plus, en cellule liée, tu mets une cellule de l'onglet "listes" : [A1], et tu compares [A1] de l'onglet actif.....

regarde le début de correction dans le fichier joint :

https://www.excel-pratique.com/~files/doc/liste_deroulante4_1.zip

re,

Dans la macro "sub Anction"

Avant "Application.EnableEvents = False" mets --> On Error GoTo Message

Après "Application.EnableEvents = True" mets -->

Exit Sub

Message:

Application.EnableEvents = True

Pour le reste vois ce que Félix t'a donné.

La macro Sub cours peut être celle-ci après

Sub cours()
Select Case Range("B1")
Case "D1a": MsgBox ("Etoile")
Case "D1b": MsgBox ("future Etoile")
Case "D2": MsgBox ("cours D2")
Case "E1": MsgBox ("cours intermédiaire")
Case "E2": MsgBox ("cours inter")
Case "P1": MsgBox ("cours P1")
Case "P2": MsgBox ("cours P2")
Case "Ps": MsgBox ("cours débutant")
End Select
Range("C1").Activate
End Sub

Autre chose concernant tes liste déroulantes. FAites avec laboites à contrôles, elles ne sont pas disponibles sous MAC. Si tu les construis avec la boîtes à outils "formulaire", elles sont disponibles sous Windows et sous MAC.

Amicalement

Dan

Bonjour au forum,

merci Dan et felix,

J'ai quand même ajouter cette ligne :

Private Sub ComboBox2_Change()
If [listes!A1] = "Changement  de Cours" Then Exit Sub '**** Nouvelle ligne
    Call cours
End Sub

Je n'ai pas bien compris le "flag" !!!

voici ou j'en suis, çà semble marcher.

https://www.excel-pratique.com/~files/doc/liste_deroulante5.xls

Remarque :

dans ce cas précis, des listes 'formulaire" serait plus simple, si ce n'est le choix de la police

En tout cas, j'y vois + clair.

encore merci

PS: felix , pourquoi tu Zip des petits fichiers comme çà ?

amicalement

Claude.

Re,

dans ce cas précis, des listes 'formulaire" serait plus simple, si ce n'est le choix de la police

En tout cas, j'y vois + clair.

D'une manière générale sache que le fait de construire les boutons et listes à partir de la boite "formulaire" permet à n'importe quel utilisateur d'utiliser ton fichier qu'il utilise windows ou Mac OS.

De mon avis, c'est mieux de rendre les fichiers accessibles à tous.

A voir si Excel MAC 2008 a changé cela.

Je laisse le soin à Félix de te répondre aux questions que tu lui as posées.

Amicalement

Dan

bonjour à tous,

Je 'n'ai pas bien compris le "flag" !!!

qu'est-ce-que c'est ?

amicalement

Claude.

Bonsoir,

comme felix est là, je remonte en haut de page.

amicalement

Claude

Salut le forum

Comme je ne m'appelle pas Félix, je m'abstiens donc de répondre.

Mytå

Bonsoir,

Le Flag est une valeur booléenne qui peut donc n'avoir que 2 valeurs True ou False

Lorsque tu fais un changement dans ton combobox, l'évènement Change se déclance

au premier changement, le combo (sept-07) est donc mis au format sept-07

Cependant, comme on a de nouveau changé la valeur du combo, l'évènement Change se déclanche à nouveau, et donc VBA comprend la date comme 7 septembre, et transforme en sept-08

Pour éviter ce deuxième évènement, on vérifie que flag est à false, avant de continuer.

Comme au premier évènement, flag a été mis à True, on zappe le 2 ème évènement

Note que Flag est déclaré en Public dans un module

Bonne soirée

Bonsoir felix et au forum,

felix,

Merci pour ton explication, Faut-il faire pareil pour chaque ComboBox ?

amicalement

Claude.

Re-,

Faut-il faire pareil pour chaque ComboBox

Si tu as plusieurs combo, remplace flag par flag1, flag2.......chaque combo possédant son flag (PS, j'aurai pu mettre drapo, drapo1, ....)

re,

Ok, si j'ai 3 combobox, je peux donc écrire :

(si les macros liées aux combobox sont dans le même module.)

Public flag1, flag2, flag3 As Boolean

sinon je fais un "Public" dans chaque module se rapportant au combo.

C'est bien çà ??

merci pour ta patience, mais j'ai du mal à m'y faire !

Claude.

RE-,

non, il faut déterminer le type à CHAQUE variable, et dans un seul module standard, cela suffit

Toute variable définie en Public dans un module standard est valable pour le projet (ensemble des modules et des évènements de feuille ou des userforms)

Donc :

Public Flag1 As Boolean, Flag2 As Boolean, Flag3 As Boolean

re,

Bon, me reste plus qu'à mettre tout çà en application.

C'est là que je vois qu'il me manque les bases du VBA.

encore merci

à+......Claude.

Rechercher des sujets similaires à "vba suspendre action combobox"