Changer extension fichier en désactivant les macros

pzyko Messages postés 35 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un dossier contenant 5 fichiers ".xlsm" qui contiennent des macros. J'aimerais savoir comment modifier l'extension de ces fichiers pour les passer en ".xls" et qu'ils ne contiennent plus de macros.

Merci :)

4 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,
    Ouvrir un nouveau classeur et mettre dans un module:

    Option Explicit
    
    'supprimer *tout* le code d'un classeur
    
    'copier ce code dans un module standard d'un autre classeur que celui
    'dont vous voulez supprimer toutes les macros et l'exécuter après avoir
    'rendu actif le classeur dont les macros doivent être supprimées
    'Bill Manville, mpep
    Sub RemoveMacros()
      Dim O As Object
      For Each O In ActiveWorkbook.Sheets
        If TypeName(O) = "Worksheet" Then
          Select Case O.Type
            Case xlExcel4MacroSheet, xlExcel4IntlMacroSheet
              Application.DisplayAlerts = False
              MsgBox "Macro sheet " & O.Name
              O.Delete
              Application.DisplayAlerts = True
          End Select
        ElseIf TypeName(O) = "Module" Then
            Application.DisplayAlerts = False
            MsgBox "Module " & O.Name
            O.Delete
            Application.DisplayAlerts = True
        End If
      Next
      If Val(Application.Version) >= 8 Then
        With ActiveWorkbook.VBProject
          For Each O In .VBComponents
            Select Case O.Type
              Case 1, 2 ' standard or class module
                MsgBox "Module " & O.Name
                .VBComponents.Remove O
              Case Else ' form or document
                With O.CodeModule
                  If .CountOfLines > 0 Then
                    MsgBox "Module behind " & O.Name
                    .DeleteLines 1, .CountOfLines
                  End If
                End With
            End Select
          Next
        End With
      End If
      For Each O In ActiveWorkbook.Names 'noms dans le classeur
        Select Case O.MacroType
          Case xlFunction, xlCommand
            MsgBox "Name " & O.Name
            O.Delete
        End Select
      Next
    End Sub
    


    Ensuite mettre une UserForm avec un CommandButton et mettre ce code:

    Option Explicit
    Dim chemin As String
    Private Sub CommandButton1_Click()
    chemin = "chemin classeur.xlsm"
    Workbooks.Open chemin
    RemoveMacros
    chemin = Replace(chemin, "xlsm", "xls")
     ActiveWorkbook.SaveAs Filename:= _
            chemin, FileFormat:=xlExcel8, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    End Sub
    
    


    Ensuite changer le chemin pour chaque classeur. L'ancien classeur n'est pas supprimé.
    1
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Heuuuu, j'ai plus simple :-)
    'Enregistrer sous...' et choisir le type *.xls

    eric
    0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour eriiic,

    Heuuuu, Je pense que tu as répondu sans essayer :-(

    Les macros sont toujours là et fonctionnelles!
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Oui, mais j'ai oublié l'étape principale : d'abord enregistrer dans le type *.xlsx (qui enlève les macros), puis dans la foulée en xls.
    sorry :-)

    eric
    0