OVH Cloud OVH Cloud

qui utilise une macro

1 réponse
Avatar
phb56
Bonjour,

Je dois documenter un gros classeur Excel réalisé par quelqu'un qui a
quitté l'entreprise (une dizaine de feuilles, 200 macros) et j'ai
parfois du mal à trouver ce qui utilise ces macros.

C'est facile quand c'est du code ou quand c'est appelé depis un menu
créé dynamiquement dans le code.

Mais comment faire quand la macro est appelée depuis un bouton ?

Il y en a une centaine répartis un peu partout dans le classeur et je
procède en les éditant les uns après les autres pour voir quelle macro
ils appellent.

Y a-t-il un moyen de faire l'inverse et de connaître le ou les objets
qui appellent une macro ?

Merci d'avance

1 réponse

Avatar
Rai
Bonjour,

Tu peux peut-être lister tous les objets graphiques du classeur et les
macros associées.
Si uniqument les objets formulaire ont des macros affectéés, il faudra
tester la propriété 'Type' :

Une base de travail :

Sub listmacros()
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Listing"

For Each ws In Sheets
For Each bt In ws.Shapes
lig = lig + 1 'compteur de lignes pour le listing
t = bt.Type 'type de contrôle
m = bt.OnAction 'macro affectée
n = bt.Name 'nom du contrôle
' si t = msoFormControl (c'est à dire 8)
' alors c'est un bouton
' ou autre objet de formulaire
If t = msoFormControl And n <> "" Then
With Sheets("Listing")
.Cells(lig, 1) = ws.Name
.Cells(lig, 2) = n
.Cells(lig, 3) = m
End With
End If
Next bt
Next ws
End Sub


Bon travail

Rai

Bonjour,

Je dois documenter un gros classeur Excel réalisé par quelqu'un qui a
quitté l'entreprise (une dizaine de feuilles, 200 macros) et j'ai
parfois du mal à trouver ce qui utilise ces macros.

C'est facile quand c'est du code ou quand c'est appelé depis un menu
créé dynamiquement dans le code.

Mais comment faire quand la macro est appelée depuis un bouton ?

Il y en a une centaine répartis un peu partout dans le classeur et je
procède en les éditant les uns après les autres pour voir quelle macro
ils appellent.

Y a-t-il un moyen de faire l'inverse et de connaître le ou les objets
qui appellent une macro ?

Merci d'avance