XL 2013 modifier code pour enregistrer en .xlsx

grisan29

XLDnaute Accro
bonjour a tous
j'ai ce code qui fonctionne très bien pour enregistrer le classeur actif en .xlsm et .PDF
mais au lieu d'enregistrer en .xlsm je le voudrais en .xlsx sans codes
Code:
Private Sub CommandButton1_Click()
Dim NomFicXL As String, CheminXL As String
    Dim NomFicPDF As String, CheminPDF As String
    Dim DLig As Long
    Dim shp As Shape
    Dim Sht As Worksheet

    Set Sht = ThisWorkbook.Sheets("Feuil1")

    'sauvegarde a partir de la dernière ligne écrite
    DLig = Sht.Range("A" & Rows.Count).End(xlUp).Row
    Dim NomDeFichier As String
    'donner le nom au fichier
    NomDeFichier = Sht.Range("B11").Value & " - " & Sht.Range("D10").Value
    NomFicXL = NomDeFichier & ".xlsm"
    NomFicPDF = NomDeFichier & ".pdf"
    'pensez a chager le chemin
    CheminPDF = "D:\essai perso\facturePDF" & "\"
    CheminXL = "D:\essai perso\Facturexlsx" & "\"

    ' Sauvegarder le classeur actif dans le chemin et le nom determiné
 
    ActiveWorkbook.SaveAs Filename:=CheminXL & NomFicXL, _
                          Password:="", WriteResPassword:="", _
                          ReadOnlyRecommended:=False, CreateBackup:=False

    ' Exporter en PDF
    ActiveWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminPDF & NomFicPDF, Quality:= _
                                                   xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                                                   OpenAfterPublish:=False
 
    MsgBox "Votre sauvegarde porte la référence : " & " " & NomFicXL & vbCrLf _
         & "Le fichier PDF à été créé sous le nom : " & NomFicPDF
End Sub
je ne comprends pas ou le faire
quand je change
Code:
NomFicXL = NomDeFichier & ".xlsm"
en .xlsx
c'est ce bloc qui bug
Code:
ActiveWorkbook.SaveAs Filename:=CheminXL & NomFicXL, _
                          Password:="", WriteResPassword:="", _
                          ReadOnlyRecommended:=False, CreateBackup:=False

et aussi pourquoi la feuille active prends le nom de la sauvegarde
Pascal
 
Dernière édition:

grisan29

XLDnaute Accro
bonsoir Lone wolf
ton code réécrit comme suit sauve juste en .xlsx et pas en .pdf et mets juste l'icone excel et un tiret car le classeur est enregistrer sans son nom
Code:
Sub Save_As()
Dim WbSource As Workbook, fichier As String, rep As String, nom As String
Dim plageSource As Range, celDest As Range

    fichier = ThisWorkbook.Path & "\classeur-source.xlsm"

    With ThisWorkbook.Sheets("data")
    'cherche dernière ligne dans feuille "data"
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        'défini la plage a copier
        Set plageSource = .Range("a13:e" & derlig)
        plageSource.Copy
    End With
    'ouvre le fichier source
    Set WbSource = Workbooks.Open(fichier)
    ' et sur la feuille 1 destination A13
    With ActiveWorkbook.Sheets("Feuil1")
        Set celDest = .Range("a13")
        celDest.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = 0
        Application.Goto .Range("a2")
    End With

    rep = "D:\essai perso\Facturexlsx" & "\" 'ThisWorkbook.Path & "\"
    nom = Sheets("Feuil1").Range("B11").Value & " - " & Sheets("Feuil1").Range("D10").Value '"Pascal"

    ActiveWorkbook.SaveAs Filename:=rep & nom & ".xlsx", FileFormat:=51, CreateBackup:=False
    ActiveWorkbook.Close True
End Sub

je ne cherche pas a remplir une autre feuille dans un autre classeur mais juste a sauvegarder l'actuelle en .xlsx et .PDF
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re Pascal

Mon code foncionne correctement, c'est toi qui te mêle les pinceaux.

nom = Sheets("Feuil1") , à quel classeur appartient cette feuille, tu peux me dire?

Dans mon code, si j'ai mis des variables, c'est bien pour faire la distinction entre ActiveWorkbook et ThisWorkbook. Revoici mon code, qui était un exemple, à toi de l'adapter.

VB:
Sub Save_As()
Dim WbSource As Workbook, fichier As String, rep As String, nom As String
Dim plageSource As Range, celDest As Range

    fichier = ThisWorkbook.Path & "\Classeur-source.xlsm"

    With ThisWorkbook.Sheets("Data")
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        Set plageSource = .Range("a1:e" & derlig)
        plageSource.Copy
    End With

    Set WbSource = Workbooks.Open(fichier)

    With ActiveWorkbook.Sheets("Feuil1")
        Set celDest = .Range("a1")
        celDest.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = 0
        Application.Goto .Range("a2")
    End With

    rep = ThisWorkbook.Path & "\"
    nom = "Pascal"

    ActiveWorkbook.SaveAs Filename:=rep & nom & ".xlsx", FileFormat:=51, CreateBackup:=False
    ActiveWorkbook.Close True
End Sub

Et tu ne peux pas enregistrer directement ton classeur en xlsx, parce qu'il contient une macro, c'est pour celà qu'il faut utiliser un classeur à part pour ouvrir le classeur source.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
293
Réponses
2
Affichages
267

Statistiques des forums

Discussions
312 307
Messages
2 087 096
Membres
103 468
dernier inscrit
TRINITY