Comment suppprimer toutes la macro à la fin de son exécution ?
3 réponses
Antoine
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les
dernières lignes déclenchent la suppression de tout ce que le VBA contenait
pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans
feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de
réduire ce fichier au maximum, mais sans compression, pour archivage (c'est
à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la
destruction de tous ce qu'évoqué précédemment, serait-il possible de loger
cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter
tout le reste de l'effacement.
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
michdenis
Bonjour Antoine,
Tu appelles cette macro en fin de procédure et elle fait sur le classeur actif exactement ce que tu demandes.
'-------------------------- Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
For Each VBComp In VBComps Select Case VBComp.Type Case 100 With VBComp.CodeModule .DeleteLines 1, .CountOfLines End With Case Else VBComps.Remove VBComp End Select Next VBComp
End Sub '--------------------------
Salutations!
"Antoine" a écrit dans le message de news: Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les dernières lignes déclenchent la suppression de tout ce que le VBA contenait pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de réduire ce fichier au maximum, mais sans compression, pour archivage (c'est à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la destruction de tous ce qu'évoqué précédemment, serait-il possible de loger cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter tout le reste de l'effacement.
Merci à tous pour vos suggestions.
Antoine
Bonjour Antoine,
Tu appelles cette macro en fin de procédure et elle fait
sur le classeur actif exactement ce que tu demandes.
'--------------------------
Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp
End Sub
'--------------------------
Salutations!
"Antoine" <awerelASUPPRIMER@mageos.com> a écrit dans le message de news: OnCHZizHGHA.1676@TK2MSFTNGP09.phx.gbl...
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les
dernières lignes déclenchent la suppression de tout ce que le VBA contenait
pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans
feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de
réduire ce fichier au maximum, mais sans compression, pour archivage (c'est
à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la
destruction de tous ce qu'évoqué précédemment, serait-il possible de loger
cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter
tout le reste de l'effacement.
Tu appelles cette macro en fin de procédure et elle fait sur le classeur actif exactement ce que tu demandes.
'-------------------------- Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
For Each VBComp In VBComps Select Case VBComp.Type Case 100 With VBComp.CodeModule .DeleteLines 1, .CountOfLines End With Case Else VBComps.Remove VBComp End Select Next VBComp
End Sub '--------------------------
Salutations!
"Antoine" a écrit dans le message de news: Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les dernières lignes déclenchent la suppression de tout ce que le VBA contenait pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de réduire ce fichier au maximum, mais sans compression, pour archivage (c'est à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la destruction de tous ce qu'évoqué précédemment, serait-il possible de loger cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter tout le reste de l'effacement.
Merci à tous pour vos suggestions.
Antoine
Youky
Une recherche sur Excelalo donne ceci en copier-coller: Supprimer une macro par macro J'ai un classeur Excel dans lequel je dois supprimer les macros avant de l'enregistrer. J'ai essayé d'enregistrer une macro pour voir les commandes à utiliser, mais quand j'arrête l'enregistrement, la macro est vide. Quelques lignes extraite de mon perso.xls qui te permettent d'effacer des modules, des userforms, code de thisworkbook et code feuille
Sub EffaceCodeFeuille(NomFeuille As String) With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _ (NomFeuille).CodeName).CodeModule .DeleteLines 1, .CountOfLines .CodePane.Window.Close end with End Sub
Sub EffaceCodeThisWbk() With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule .DeleteLines 1, .CountOfLines .CodePane.Window.Close End With End Sub
Sub EffaceUserForm(MonUserForm As String) ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents(MonUserForm) End Sub
Sub SuppModule(nModule As String) Dim VBC As VBComponent With ActiveWorkbook.VBProject For Each VBC In .VBComponents If VBC.Name = nModule Then .VBComponents.Remove VBC Next VBC End With End Sub
IMPORTANT : tu dois charger la bibliothèque Microsoft Visual Basic for Applications Extensibility 5.3 Lolo, Patrick Penet, (N°1119)
"Antoine" a écrit dans le message de news:
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les dernières lignes déclenchent la suppression de tout ce que le VBA contenait pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de réduire ce fichier au maximum, mais sans compression, pour archivage (c'est à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la destruction de tous ce qu'évoqué précédemment, serait-il possible de loger cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter tout le reste de l'effacement.
Merci à tous pour vos suggestions.
Antoine
Une recherche sur Excelalo donne ceci en copier-coller:
Supprimer une macro par macro
J'ai un classeur Excel dans lequel je dois supprimer les macros avant de
l'enregistrer. J'ai essayé d'enregistrer une macro pour voir les commandes à
utiliser, mais quand j'arrête l'enregistrement, la macro est vide.
Quelques lignes extraite de mon perso.xls qui te permettent d'effacer des
modules, des
userforms, code de thisworkbook et code feuille
Sub EffaceCodeFeuille(NomFeuille As String)
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _
(NomFeuille).CodeName).CodeModule
.DeleteLines 1,
.CountOfLines
.CodePane.Window.Close
end with
End Sub
Sub
EffaceCodeThisWbk()
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End Sub
Sub EffaceUserForm(MonUserForm As String)
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents(MonUserForm)
End Sub
Sub SuppModule(nModule As String)
Dim VBC As VBComponent
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Name = nModule Then .VBComponents.Remove VBC
Next VBC
End With
End Sub
IMPORTANT : tu dois charger la bibliothèque
Microsoft Visual Basic for Applications Extensibility 5.3
Lolo, Patrick Penet, (N°1119)
"Antoine" <awerelASUPPRIMER@mageos.com> a écrit dans le message de news:
OnCHZizHGHA.1676@TK2MSFTNGP09.phx.gbl...
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que
les dernières lignes déclenchent la suppression de tout ce que le VBA
contenait pour ce fichier (c'est à dire Module1 dans modules, et 3
Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est
en fait de réduire ce fichier au maximum, mais sans compression, pour
archivage (c'est à dire de faire perdre un peu plus de 300 Ko par
transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la
destruction de tous ce qu'évoqué précédemment, serait-il possible de loger
cette procédure dans un module2, qui lui, ne serait gardé qu'afin
d'exécuter tout le reste de l'effacement.
Une recherche sur Excelalo donne ceci en copier-coller: Supprimer une macro par macro J'ai un classeur Excel dans lequel je dois supprimer les macros avant de l'enregistrer. J'ai essayé d'enregistrer une macro pour voir les commandes à utiliser, mais quand j'arrête l'enregistrement, la macro est vide. Quelques lignes extraite de mon perso.xls qui te permettent d'effacer des modules, des userforms, code de thisworkbook et code feuille
Sub EffaceCodeFeuille(NomFeuille As String) With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _ (NomFeuille).CodeName).CodeModule .DeleteLines 1, .CountOfLines .CodePane.Window.Close end with End Sub
Sub EffaceCodeThisWbk() With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule .DeleteLines 1, .CountOfLines .CodePane.Window.Close End With End Sub
Sub EffaceUserForm(MonUserForm As String) ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents(MonUserForm) End Sub
Sub SuppModule(nModule As String) Dim VBC As VBComponent With ActiveWorkbook.VBProject For Each VBC In .VBComponents If VBC.Name = nModule Then .VBComponents.Remove VBC Next VBC End With End Sub
IMPORTANT : tu dois charger la bibliothèque Microsoft Visual Basic for Applications Extensibility 5.3 Lolo, Patrick Penet, (N°1119)
"Antoine" a écrit dans le message de news:
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les dernières lignes déclenchent la suppression de tout ce que le VBA contenait pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de réduire ce fichier au maximum, mais sans compression, pour archivage (c'est à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la destruction de tous ce qu'évoqué précédemment, serait-il possible de loger cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter tout le reste de l'effacement.
Merci à tous pour vos suggestions.
Antoine
Antoine
Bonsoir à tous les deux,
Que la lumière soit, et le lumière fut !
Merci beaucoup à tous les deux
"Antoine" a écrit dans le message de news:
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les dernières lignes déclenchent la suppression de tout ce que le VBA contenait pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de réduire ce fichier au maximum, mais sans compression, pour archivage (c'est à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la destruction de tous ce qu'évoqué précédemment, serait-il possible de loger cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter tout le reste de l'effacement.
Merci à tous pour vos suggestions.
Antoine
Bonsoir à tous les deux,
Que la lumière soit, et le lumière fut !
Merci beaucoup à tous les deux
"Antoine" <awerelASUPPRIMER@mageos.com> a écrit dans le message de news:
OnCHZizHGHA.1676@TK2MSFTNGP09.phx.gbl...
Bonjour
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que
les dernières lignes déclenchent la suppression de tout ce que le VBA
contenait pour ce fichier (c'est à dire Module1 dans modules, et 3
Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est
en fait de réduire ce fichier au maximum, mais sans compression, pour
archivage (c'est à dire de faire perdre un peu plus de 300 Ko par
transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la
destruction de tous ce qu'évoqué précédemment, serait-il possible de loger
cette procédure dans un module2, qui lui, ne serait gardé qu'afin
d'exécuter tout le reste de l'effacement.
Je voudrai savoir s'il est possible, en fin d'exécution d'une macro, que les dernières lignes déclenchent la suppression de tout ce que le VBA contenait pour ce fichier (c'est à dire Module1 dans modules, et 3 Userform dans feuilles et un Workbook_Open dans ThisWorkbook). Le but, est en fait de réduire ce fichier au maximum, mais sans compression, pour archivage (c'est à dire de faire perdre un peu plus de 300 Ko par transformation).
Sinon, si l'on doit conserver un "embryon de macro pour exécuter la destruction de tous ce qu'évoqué précédemment, serait-il possible de loger cette procédure dans un module2, qui lui, ne serait gardé qu'afin d'exécuter tout le reste de l'effacement.