VBA Exporter/Supprimer Modules (Suite)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Pour comprendre : voir ici : fil d'origine (source de la question)


Merci à Thierry donc

Voila à quoi ma réflexion du jour m'a fait aboutir:

PRECAUTIONS: A n'utiliser que sur des copies ou des fichiers de tests

Le code ci-dessous:
1) Exporte le code VBA
2) Supprime le code VBA
Code:
Sub VBA_EXPORT_AND_KILL()
ExporterFrmEtModules
VBA_Killer
End Sub


Sub ExporterFrmEtModules()
Dim Racine As String
Dim SousRep As String
Racine = "C:\Temp\"
SousRep = "C:\Temp\Feuilles\"
If (RépertoireExiste(Racine) <> True) Then
MkDir Racine
End If
If (RépertoireExiste(SousRep) <> True) Then
MkDir SousRep
End If
Dim LeFich
    For Each LeFich In ThisWorkbook.VBProject.VBComponents
        Select Case LeFich.Type
            Case 1
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export Racine & LeFich.Name & ".bas"
            Case 2
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export Racine & LeFich.Name & ".cls"
            Case 3
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export Racine & LeFich.Name & ".frm"
            Case 100
                ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export SousRep & LeFich.Name & ".cls"
        End Select
    Next
End Sub


'-------------------------------------------------------
'Test L'existance d'un répertoire
'-------------------------------------------------------
Function RépertoireExiste(Chemin As String) As Boolean
    
    On Error Resume Next
        RépertoireExiste = GetAttr(Chemin) And vbDirectory
        
End Function
Sub VBA_Killer()
Dim VBC As Object
With ActiveWorkbook.VBProject
    For Each VBC In .VBComponents
        If VBC.Type = 100 Then
                With VBC.CodeModule
                    .DeleteLines 1, .CountOfLines
                    .CodePane.Window.Close
                End With
        Else
        .VBComponents.Remove VBC
        End If
 
        Next VBC
End With
End Sub

Remerciements à:
- Thierry (forum XLD)

- source externe: macro export modules
 
Dernière édition:
Re : VBA Exporter/Supprimer Modules (Suite)

Re Staple, le Forum

Ben je ne sais pas à quoi sert tout ceci, mais bon... D'ailleurs des exemples d'exports de Modules existait aussi sur XLD ;-)

Enfin pour passer en le WorkBook en Paramètre il suffit de Lancer le VBA_Killer comme suit

Code:
Sub TaMacroDeBase()
Dim WB_To_Kill as WorkBook
 
Set WB_To_Kill = WorkBooks.Open(FullPath)
 
Blah Blah Blah
 
[B]VBA_Killer WB_To_Kill[/B] 
End Sub
 
Sub VBA_Killer(ByVal DeadWB As WorBook)
Dim VBC As Object
With DeadWB.VBProject
    For Each VBC In .VBComponents
        If VBC.Type = 100 Then
                With VBC.CodeModule
                    .DeleteLines 1, .CountOfLines
                    .CodePane.Window.Close
                End With
        Else
        .VBComponents.Remove VBC
        End If
 
        Next VBC
End With
End Sub

Je n'ai rien testé, vu le peu d'utilité de ce genre de code surtout pour un classeur précis, que moi j'utilise vraiment rarement ou en ActiveWorkBook depuis unE XLA, pour épurer un fichier à envoyer par mail par exemple, mais ce devrait le faire, juste un doute pour le ByVal pour un passage d'Argument de type WorkBook, si ça ne passe pas ne met rien ou bien ByRef...

Bon amusement
@+Thierry




PS as-tu vu ma remarque pour la touche MAJ enfoncée pendant l'ouverture du Classeur qui me semble plus simple que tout ça 😉 mais bravo pour l'exercice en tous cas !
 
Re : VBA Exporter/Supprimer Modules (Suite)

Re Thierry


Je sais comment ouvrir un classeur en désactivant les macros

(d'ailleurs j'ai toujours sous la main un petit cube en plomb qui reste
en permanence sur la touche MAJ 😉 )

Quant à l'utilité, je me suis pas posé la question

Je te rappelle, que c'est ton VBA_KILLER qui a fait germer cette question autour de VBA 🙄

Au départ, je pensais VBA_COMMENTS_ALL

En tous cas je te remercie (et j'admire la beauté et la fluidité de ton code VBA)

Je m'excuse de n'avoir pas cherché sur le forum ( au vu de ton message sur les difficultés de recherche dans l'autre fil, je n'ai pas cherché sur XLD)

Bonne fin de soirée à toi, au forum

JM
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
499
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
231
Réponses
4
Affichages
360
Réponses
3
Affichages
534
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
76
Réponses
2
Affichages
403
Réponses
3
Affichages
518
  • Question Question
Microsoft 365 Excel VBA
Réponses
5
Affichages
350
Réponses
3
Affichages
598
Retour