Lancer une macro a partir d'un menu deroulant?

  • Initiateur de la discussion BoSo
  • Date de début
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?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
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
 

_Thierry

XLDnaute Barbatruc
Repose en paix
=> 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

  • XLD-Various-Combobox-Run-Macro_20050402153956.zip
    16.3 KB · Affichages: 219

ChTi160

XLDnaute Barbatruc
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
 

galopin01

XLDnaute Occasionnel
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+
 

_Thierry

XLDnaute Barbatruc
Repose en paix
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
 
F

FyeS

Guest
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-.....'.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
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
 

Papy Novice

Nous a quitté
Repose en paix
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
 

ChTi160

XLDnaute Barbatruc
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
 
B

BoSo

Guest
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?
 

ChTi160

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 234
Messages
2 086 467
Membres
103 226
dernier inscrit
smail12