ActiveSheet.OLEObjects

chinel

XLDnaute Impliqué
bonjour tout le monde ! voici mon code:

Sub Sauvegarde_Sur_Répertoire(Choix, Client)

'------------------ SAUVEGARDE SUR REPERTOIRE EXCEL ----------
If Choix = "DEVIS n°" Then
Sheets(Client).Copy
ActiveWorkbook.SaveAs Filename:="c:\Save_Devis_Excel\Devis" & "\" & Client & ".xls"
ActiveWorkbook.Close
ElseIf Choix = "FACTURE n°" Then
Sheets(Client).Copy
ActiveWorkbook.SaveAs Filename:="c:\Save_Devis_Excel\Facture" & "\" & Client & ".xls"
ActiveWorkbook.Close
End If
End Sub

dans mon code, je voudrais bien supprimer le code vba + les boutons en gardant les images d'origines
merci de votre aide !
 

job75

XLDnaute Barbatruc
Re : ActiveSheet.OLEObjects

Bonjour chinel, Philippe,

Pour ne pas avoir de code VBA ne pas copier la feuille mais les cellules :

Code:
Sub Sauvegarde_Sur_Répertoire(Choix$, Client$)
Dim fichier As String
'------------------ SAUVEGARDE SUR REPERTOIRE EXCEL ----------
If Choix = "DEVIS n°" Then
  fichier = "c:\Save_Devis_Excel\Devis" & "\" & Client & ".xls"
  GoTo 1
ElseIf Choix = "FACTURE n°" Then
  fichier = "c:\Save_Devis_Excel\Facture" & "\" & Client & ".xls"
  GoTo 1
End If
Exit Sub
1 Application.ScreenUpdating = False
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
    .Name = Client
    ThisWorkbook.Sheets(Client).Cells.Copy .[A1] 'copie les cellules
    .[A1].Copy .[A1] 'vide le presse-papier (nécessaire sur Excel 2007)
    On Error Resume Next 'si le fichier existe déjà
    .SaveAs fichier, IIf(ThisWorkbook.FileFormat = xlNormal, 1, 56)
    .Parent.Close False
End With
End Sub
Quant aux boutons ou objets, ajuster (si nécessaire) leur propriété à Ne pas déplacer ou dimensionner avec les cellules.

A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : ActiveSheet.OLEObjects

Re,

@ chinel:
si tu as la version 2007, effectue la sauvegarde au format .xlsx au lieu de .xls

ActiveWorkbook.SaveAs Filename:="c:\Save_Devis_Excel\Devis" & "\" & Client & ".xlsx"

le format .xlsx ne prends pas les macros

à+
Philippe
 

job75

XLDnaute Barbatruc
Re : ActiveSheet.OLEObjects

Bonjour Philippe,

Tu as raison mais pour passer d'un fichier .xlsm à un fichier .xlsx il faut prendre des précautions :

- préciser le format du nouveau fichier (51)

- neutraliser l'alerte Excel.

Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="c:\Save_Devis_Excel\Devis" & "\" & Client & ".xlsx", 51
Et il restera à supprimer les boutons ou objets.

A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : ActiveSheet.OLEObjects

Re-bonjour
Bonjour Philippe,

Tu as raison mais pour passer d'un fichier .xlsm à un fichier .xlsx il faut prendre des précautions :

- préciser le format du nouveau fichier (51)

- neutraliser l'alerte Excel.

Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="c:\Save_Devis_Excel\Devis" & "\" & Client & ".xlsx", 51
Et il restera à supprimer les boutons ou objets.

A+
@Job,
Pourrait-tu nous expliquer le "51" ?
le fait de mettre uniquement .xlsx ne suffit-il pas ?

à+
Philippe
 

job75

XLDnaute Barbatruc
Re : ActiveSheet.OLEObjects

Re,

Pardon, le code de mon post #5 est incomplet, il faut écrire :

Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:="c:\Save_Devis_Excel\Devis" & "\" & Client & ".xlsx", FileFormat:=51
ou alors ne nommer aucun des paramètres :

Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "c:\Save_Devis_Excel\Devis" & "\" & Client & ".xlsx", 51
A+
 

Discussions similaires

Réponses
3
Affichages
294
Réponses
17
Affichages
951

Statistiques des forums

Discussions
312 194
Messages
2 086 071
Membres
103 110
dernier inscrit
Privé