OVH Cloud OVH Cloud

Comment suppprimer toutes la macro à la fin de son exécution ?

3 réponses
Avatar
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.

Merci à tous pour vos suggestions.

Antoine

3 réponses

Avatar
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
Avatar
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



Avatar
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