Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro regroupant des macros

17 réponses
Avatar
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

10 réponses

1 2
Avatar
Jacquouille
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
Avatar
MichD
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
---------------------------------------------------------------
Avatar
MichD
J'ai omis de mentionner que la référence doit être ajoutée
au classeur de macros personnelles.

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

Manu

"MichD" a écrit dans le message de news:
kt8c1g$ush$
J'ai omis de mentionner que la référence doit être ajoutée
au classeur de macros personnelles.

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

Avatar
MichD
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
---------------------------------------------------------------
Avatar
Manu
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" a écrit dans le message de news:
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
---------------------------------------------------------------

Avatar
MichD
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
---------------------------------------------------------------
Avatar
Manu
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" a écrit dans le message de groupe de
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
---------------------------------------------------------------

Avatar
Manu
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" a écrit dans le message de groupe de
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
---------------------------------------------------------------

Avatar
MichD
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
---------------------------------------------------------------
1 2