OVH Cloud OVH Cloud

Macro modifie macro

2 réponses
Avatar
Beabou
Bonjour,

Je suis en train de réaliser un procédure vba qui modifie une autre macro.
J'ai besoin de rajouter une ligne de code dans cette macro.
Je connais le nom du module et le nom de la procédure mais pas le nom du
classeur (c'est ce qui me pose problème).

Merci de votre aide.
Beabou.

2 réponses

Avatar
bourby
bonjour,

pas sûr d'avoir bien compris.

Si le nom de la procedure n'existe pas dans un autre classeur:

faire des boucles imbriquées sur les classeurs, puis les modules, puis
le nom des procédures, jusqu'à trouver le bon nom.

Cordialement

Bourby


Beabou wrote:
Bonjour,

Je suis en train de réaliser un procédure vba qui modifie une autre macro.
J'ai besoin de rajouter une ligne de code dans cette macro.
Je connais le nom du module et le nom de la procédure mais pas le nom du
classeur (c'est ce qui me pose problème).

Merci de votre aide.
Beabou.




Avatar
Ange Ounis
La procédure ci-dessous prend le nom d'un classeur en paramètre (pour chercher
dans le module dont le nom est fourni la procédure dont le nom est également
fourni en 3ème argument).
Tu peux l'utiliser pour boucler sur les classeurs ouverts (c'est le seul truc
qui va peut-être coincer pour toi) afin de trouver celui que tu cherches :

'''''''''''''''''''''''
Sub essai()
For i = 1 To Workbooks.Count
FindProcedure Workbooks(i), "Module1", "Procedure"
Next
End Sub

Sub FindProcedure(ByVal wb As Workbook, ByVal ModuleName As String, _
ByVal ProcedureName As String)
' RB Smissaert, mpep
' Finds ProcedureName from ModuleName in wb
' nécessite une référence à Microsoft Visual Basic Extensibility 5.3
Dim VBCM As CodeModule
Dim ProcStartLine As Long

On Error Resume Next
Set VBCM = wb.VBProject.VBComponents(ModuleName).CodeModule
If Not VBCM Is Nothing Then
' determines if the procedure exists in the codemodule
ProcStartLine = 0
ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)
If ProcStartLine > 0 Then
MsgBox "Found the macro", , " Finding: " & ProcedureName
Else
MsgBox "Not found", , " Finding: " & ProcedureName
End If
Set VBCM = Nothing
End If
On Error GoTo 0

End Sub
'''''''''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

Je suis en train de réaliser un procédure vba qui modifie une autre macro.
J'ai besoin de rajouter une ligne de code dans cette macro.
Je connais le nom du module et le nom de la procédure mais pas le nom du
classeur (c'est ce qui me pose problème).

Merci de votre aide.
Beabou.