Insertion du contenu d'une cellule dans le nom du fichier + enregistrement

Bonjour à tous,

Cela fait des lustres que je n'ai pas utilisé Excel...

Dans C12, j'ai une date (qui apparaît sous la forme 01/01/2018).

Je cherche à enregistrer le classeur sous le titre "quittance janvier 2018", au format pdf.

C'est sans doute possible, mais comment ?

Merci de votre aide.

André

Bonjour André,

je te propose ce code VBA :

Option Explicit

Sub Essai()
  Dim nom$
  If [C12] = "" Then Exit Sub
  If Not IsDate([C12]) Then Exit Sub
  nom = "quittance " & Format([C12], "mmmm") & " " & Year([C12])
  ActiveSheet.ExportAsFixedFormat ThisWorkbook.Path & "\" & nom, 0
End Sub

c'est pour sauvegarder la feuille active dans un fichier pdf avec le nom indiqué dans ton énoncé ; pour sauvegarder tout le classeur, je laisse un autre intervenant te répondre (faudra peut-être faire une boucle pour toutes les feuilles).


si ça marche pas, essaye avec la ligne ci-dessous (mais j'crois qu'mettre l'extension est facultatif) :

ActiveSheet.ExportAsFixedFormat ThisWorkbook.Path & "\" & nom & ".pdf", 0

dhany

Bonjour et merci de ta réponse ultra rapide.

Lorsque je lance la macro, j'obtiens le message "incompatibilité de type".

Il doit y avoir quelque chose qui cloche, mais quoi ?

j'ai testé avec une vraie date en C12 ; je suppose qu'en C12, tu as une date texte ; peux-tu confirmer ?

dhany

Je ne sais pas, mais je pense que j'ai une vraie date en C12 : pour l'insérer, je tape 01/2018 et le résultat s'affiche sous la forme 01/01/2018... Quand je vérifie le format de la cellule, elle est bien au format date...

en C12, j'ai saisi comme toi 01/2018 ➯ dans la barre de formule : 01/01/2018 ; dans la cellule : janv-18 ; format cellule : mmm-aa

c'est bien un format date, et à part la saisie manuelle en C12, tout c'qui précède est fait automatiquement.


pour pouvoir t'aider davantage, tu devrais joindre ton fichier (sans données confidentielles).

dhany

J'ai suivi tes indications.

J'obtiens ceci : incompatibilité de type

ActiveSheet.ExportAsFixedFormat ThisWorkbook.Path & "\" & nom, 0

je t'avais dit d'essayer aussi ceci :

ActiveSheet.ExportAsFixedFormat ThisWorkbook.Path & "\" & nom & ".pdf", 0

dhany

ajout : le 0 en bout de ligne correspond à xlTypePDF

donc tu peux mettre aussi :

ActiveSheet.ExportAsFixedFormat ThisWorkbook.Path & "\" & nom & ".pdf", xlTypePDF

j'pourrai mieux t'aider si tu envoies un fichier exemple ; pour cela, tu peux utiliser le bouton « Ajouter des fichiers » qui est situé juste sous la fenêtre d'édition de ton post.

dhany

@André

lis d'abord mes 2 posts précédents ; puis essaye ce fichier :

22exo-andrbar.xlsm (13.82 Ko)

fais Ctrl e ; puis Alt F11 pour voir le code VBA

dhany

Bonjour,

Un exemple à adapter.

Le PDF sera enregistré dans le répertoire du classeur Excel.

ALT F8, exécuter la procédure SaveWorksheetAsPDF.

Cdlt.

17andrbar.xlsm (21.27 Ko)
Public Sub SaveWorksheetAsPDF()
Dim sPath As String, sFile As String
    With ActiveSheet
        If Not IsDate(.Cells(12, 3)) Then Exit Sub
        sPath = ActiveWorkbook.Path & Application.PathSeparator
        sFile = "quittance " & Format(.Cells(12, 3), "mmmm yyyy") & ".pdf"
        .ExportAsFixedFormat Type:=xlTypePDF, _
                             Filename:=sPath & sFile, _
                             quality:=xlQualityStandard, _
                             includedocproperties:=True, _
                             ignoreprintareas:=False, _
                             openafterpublish:=True
    End With
End Sub

Je suis de retour de la plage...

Pour gagner du temps, j'ai essayé ton fichier :

Ca marche très bien jusqu'au message box inclus, qui s'affiche avec le nouveau nom..

J'ai essayé de réactiver la ligne de code qui sert à enregistrer le fichier en pdf avec le nouveau nom, en enlevant l'apostrophe,

et j'obtiens alors toujours la même erreur sur la ligne suivante :

ActiveSheet.ExportAsFixedFormat ThisWorkbook.Path & "\" & nom & ".pdf", xlTypePDF

Code d'erreur 13 incompatibilité de type.

encore à la plage ? vacances prolongées, hein, p'tit veinard !

j'te propose d'essayer le fichier de Jean-Eric, ou d'envoyer ton fichier.

dhany

Désolé, je crois que je me suis un peu mélangé les pinceaux dans les destinataires...

Jean Eric, ton exemple fonctionne parfaitement.

Merci infiniment !

Dhany, j'ai toujours la même erreur, comme indiqué dans mon précédent message.

Bien cordialement

André

Dhany,

J'habite Marseille, et je suis à la retraite : c'est pas difficile !

Je vais adopter la solution de Jean Eric.

Merci encore pour ton aide !

Bien cordialement,

André

* c'est une belle ville, Marseille ... surtout quand les éboueurs font pas grève !

* oui, c'est normal que la formule ne marche pas : je l'ai pas changée

* j'voulais seulement te démontrer que le nom était correct avec "janv-18" en C12

* comme la solution de Jean-Eric marche bien et que ton problème est réglé, tu peux passer le sujet en résolu

bonne continuation !

dhany

Rechercher des sujets similaires à "insertion contenu nom fichier enregistrement"