Changer extension fichier en désactivant les macros

Fermé
pzyko Messages postés 34 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 8 août 2014 - 29 juil. 2014 à 16:50
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 1 août 2014 à 08:53
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 :)

A voir également:

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 juil. 2014 à 18:00
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
31 juil. 2014 à 23:57
Bonjour,

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

eric
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
1 août 2014 à 08:06
Bonjour eriiic,

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

Les macros sont toujours là et fonctionnelles!
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
1 août 2014 à 08:53
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