Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui
servent
en fait à remplir automatiquement un dossier.
Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand
meme
assez lourd dans mon fichier.
Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les
modules,
userforms voire meme si possible absolument tout le code y compris celui
des worksheets pour n'en faire plus qu'un classeur "mort".
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
FxM
Michael wrote:
Salut tout le monde !
Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui servent en fait à remplir automatiquement un dossier. Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand meme assez lourd dans mon fichier. Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les modules, userforms voire meme si possible absolument tout le code y compris celui des worksheets pour n'en faire plus qu'un classeur "mort".
Une idée ? une piste ? Merci d'avance !
Bonjour,
Au final, ne serait-il pas plus facile de copier les données et la mise en page dans un autre classeur ?
@+ FxM
Michael wrote:
Salut tout le monde !
Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui
servent
en fait à remplir automatiquement un dossier.
Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand
meme
assez lourd dans mon fichier.
Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les
modules,
userforms voire meme si possible absolument tout le code y compris celui
des worksheets pour n'en faire plus qu'un classeur "mort".
Une idée ? une piste ?
Merci d'avance !
Bonjour,
Au final, ne serait-il pas plus facile de copier les données et la mise
en page dans un autre classeur ?
Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui servent en fait à remplir automatiquement un dossier. Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand meme assez lourd dans mon fichier. Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les modules, userforms voire meme si possible absolument tout le code y compris celui des worksheets pour n'en faire plus qu'un classeur "mort".
Une idée ? une piste ? Merci d'avance !
Bonjour,
Au final, ne serait-il pas plus facile de copier les données et la mise en page dans un autre classeur ?
@+ FxM
Michael
En effet l'idée n'est pas mauvaise mais assez compliquée je pense
1- Faire un nouveau classeur du meme nom (toto.xls) 2- Copier toutes les feuilles 3- Fermer le classeur en cours 4- Enregistrer le nouveau Toto.xls qui doit remplacer l'autre...
Sachant que je cherche à avoir le moins de manips et d'avertissements possible pour l'utilisateur Dur Dur je pense...à moins que tu ne me prouve le contraire...
Merci qd meme !
En effet l'idée n'est pas mauvaise mais assez compliquée je pense
1- Faire un nouveau classeur du meme nom (toto.xls)
2- Copier toutes les feuilles
3- Fermer le classeur en cours
4- Enregistrer le nouveau Toto.xls qui doit remplacer l'autre...
Sachant que je cherche à avoir le moins de manips et d'avertissements
possible pour l'utilisateur Dur Dur je pense...à moins que tu ne me prouve
le contraire...
En effet l'idée n'est pas mauvaise mais assez compliquée je pense
1- Faire un nouveau classeur du meme nom (toto.xls) 2- Copier toutes les feuilles 3- Fermer le classeur en cours 4- Enregistrer le nouveau Toto.xls qui doit remplacer l'autre...
Sachant que je cherche à avoir le moins de manips et d'avertissements possible pour l'utilisateur Dur Dur je pense...à moins que tu ne me prouve le contraire...
Merci qd meme !
FxM
Michael wrote:
En effet l'idée n'est pas mauvaise mais assez compliquée je pense Moui :o)
1- Faire un nouveau classeur du meme nom (toto.xls) Excel va hurler avec deux classeurs du même nom
2- Copier toutes les feuilles tss, tss, le contenu et la mise en forme
3- Fermer le classeur en cours Arggh ... le code va s'arrêter
4- Enregistrer le nouveau Toto.xls qui doit remplacer l'autre... Si tu remplaces le fichier, plus de fichier original ! et donc plus de code.
Sachant que je cherche à avoir le moins de manips et d'avertissements possible pour l'utilisateur Dur Dur je pense...à moins que tu ne me prouve le contraire...
OK, enlever tout ce qu'il ne faut pas : - Parcourir toutes les pages pour enlever le code VBA - Enlever le ou les modules, sans oublier ThisWorkbook - Enlever les userforms - Enregistrer le fichier (même remarque pour le nom)
Le tout avec : - un anti-virus qui va hurler constamment que CodeModule est une instruction hyper-risquée, - le risque de plantage du code et donc de dommages au fichier original.
... c'est toi qui vois.
Merci qd meme ! Yapadmal :o)
@+ FxM qui n'a plus rien à prouver
Michael wrote:
En effet l'idée n'est pas mauvaise mais assez compliquée je pense
Moui :o)
1- Faire un nouveau classeur du meme nom (toto.xls)
Excel va hurler avec deux classeurs du même nom
2- Copier toutes les feuilles
tss, tss, le contenu et la mise en forme
3- Fermer le classeur en cours
Arggh ... le code va s'arrêter
4- Enregistrer le nouveau Toto.xls qui doit remplacer l'autre...
Si tu remplaces le fichier, plus de fichier original ! et donc plus de code.
Sachant que je cherche à avoir le moins de manips et d'avertissements
possible pour l'utilisateur Dur Dur je pense...à moins que tu ne me prouve
le contraire...
OK, enlever tout ce qu'il ne faut pas :
- Parcourir toutes les pages pour enlever le code VBA
- Enlever le ou les modules, sans oublier ThisWorkbook
- Enlever les userforms
- Enregistrer le fichier (même remarque pour le nom)
Le tout avec :
- un anti-virus qui va hurler constamment que CodeModule est une
instruction hyper-risquée,
- le risque de plantage du code et donc de dommages au fichier original.
En effet l'idée n'est pas mauvaise mais assez compliquée je pense Moui :o)
1- Faire un nouveau classeur du meme nom (toto.xls) Excel va hurler avec deux classeurs du même nom
2- Copier toutes les feuilles tss, tss, le contenu et la mise en forme
3- Fermer le classeur en cours Arggh ... le code va s'arrêter
4- Enregistrer le nouveau Toto.xls qui doit remplacer l'autre... Si tu remplaces le fichier, plus de fichier original ! et donc plus de code.
Sachant que je cherche à avoir le moins de manips et d'avertissements possible pour l'utilisateur Dur Dur je pense...à moins que tu ne me prouve le contraire...
OK, enlever tout ce qu'il ne faut pas : - Parcourir toutes les pages pour enlever le code VBA - Enlever le ou les modules, sans oublier ThisWorkbook - Enlever les userforms - Enregistrer le fichier (même remarque pour le nom)
Le tout avec : - un anti-virus qui va hurler constamment que CodeModule est une instruction hyper-risquée, - le risque de plantage du code et donc de dommages au fichier original.
Pour supprimer toute trace de ligne de code, formulaire, module standard ou de classe, ceci devrait être suffisant :
'------------------------- 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!
"Michael" a écrit dans le message de news:
Salut tout le monde !
Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui servent en fait à remplir automatiquement un dossier. Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand meme assez lourd dans mon fichier. Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les modules, userforms voire meme si possible absolument tout le code y compris celui des worksheets pour n'en faire plus qu'un classeur "mort".
Une idée ? une piste ? Merci d'avance !
Bonjour Michael,
Pour supprimer toute trace de ligne de code, formulaire, module standard ou de classe, ceci devrait être suffisant :
'-------------------------
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!
"Michael" <michael_bas@yahoo.fr> a écrit dans le message de news: eCXWMXV1FHA.2348@TK2MSFTNGP15.phx.gbl...
Salut tout le monde !
Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui
servent
en fait à remplir automatiquement un dossier.
Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand
meme
assez lourd dans mon fichier.
Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les
modules,
userforms voire meme si possible absolument tout le code y compris celui
des worksheets pour n'en faire plus qu'un classeur "mort".
Pour supprimer toute trace de ligne de code, formulaire, module standard ou de classe, ceci devrait être suffisant :
'------------------------- 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!
"Michael" a écrit dans le message de news:
Salut tout le monde !
Une question (encore!) j'ai dans mon classeur des (tonnes de) macros qui servent en fait à remplir automatiquement un dossier. Une fois le dossier rempli, toutes ces macros, userform etc... pesent quand meme assez lourd dans mon fichier. Je souhaiterais donc, apres un évenement BeforeSave, supprimer tous les modules, userforms voire meme si possible absolument tout le code y compris celui des worksheets pour n'en faire plus qu'un classeur "mort".