Macro qui supprime les codes VBA

jpmasclet

XLDnaute Occasionnel
Bonjour à tous ,
deja petite explication, j'ai un gros fichier excel avec plein de macro, qui fait l'objet d'une sauvegarde (restitution). Donc ma macro archivage, sauvegarde le fichier , copie les feuilles et ne garde que la valeur et efface les TCD.

Or j'aurai besoin en plus qu'elle efface tout ce qui est VBA, dans les feuilles, dans les modules et le thisWorkbook.

Avez vous une idée pour faire cela ?

Merci par avance !
 

James007

XLDnaute Barbatruc
Re : Macro qui supprime les codes VBA

Salut,

Pour faire marcher le code, il faut ajouter une librairie dans les
Références : Microsoft Visual Basic For Applications Extensibility 5.3

Puis le code :
Code:
Sub SupprimerCodeVBA()
        Dim VBProj As VBIDE.VBProject
        Dim VBComp As VBIDE.VBComponent
        Dim CodeMod As VBIDE.CodeModule
        
        Set VBProj = ActiveWorkbook.VBProject
        
        For Each VBComp In VBProj.VBComponents
            If VBComp.Type = vbext_ct_Document Then
                Set CodeMod = VBComp.CodeModule
                With CodeMod
                    .DeleteLines 1, .CountOfLines
                End With
            Else
                VBProj.VBComponents.Remove VBComp
            End If
        Next VBComp
    End Sub

A +
 

ROGER2327

XLDnaute Barbatruc
Re : Macro qui supprime les codes VBA

Bonsoir jpmasclet,
J'utilise ça :
Code:
Option Explicit

Sub SupprimeTout()
    'Enregistre le classeur et supprime la totalité des procédures
    'Nécessite d'activer la référence Microsoft Visual Basic for Applications Extensibility 5.3
    Dim VbComp As VBComponent, s As String
    If MsgBox(prompt:="Cette procédure va fermer ce classeur et en afficher une copie de laquelle TOUTES LES MACROS SERONT EFFACEES." _
        , Buttons:=vbOKCancel, Title:="Attention !") = 2 Then End
    'Enregistre le classeur
    s = InputBox(prompt:="Inscrivez le nom que vous voulez donner à la copie de " & ThisWorkbook.Name, _
        Title:="Suite de la procédure", Default:="Copie de " & ThisWorkbook.Name)
    If s = "" Then End
    If Right$(s, 4) <> ".xls" Then s = s & ".xls"
    s = ThisWorkbook.Path & "\" & s
    If s = ThisWorkbook.FullName Then
        If MsgBox(prompt:="Vous vous apprêtez à remplacer le classeur original par un classeur SANS MACRO." _
            , Buttons:=vbOKCancel, Title:="Attention !") = 2 Then End
    End If
    Application.DisplayAlerts = False: ThisWorkbook.SaveAs s: Application.DisplayAlerts = True
    For Each VbComp In ThisWorkbook.VBProject.VBComponents
        Select Case VbComp.Type
            Case 1 To 3: ThisWorkbook.VBProject.VBComponents.Remove VbComp
            Case Else: With VbComp.CodeModule: .DeleteLines 1, .CountOfLines: End With
        End Select
    Next VbComp
End Sub
À tester et à utiliser avec précaution !​
ROGER2327
 

jpmasclet

XLDnaute Occasionnel
Re : Macro qui supprime les codes VBA

Bonjour à tous et merci pour vos réponses nombreuses, malheuresment j'ai une coquille, ben ouais .... :) J'ai une erreur "L'accès par programme au projet visual basic n'est pas fiable " ?????? J'ai bien coché la référence , et pour info je suis sur excel 2002 !

Merci encore pour votre aide.
 

ROGER2327

XLDnaute Barbatruc
Re : Macro qui supprime les codes VBA

Bon jour jpmasclet

Je ne connais pas la version 2002 du tableur. Par conséquent je ne serai d'aucune utilité pour la suite. Bonne chance pour la suite, et à une autre fois peut-être ?

ROGER2327

P.S. : Certains antivirus n'aiment pas du tout ce code qu'il trouve suspect... C'est peut-être une piste à suivre.
 

bqtr

XLDnaute Accro
Re : Macro qui supprime les codes VBA

Bonjour jpmasclet, ROGER2327

Essaye en modifiant ceci avant:
Sur une feuille Excel quelconque:
Menu Outils/Options, dans la boite de dialogue active l'onglet Sécurité puis click sur le bouton Sécurité des macros, dans la nouvelle boite qui s'ouvre click sur le 2ème onglet Editeurs approuvés et coche les deux cases du bas (Faire confiance.......).

Normalement tu pourras utiliser le code fourni par Roger et tu n'auras plus l'erreur que tu indiques.

A+
 

Discussions similaires

Réponses
16
Affichages
989

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha