Microsoft 365 Sauvegarder fichier de XLSM à XLSX et effacer contrôle

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 !

Hugues1976

XLDnaute Nouveau
Bonjour.

J'essaie de créer une macro pour que mon fichier se sauvegarde en format XLSX (donc perte des macro) pour qu'il puisse franchir le pare-feu de notre systeme de courriel.
De plus je voudrais qles contrôle (bouton) s'efface de ma page.

Mon code ne fonctionne pas du tout. Pourriez-vous m'aider svp.

Merci et bonne journée

VB:
Sub Sauvegarde_Sans_macro()
    
Dim FileToSave As Variant
Dim d As Date
Dim shp As Shape


MsgBox "Le fichier sera sauvegarder sans les macro et sera prêt pour l'envoie, voulez-vous continuer", vbYesNo
If yes Then


    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next shp
    
    Application.DisplayAlerts = False
    FileToSave = Application.GetSaveAsFilename(fileFilter:="File Type (*.xlsx), *.xlsx")
    If FileToSave <> False Then
        ActiveWorkbook.SaveAs Filename:=FileToSave, FileFormat:=xlOpenXMLWorkbook
    End If
    Application.DisplayAlerts = True
End If
End Sub
 
Bonjour @Hugues1976 , le fil

A peaufiner, mais cela a fonctionné lors de mon test
Code:
Public Sub SaveFileAs()
Dim FileToSave As Variant
rep = MsgBox("Sauvegarder sans macro?", vbYesNo)
If rep = vbYes Then
FileToSave = Application.GetSaveAsFilename(fileFilter:="Classeur sans macros (*.xlsx), *.xlsx")
If FileToSave <> False Then
Application.DisplayAlerts = False
ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveAs Filename:=FileToSave, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close True
Else
'user chose cancel
End If
Else
Exit Sub
End If
End Sub
 
Bonsoir Hugues1976; JM,

Au lieu de supprimer les objets on peut les masquer :
VB:
Sub Sauvegarde_Sans_macro()
Dim fn$, ff, w As Worksheet
Application.DisplayAlerts = False
With ThisWorkbook
    fn = .FullName
    ff = .FileFormat
    For Each w In Worksheets: w.DrawingObjects.Visible = False: Next 'masque les objets
    .SaveAs Left(fn, InStrRev(fn, ".")) & "xlsx", 51
    For Each w In Worksheets: w.DrawingObjects.Visible = True: Next 'affiche les objets
    .SaveAs fn, ff
End With
End Sub
A+
 
Bonjour @Hugues1976 , le fil

A peaufiner, mais cela a fonctionné lors de mon test
Code:
Public Sub SaveFileAs()
Dim FileToSave As Variant
rep = MsgBox("Sauvegarder sans macro?", vbYesNo)
If rep = vbYes Then
FileToSave = Application.GetSaveAsFilename(fileFilter:="Classeur sans macros (*.xlsx), *.xlsx")
If FileToSave <> False Then
Application.DisplayAlerts = False
ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveAs Filename:=FileToSave, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close True
Else
'user chose cancel
End If
Else
Exit Sub
End If
End Sub
Bonjour @Hugues1976 , le fil

A peaufiner, mais cela a fonctionné lors de mon test
Code:
Public Sub SaveFileAs()
Dim FileToSave As Variant
rep = MsgBox("Sauvegarder sans macro?", vbYesNo)
If rep = vbYes Then
FileToSave = Application.GetSaveAsFilename(fileFilter:="Classeur sans macros (*.xlsx), *.xlsx")
If FileToSave <> False Then
Application.DisplayAlerts = False
ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveAs Filename:=FileToSave, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close True
Else
'user chose cancel
End If
Else
Exit Sub
End If
End Sub
Bonjour. MErci beaucoup. Ca fonctionne super bien. Est-ce qu'il est possible de choisir les objets que l'on rend invisible.
J'ai un logo que je veux conserver ?
 
Bonsoir Hugues1976; JM,

Au lieu de supprimer les objets on peut les masquer :
VB:
Sub Sauvegarde_Sans_macro()
Dim fn$, ff, w As Worksheet
Application.DisplayAlerts = False
With ThisWorkbook
    fn = .FullName
    ff = .FileFormat
    For Each w In Worksheets: w.DrawingObjects.Visible = False: Next 'masque les objets
    .SaveAs Left(fn, InStrRev(fn, ".")) & "xlsx", 51
    For Each w In Worksheets: w.DrawingObjects.Visible = True: Next 'affiche les objets
    .SaveAs fn, ff
End With
End Sub
A+
Bonjour Job75.

J'ai un problème avec ton code. J'ai une erreur avec cette ligne.
For Each w In Worksheets: w.DrawingObjects.Visible = False: Next 'masque les objets


Impossible de définir la propriété visible de la classe drawing objets,

Merci.
 
- 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

Réponses
3
Affichages
514
Réponses
19
Affichages
2 K
Retour