Bonjour Jeclephi,
Essaie ceci : Évidemment le classeur où est
situé la macro à supprimer doit être ouvert.
'---------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Le module où est la macro
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'---------------------------------
Sub SupprimerProcédure(Wk As Workbook, _
SonNom As String, SonModule As String)
Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object
With Wk.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"jeclephi" a écrit dans le message de
news: %
Bonjour,
En début d'année j'archive mes fichiers de gestion de compte (en changeant
leur nom) et, aprés cette opération, subsiste une macro "Private Sub
Workbook_Open()" qui n'est plus utile et qui est même génante quand
j'ouvre
le fichier archivé. J'ai automatisé l'archivage et je supprime
manuellement
cette macro. Je voudrais bien sur automatiser cela aussi mais là j'ai
atteint ma limite. Est ce que quelqu'un connait une solution?
Merci
Jcp
Bonjour Jeclephi,
Essaie ceci : Évidemment le classeur où est
situé la macro à supprimer doit être ouvert.
'---------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Le module où est la macro
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'---------------------------------
Sub SupprimerProcédure(Wk As Workbook, _
SonNom As String, SonModule As String)
Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object
With Wk.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"jeclephi" <antispam.jcp.sabatini@wanadoo.fr> a écrit dans le message de
news: %23ZbN4MgHGHA.3624@TK2MSFTNGP09.phx.gbl...
Bonjour,
En début d'année j'archive mes fichiers de gestion de compte (en changeant
leur nom) et, aprés cette opération, subsiste une macro "Private Sub
Workbook_Open()" qui n'est plus utile et qui est même génante quand
j'ouvre
le fichier archivé. J'ai automatisé l'archivage et je supprime
manuellement
cette macro. Je voudrais bien sur automatiser cela aussi mais là j'ai
atteint ma limite. Est ce que quelqu'un connait une solution?
Merci
Jcp
Bonjour Jeclephi,
Essaie ceci : Évidemment le classeur où est
situé la macro à supprimer doit être ouvert.
'---------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Le module où est la macro
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'---------------------------------
Sub SupprimerProcédure(Wk As Workbook, _
SonNom As String, SonModule As String)
Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object
With Wk.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"jeclephi" a écrit dans le message de
news: %
Bonjour,
En début d'année j'archive mes fichiers de gestion de compte (en changeant
leur nom) et, aprés cette opération, subsiste une macro "Private Sub
Workbook_Open()" qui n'est plus utile et qui est même génante quand
j'ouvre
le fichier archivé. J'ai automatisé l'archivage et je supprime
manuellement
cette macro. Je voudrais bien sur automatiser cela aussi mais là j'ai
atteint ma limite. Est ce que quelqu'un connait une solution?
Merci
Jcp
Bonjour Jeclephi,
Essaie ceci : Évidemment le classeur où est
situé la macro à supprimer doit être ouvert.
'---------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Le module où est la macro
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'---------------------------------
Sub SupprimerProcédure(Wk As Workbook, _
SonNom As String, SonModule As String)
Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object
With Wk.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"jeclephi" a écrit dans le message de
news: %
Bonjour,
En début d'année j'archive mes fichiers de gestion de compte (en changeant
leur nom) et, aprés cette opération, subsiste une macro "Private Sub
Workbook_Open()" qui n'est plus utile et qui est même génante quand
j'ouvre
le fichier archivé. J'ai automatisé l'archivage et je supprime
manuellement
cette macro. Je voudrais bien sur automatiser cela aussi mais là j'ai
atteint ma limite. Est ce que quelqu'un connait une solution?
Merci
Jcp
Bonjour Jeclephi,
Essaie ceci : Évidemment le classeur où est
situé la macro à supprimer doit être ouvert.
'---------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Le module où est la macro
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'---------------------------------
Sub SupprimerProcédure(Wk As Workbook, _
SonNom As String, SonModule As String)
Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object
With Wk.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"jeclephi" <antispam.jcp.sabatini@wanadoo.fr> a écrit dans le message de
news: %23ZbN4MgHGHA.3624@TK2MSFTNGP09.phx.gbl...
Bonjour,
En début d'année j'archive mes fichiers de gestion de compte (en changeant
leur nom) et, aprés cette opération, subsiste une macro "Private Sub
Workbook_Open()" qui n'est plus utile et qui est même génante quand
j'ouvre
le fichier archivé. J'ai automatisé l'archivage et je supprime
manuellement
cette macro. Je voudrais bien sur automatiser cela aussi mais là j'ai
atteint ma limite. Est ce que quelqu'un connait une solution?
Merci
Jcp
Bonjour Jeclephi,
Essaie ceci : Évidemment le classeur où est
situé la macro à supprimer doit être ouvert.
'---------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Le module où est la macro
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'---------------------------------
Sub SupprimerProcédure(Wk As Workbook, _
SonNom As String, SonModule As String)
Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object
With Wk.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"jeclephi" a écrit dans le message de
news: %
Bonjour,
En début d'année j'archive mes fichiers de gestion de compte (en changeant
leur nom) et, aprés cette opération, subsiste une macro "Private Sub
Workbook_Open()" qui n'est plus utile et qui est même génante quand
j'ouvre
le fichier archivé. J'ai automatisé l'archivage et je supprime
manuellement
cette macro. Je voudrais bien sur automatiser cela aussi mais là j'ai
atteint ma limite. Est ce que quelqu'un connait une solution?
Merci
Jcp
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
Bonjour Jeclephi,
Tu copies les 2 procédures dans un module standard,
et tu lances l'exécution avec cette procédure, tu n'as aucune
modification à faire pour la seconde procédure.
Les seules variables à renseigner sont dans cette procédure.
Évidemment, le classeur où tu veux supprimer une procédure
doit être ouvert.
'-------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Quel est le nom du module où est la macro
ModuleName = "ThisWorkbook"
'Quel est le nom du classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'-------------------------
Si tu préfères, tu peux utiliser cette variante....
avec un code plus concis ! ;-)
'-------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Workbook_Open"
'Le module où est la macro
'ne pas inclure dans le nom de la procédure le mot "Sub"
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
ClearCode Wk, DeleteSubName, ModuleName
End Sub
'-------------------------------
Sub ClearCode(Wk As Workbook, _
SonNom As String, SonModule As String)
If Wk.VBProject.Protection Then Exit Sub
Dim StartLine As Long, LineCount As Long
On Error Resume Next
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
End Sub
'-------------------------------
Salutations!
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
Bonjour Jeclephi,
Tu copies les 2 procédures dans un module standard,
et tu lances l'exécution avec cette procédure, tu n'as aucune
modification à faire pour la seconde procédure.
Les seules variables à renseigner sont dans cette procédure.
Évidemment, le classeur où tu veux supprimer une procédure
doit être ouvert.
'-------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Quel est le nom du module où est la macro
ModuleName = "ThisWorkbook"
'Quel est le nom du classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'-------------------------
Si tu préfères, tu peux utiliser cette variante....
avec un code plus concis ! ;-)
'-------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Workbook_Open"
'Le module où est la macro
'ne pas inclure dans le nom de la procédure le mot "Sub"
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
ClearCode Wk, DeleteSubName, ModuleName
End Sub
'-------------------------------
Sub ClearCode(Wk As Workbook, _
SonNom As String, SonModule As String)
If Wk.VBProject.Protection Then Exit Sub
Dim StartLine As Long, LineCount As Long
On Error Resume Next
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
End Sub
'-------------------------------
Salutations!
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
Bonjour Jeclephi,
Tu copies les 2 procédures dans un module standard,
et tu lances l'exécution avec cette procédure, tu n'as aucune
modification à faire pour la seconde procédure.
Les seules variables à renseigner sont dans cette procédure.
Évidemment, le classeur où tu veux supprimer une procédure
doit être ouvert.
'-------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Sub Workbook_Open"
'Quel est le nom du module où est la macro
ModuleName = "ThisWorkbook"
'Quel est le nom du classeur où est la procédure
Set Wk = Workbooks("Classeur2")
SupprimerProcédure Wk, DeleteSubName, ModuleName
End Sub
'-------------------------
Si tu préfères, tu peux utiliser cette variante....
avec un code plus concis ! ;-)
'-------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Workbook_Open"
'Le module où est la macro
'ne pas inclure dans le nom de la procédure le mot "Sub"
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
ClearCode Wk, DeleteSubName, ModuleName
End Sub
'-------------------------------
Sub ClearCode(Wk As Workbook, _
SonNom As String, SonModule As String)
If Wk.VBProject.Protection Then Exit Sub
Dim StartLine As Long, LineCount As Long
On Error Resume Next
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
End Sub
'-------------------------------
Salutations!
Bonjour jeclephi,
Tu copies les 2 procédures suivantes dans un module Standard.
La seule procédure à exécuter est : EffacerProcédure.
Dans cette dernière, il y a quelques variables que tu dois
définir selon ton application. C'est tout.
Je ne vois pas ce que je pourrais ajouter !!
'-------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Workbook_Open"
'Le module où est la macro
'ne pas inclure dans le nom de la procédure le mot "Sub"
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
ClearCode Wk, DeleteSubName, ModuleName
End Sub
'-------------------------------
Sub ClearCode(Wk As Workbook, _
SonNom As String, SonModule As String)
If Wk.VBProject.Protection Then Exit Sub
Dim StartLine As Long, LineCount As Long
On Error Resume Next
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
End Sub
'-------------------------------
Salutations!
Bonjour jeclephi,
Tu copies les 2 procédures suivantes dans un module Standard.
La seule procédure à exécuter est : EffacerProcédure.
Dans cette dernière, il y a quelques variables que tu dois
définir selon ton application. C'est tout.
Je ne vois pas ce que je pourrais ajouter !!
'-------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Workbook_Open"
'Le module où est la macro
'ne pas inclure dans le nom de la procédure le mot "Sub"
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
ClearCode Wk, DeleteSubName, ModuleName
End Sub
'-------------------------------
Sub ClearCode(Wk As Workbook, _
SonNom As String, SonModule As String)
If Wk.VBProject.Protection Then Exit Sub
Dim StartLine As Long, LineCount As Long
On Error Resume Next
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
End Sub
'-------------------------------
Salutations!
Bonjour jeclephi,
Tu copies les 2 procédures suivantes dans un module Standard.
La seule procédure à exécuter est : EffacerProcédure.
Dans cette dernière, il y a quelques variables que tu dois
définir selon ton application. C'est tout.
Je ne vois pas ce que je pourrais ajouter !!
'-------------------------------
Sub EffacerProcédure()
Dim DeleteSubName As String
Dim ModuleName As String
Dim Wk As Workbook
'Nom de la procédure à effacer
DeleteSubName = "Workbook_Open"
'Le module où est la macro
'ne pas inclure dans le nom de la procédure le mot "Sub"
ModuleName = "ThisWorkbook"
'Le classeur où est la procédure
Set Wk = Workbooks("Classeur2")
ClearCode Wk, DeleteSubName, ModuleName
End Sub
'-------------------------------
Sub ClearCode(Wk As Workbook, _
SonNom As String, SonModule As String)
If Wk.VBProject.Protection Then Exit Sub
Dim StartLine As Long, LineCount As Long
On Error Resume Next
With Wk.VBProject.VBComponents(SonModule).CodeModule
StartLine = .ProcStartLine(SonNom, 0)
If StartLine Then
LineCount = .ProcCountLines(SonNom, 0)
.DeleteLines StartLine, LineCount
End If
End With
End Sub
'-------------------------------
Salutations!