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

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
 

Staple1600

XLDnaute Barbatruc
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
 

job75

XLDnaute Barbatruc
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+
 

Hugues1976

XLDnaute Nouveau
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 ?
 

Hugues1976

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
313 208
Messages
2 096 233
Membres
106 540
dernier inscrit
Piehas