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).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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).
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.
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.
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).
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).