Lancer une macro a partir d'un menu deroulant?

  • Initiateur de la discussion Initiateur de la discussion BoSo
  • 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 !

B

BoSo

Guest
Bonjour tout le monde, est il possible de lancer une macro via un menu deroulant? Si oui, pourriez vous m'expliquer la demarche a suivre?
 
Bonjour BoSo, le Forum

Ta question est vraiment trop succinte...

Quelle Sorte de 'Menu Deroulant' ???

[li]Une Liste de Validation sur Feuille Excel[/li]
[li]Une ListBox (ou ComboBox) sur Feuille Excel (Barre d'Outils Formulaire)[/li]
[li]Un ActiveX ListBox (ou ComboBox) sur Feuille Excel (Barre Outils Contrôles)[/li]
[li]Un ActiveX ListBox (ou ComboBox) sur UserForm[/li]

En tout cas, ici une démo assez complète en UserForm qui lance des Macros depuis un Click sur une ListBox...

=> Fichier Démo Téléchargeable Lien supprimé

Bon Samedi
@+Thierry

Message édité par: _Thierry, à: 02/04/2005 14:00
 
=> DEMO Lancer macros depuis menus deroulants

Re Bonjour BoSo, le Forum

Tu sais il faut être patient, sur XLD tout vient à temps à celui qui sait attendre, nous ne sommes que de bénévols, alors il faut tout de même rester Zen. (voir notre Charte)

Je viens de regarder ton fichier, tu as une ComboBox de la Barre d'Outils Formulaires, pas le Top, ce sont des anciens outils, qui commencent à dater, leur préférer les ActiveX de la barre d'Outils Controls, sauf pour les Macs...

Donc voici ces barres d'outils :


Sinon donc voici une démo pour ce que tu cherches à faire, du coup je t'ai programmé les trois méthodes sur feuille :

[li]Lancer une macro depuis une ActiveX ComboBox sur Feuille Excel (Barre Outils Contrôles)[/li]
[li]Lancer une macro depuis une ComboBox sur Feuille Excel (Barre d'Outils Formulaire)[/li]
[li]Lancer une macro depuis une Liste de Validation sur Feuille Excel[/li]

Bonne Découverte et Bon Samedi
@+Thierry



[file name=XLD-Various-Combobox-Run-Macro_20050402153956.zip size=16675]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/XLD-Various-Combobox-Run-Macro_20050402153956.zip[/file]
 

Pièces jointes

Re:=> DEMO Lancer macros depuis menus deroulants

Re Salut' Thierry'
si tu repasses et je n'en doute pas
peux tu m'expliquer le pour quoi et à quoi servent les deux points
dans
Case 'Lundi': Lundi Source
je me suis posé la question lors de procèdure de tri de tableau ou il y a Tmp1=????:Tmp2=????
merci d'avance
Jean Marie
 
Re:=> DEMO Lancer macros depuis menus deroulants

Bonjour,
Le : remplace un retour à la ligne dans le code
Très utilisé en particulier dans les select case ou les instructions sont souvent courtes.
Ou pour définir des variables multiples...
Ou pour des Sub / Function de redirection ou très courtes.

Function TestC(): TestC = Selection.Count: End Function

Sub Test(): [A1:B12].Select: MsgBox TestC: End Sub

Ne fonctionne pas dans toutes les situations (en particulier contre indiqué dans certaines boucles
A+
 
Re:=> DEMO Lancer macros depuis menus deroulants

Re Bonjour Jean-marie, Galopin, BoSo, le Forum

Et bien le 'Galopin' t'a fort bien répondu, pour la partie principale, mais en général on peut l'utiliser dans les boucles par exemple celle ci de tri :

For i = LBound(Tablo, 2) To UBound(Tablo, 2)
       
For j = LBound(Tablo, 2) + ii To UBound(Tablo, 2)
       
If Descending = False Then
           
If Tablo(C0, i) > Tablo(C0, j) Then
                Tmp1 = Tablo(0, j)
[color=FF0000]:[/color] Tmp2 = Tablo(1, j) [color=FF0000]:[/color] Tmp3 = Tablo(2, j) [color=FF0000]:[/color] Tmp4 = Tablo(3, j)
                Tablo(0, j) = Tablo(0, i)
[color=FF0000]:[/color] Tablo(1, j) = Tablo(1, i) [color=FF0000]:[/color] Tablo(2, j) = Tablo(2, i) [color=FF0000]:[/color] Tablo(3, j) = Tablo(3, i)
                Tablo(0, i) = Tmp1
[color=FF0000]:[/color] Tablo(1, i) = Tmp2 [color=FF0000]:[/color] Tablo(2, i) = Tmp3 [color=FF0000]:[/color] Tablo(3, i) = Tmp4
           
End If
       
Else
           
If Tablo(C0, i) < Tablo(C0, j) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tmp1 = Tablo(0, j)
[color=FF0000]:[/color] Tmp2 = Tablo(1, j) [color=FF0000]:[/color] Tmp3 = Tablo(2, j) [color=FF0000]:[/color] Tmp4 = Tablo(3, j)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tablo(0, j) = Tablo(0, i)
[color=FF0000]:[/color] Tablo(1, j) = Tablo(1, i) [color=FF0000]:[/color] Tablo(2, j) = Tablo(2, i) [color=FF0000]:[/color] Tablo(3, j) = Tablo(3, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tablo(0, i) = Tmp1
[color=FF0000]:[/color] Tablo(1, i) = Tmp2 [color=FF0000]:[/color] Tablo(2, i) = Tmp3 [color=FF0000]:[/color] Tablo(3, i) = Tmp4
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp;
Next j
ii = ii + 1
Next i


(NB Extrait de cette démo de Ouf Lien supprimé)

Imaginons que je n'ai pas utilisé les ':' et à la place sauté une ligne à chaque fois...... Bonsoir la lisibilité du code LOL !!!

Bonne Fin de Journée
@+Thierry


PS : Je crois bien que l'un de mes copains Michel (MichelXLD ou Michel_M) avait d'ailleurs sur ce Forum donné le nom de ce genre de boucles pour effectuer un Algo de Tri, mais impossible de me remémorer ce nom à consonnance rigolote d'ailleurs... Si quelqu'un peut combler ce trou de mémoire !!

Message édité par: _Thierry, à: 02/04/2005 18:34
 
Merci bcp pour vos reponses a tous.
Cependant thierry tes explications me paraissent compliqué, je n ai qu un niveau basique sur excel, j aimerai bien que tu m explique pas a pas la demarche a suivre stp.
En plus quand je clik voir code sur le fichier que tu m as envoyé un message me dit 'impossible de trouver la macro xld-various-.....'.
 
Re Bonsoir

C'est toi 'BoSo' ou bien 'FyeS' ?

Sinon je viens de re-télécharger ma démo 'XLD-Various-Combobox-Run-Macro_20050402153956.zip' et je n'ai aucun problème avec les boutons 'voir le code'

Est-ce que les macros fonctionnent pour le 'menus Déroulants' sinon ?

Si quelqu'un peut tester ?

Sinon pour ton problème, alors tu continue comme tu as fait sur ton fichier et tu utilises une macro comme ceci :

Sub MacroAssigneeAuMenuDeroulant()
&nbsp; &nbsp;
Select Case Sheets('Feuil1').Range('B1').Value
&nbsp; &nbsp;
Case 1: Lundi
&nbsp; &nbsp;
Case 2: Mardi
&nbsp; &nbsp;
Case 3: Mercredi
&nbsp; &nbsp;
Case 4: Jeudi
&nbsp; &nbsp;
Case 5: Vendredi
&nbsp; &nbsp;
Case 6: Samedi
&nbsp; &nbsp;
Case 7: Dimanche
&nbsp; &nbsp;
End Select
End Sub

Sub Lundi()
MsgBox 'Vous avez cliqué sur Lundi'
End Sub

Sub Mardi()
MsgBox 'Vous avez cliqué sur Mardi'
End Sub

Sub Mercredi()
MsgBox 'Vous avez cliqué sur Mercredi'
End Sub

Sub Jeudi()
MsgBox 'Vous avez cliqué sur Jeudi'
End Sub

Sub Vendredi()
MsgBox 'Vous avez cliqué sur Vendredi'
End Sub

Sub Samedi()
MsgBox 'Vous avez cliqué sur Samedi'
End Sub
Sub Dimanche()
MsgBox 'Vous avez cliqué sur Dimanche'
End Sub



C'est le plus simple si tu débutes, tu copies ce code dans un module standard ensuite tu assignes la macro 'MacroAssigneeAuMenuDeroulant' à ton menu Déroulant, tu t'assures que tu as la cellule liée en 'Feuil1!B1' sinon tu changes le code en fonction...

Et bien s&ucirc;r tu changes les MsgBox par tes macros...

Bonne Soirée
@+Thierry
 
Bonsoir _Thierry, BoSo, ChTi160, galopin01, FyeS, le forum
Merci à _Thierry pour l'excellence du travail fourni tout à son honneur et à son humilité de rendre service à des gens simples que nous sommes. Soyons attentifs et respectueux du temps passé à concocter de telles démos qui nous sont ou seront nécessaires un jour.
Mes connaissances ne sont pas brillantes, mais chaque jour je sais que je trouverai sur ce forum de quoi passer des heures merveilleuses de découverte en découverte.
Je ne peux que dire merci, mais c'est la joie dans le coeur que je le dit.

Bonne soirée et bon dimanche à vous tous et toutes.
Jean
 
re' Thierry'
chez moi c'est bon
lorsqueFyeS fait voir code il doit peut être aller celon le cas
ex pour 1° liste dans la fenêtre Objet dans Combobox1 et non Général
ex pour 2° liste dans Module 2 procèdure et sélectionner
Zonecombinée2_QuandChangement()
ex pour 3° liste comme la une sélectionner Worksheet procèdure événementielle Change
en espérant faire avancer le SchimilimBlick
 
RE tout le monde,
FyeS et moi on bosse sur le meme dossier c'est pour qu il ta repondu a ma place tout a l heure!!!
Sinon pour les macros je commence a avancer grace a toi merci egalement aux autres!
J ai reussi a afficher la fenetre 'vous avez clike lundi' sur le menu deroulant et sur un bouton ton aide m a vraiment ete tres utile, cependant maintenant mon reel besoin c'est que cette fenetre ait deux boutons un 'OUI' et un 'NON' avec comme message 'SOMMES NOUS LUNDI?' et si on clik 'oui' la macro se lance et sinon rien ne se passe!

Je pense que ca doit etre possible mais je connais pas les codes a taper! Sais tu comment faire?
 
re ' Boso'
exemple dans le module 1 tu modifies les procèdures de la sort
Pour le Jeudi par exemple
Sub Jeudi(Source As String)
Dim rep As String
rep = MsgBox('Vous avez cliqué sur Jeudi depuis ' & Source & ' Sommes nous Jeudi???', vbYesNo, T)
If rep = vbYes Then MsgBox 'C'est bon Alors' 'ici action si Oui
End Sub
ceci est un exemple
Amicalement
Jean Marie
 
- 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
8
Affichages
275
Réponses
20
Affichages
619
  • Question Question
Microsoft 365 macro TCD
Réponses
4
Affichages
364
Réponses
7
Affichages
662
Retour