Macro regroupant des macros

Le
news.orange.fr
Bonjour,

Est-ce possible ? J'ai 8 macros dans le classeur de macros personnel, et je
souhaiterais n'avoir qu'un seul bouton qui puisse m'ouvrir une boite de
dialogue qui me permettrai de voir ces 8 macros et pour enfin choisir celle
que je souhaiterais lancer mais avec une sécurité du style que quand je
l'aurais choisis, un msgbox me demande si je souhaite poursuivre ou non.

Merci

Manu
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #25570502
Bonjour
La combinaison des touches ALT et F8 fait très bien cela ....

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


"news.orange.fr" a écrit dans le message de groupe de discussion :
kt81p1$21n$

Bonjour,

Est-ce possible ? J'ai 8 macros dans le classeur de macros personnel, et je
souhaiterais n'avoir qu'un seul bouton qui puisse m'ouvrir une boite de
dialogue qui me permettrai de voir ces 8 macros et pour enfin choisir celle
que je souhaiterais lancer mais avec une sécurité... du style que quand je
l'aurais choisis, un msgbox me demande si je souhaite poursuivre ou non.

Merci

Manu
MichD
Le #25570572
Bonjour,

Copie cette procédure dans un module dans un
nouveau module standard de ton fichier de macros
personnelles. Elle doit demeurer seule dans ce
module. Nomme ce module "MichD" - propriété "Name"
du module.

Les macros doivent être regroupées dans des modules standard
de ton fichier de macros personnelles et non dans des modules
feuilles.

Ne pas oublier d'ajouter la référence indiquée.

'-------------------------------------------
Sub ListeMacrosModule()

'Il faut ajouter la référence :
'"Microsoft Visual Basic For Application Extensibility 5.3"
'Dans la fenêtre de l'éditeur de code,
'Barre des menus / outils / référence et cocher
'la bibliothèque suggérée.

Dim Wbk As Workbook, Macro As String
Dim VBCodeMod As Object, Comp As Object, C As Object
Dim StartLine As Long, i As Long, X As Long, R As Variant

'Identifie le classeur source où sont les procédures
Set Wbk = ThisWorkbook

On Error Resume Next

i = 1
'Boucle sur tous les modules du projet, incluant le formulaire.
For Each C In Wbk.VBProject.VBComponents
Set Comp = C
Set VBCodeMod = Wbk.VBProject.VBComponents(C.Name).CodeModule

With VBCodeMod
If .Name <> "MichD" Then
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
X = X + 1
Message = Message & X & " - " & .ProcOfLine(StartLine, _
vbext_pk_Proc) & vbCrLf
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)

StartLine = StartLine + 1
i = i + 1
Loop
End If
End With
Next

R = Application.InputBox(Prompt:="Choisissez le numéro de la macro à
exécuter." & _
vbCrLf & vbCrLf & Message, Title:="Choix de la macro", Type:=1)

If R = False Then Exit Sub

Macro = Split(Message, vbCrLf)(R - 1)
Macro = "'" & ThisWorkbook.Name & "'!" & Right(Macro, Len(Macro) - 3)

'Exécution de la macro choisie
Application.Run Macro

Set VBCodeMod = Nothing: Set Comp = Nothing: Set C = Nothing
Set Wbk = Nothing
End Sub
'-------------------------------------------


MichD
---------------------------------------------------------------
MichD
Le #25570602
J'ai omis de mentionner que la référence doit être ajoutée
au classeur de macros personnelles.

MichD
---------------------------------------------------------------
Manu
Le #25570722
Merci Mich, j'ai bien suivi toutes les procédures et il ne se passe
absolument rien quand je lance la macro.

Manu

"MichD" kt8c1g$ush$
J'ai omis de mentionner que la référence doit être ajoutée
au classeur de macros personnelles.

MichD
---------------------------------------------------------------

MichD
Le #25570742
Voici un fichier exemple : http://cjoint.com/?CGEpL7HTS0c

Appelle la macro : "ListeMacrosModule"

Tu inscris dans la boîte de message le numéro de la liste choisi.

Dans ton cas, toutes les macros sont dans le fichier de macros personnelles
y compris la macro "ListeMacrosModule"


MichD
---------------------------------------------------------------
Manu
Le #25570822
Vraiment étrange, sur ton fichier joint, c'est nickel, sur personnal,
toujours rien (et ais refait la procedure) du coup, j'ai tenté sur un autre
fichier :
Module MichD, ton code
Module1 : mes macros

Et là, il y a un semblant de début, car il me met une boite où je dois taper
le N° de la macro et sans les voir dans la boite, contrairement à ton
fichier où je viens bien toutes les macros. Et même si je tape un N° de
macro, elle ne se lance pas.

Bizarre

Manu

"MichD" kt8fmq$9uq$
Voici un fichier exemple : http://cjoint.com/?CGEpL7HTS0c

Appelle la macro : "ListeMacrosModule"

Tu inscris dans la boîte de message le numéro de la liste choisi.

Dans ton cas, toutes les macros sont dans le fichier de macros
personnelles
y compris la macro "ListeMacrosModule"


MichD
---------------------------------------------------------------

MichD
Le #25570912
Tu dois charger la référence dans le fichier où tu
places ces macros :

Il faut ajouter la référence : '"Microsoft Visual Basic For Application
Extensibility 5.3"
dans la fenêtre de l'éditeur de code, barre des menus / outils / référence
et cocher
la bibliothèque suggérée.


MichD
---------------------------------------------------------------
Manu
Le #25571052
Je l'ai bien coché la référence, j'ai fait divers tests, mais rien de
concluant, il n'y a que ton fichier qui fonctionne... Je ne pige vraiment
pas
Je suis sur la V2007, ca change quelque chose ?

Manu

"MichD" discussion : kt8lai$qma$
Tu dois charger la référence dans le fichier où tu
places ces macros :

Il faut ajouter la référence : '"Microsoft Visual Basic For Application
Extensibility 5.3"
dans la fenêtre de l'éditeur de code, barre des menus / outils / référence
et cocher
la bibliothèque suggérée.


MichD
---------------------------------------------------------------

Manu
Le #25571142
Mais j'ai tout de même un doute, j'avais coché cette case lorsque j'étais
dans le fichier personal, puis j'ai constaté qu'elle étais toujours coché
même si j'étais dans un autre fichier, est-ce normal ? Ce qui me fais
douter, c'est ta phrase : "dans la fenêtre de l'éditeur de code"
Moi, j'ai l'impression que cette case coché est pour tout le VBA, je me
trompe ? Et je ne comprend pas ce que veux dire : " la bibliothèque
suggérée"...

Manu

"MichD" discussion : kt8lai$qma$
Tu dois charger la référence dans le fichier où tu
places ces macros :

Il faut ajouter la référence : '"Microsoft Visual Basic For Application
Extensibility 5.3"
dans la fenêtre de l'éditeur de code, barre des menus / outils / référence
et cocher
la bibliothèque suggérée.


MichD
---------------------------------------------------------------

MichD
Le #25571132
La liste des macros ne s'affiche pas dans la boîte de message?

Dans les premières lignes de la procédure, tu as cette ligne de code

On Error Resume Next

Désactive là. Est-ce que tu obtiens un message d'erreur à l'exécution
si oui, lequel?

Je ne vois pas pourquoi tu ne peux pas reproduire cela dans un autre
classeur!

Les versions Excel 2000 à 2013 devraient pouvoir exécuter ce code sans
problème.


MichD
---------------------------------------------------------------
Publicité
Poster une réponse
Anonyme