Sauvegarder factures en PDF
simkmil
Messages postés
505
Date d'inscription
Statut
Membre
Dernière intervention
-
simkmil Messages postés 505 Date d'inscription Statut Membre Dernière intervention -
simkmil Messages postés 505 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai encore besoin d'un petit coup de main pour l'élaboration de la facture d'un ami, monteur de pneus.
J'ai bien avancé (beaucoup grâce à l'aide du forum de CCM !)
J'ai maintenant toute ma facture qui s'automatise :
Les noms dans une liste déroulante. Le reste de l'adresse va se chercher automatiquement.
Je sais vider mes cellules et augmenter mon numéro de facture.
Je sauvegarde également ma facture dans un "Historique factures" équivalent à un facturier de sortie.
Mais maintenant, je voudrais sauver ma facture en pdf, afin de pouvoir - l'envoyer par mail au client
- pouvoir l'imprimer à nouveau en cas de demande.
et c'est là que je cale.
J'ai suivi le tutoriel de Naël sur YouTube, mais la partie permettant de sauvegarder en pdf ne fonctionne pas.
Je vous joins mon code pour cette partie, saurez vous m'aider ?
Sub EnregistrementFacture()
'je d?clare mes variables
Dim NomDossier As String
Dim Chemin As String
'je nomme le dossier et donne le chemin
NomDossier = Application.InputBox("ArchivageFactures:", "Ann?e ?")
Chemin = "C:\Documents\ArchivageFactures\" & NomDossier & "\"
If NomDossier = "" Then Exit Sub
'j'enregistre au format PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypexlsx, Filename:= _
Chemin & "FactureNumero_" & Range("B10").Value & ".pdf", quality:= _
xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _
from:=1, to:=1, openafterpublish:=False
End Sub
J'ai encore besoin d'un petit coup de main pour l'élaboration de la facture d'un ami, monteur de pneus.
J'ai bien avancé (beaucoup grâce à l'aide du forum de CCM !)
J'ai maintenant toute ma facture qui s'automatise :
Les noms dans une liste déroulante. Le reste de l'adresse va se chercher automatiquement.
Je sais vider mes cellules et augmenter mon numéro de facture.
Je sauvegarde également ma facture dans un "Historique factures" équivalent à un facturier de sortie.
Mais maintenant, je voudrais sauver ma facture en pdf, afin de pouvoir - l'envoyer par mail au client
- pouvoir l'imprimer à nouveau en cas de demande.
et c'est là que je cale.
J'ai suivi le tutoriel de Naël sur YouTube, mais la partie permettant de sauvegarder en pdf ne fonctionne pas.
Je vous joins mon code pour cette partie, saurez vous m'aider ?
Sub EnregistrementFacture()
'je d?clare mes variables
Dim NomDossier As String
Dim Chemin As String
'je nomme le dossier et donne le chemin
NomDossier = Application.InputBox("ArchivageFactures:", "Ann?e ?")
Chemin = "C:\Documents\ArchivageFactures\" & NomDossier & "\"
If NomDossier = "" Then Exit Sub
'j'enregistre au format PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypexlsx, Filename:= _
Chemin & "FactureNumero_" & Range("B10").Value & ".pdf", quality:= _
xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _
from:=1, to:=1, openafterpublish:=False
End Sub
Configuration: Windows / Edge 17.17134
4 réponses
-
Bonjour,
Teste comme ceciSub EnregistrementFacture() 'je d?clare mes variables Dim NomDossier As String Dim Chemin As String 'je nomme le dossier et donne le chemin NomDossier = Application.InputBox("ArchivageFactures:", "Année ?") Chemin = "C:\Documents\ArchivageFactures\" & NomDossier & "\" If NomDossier = "" Then Exit Sub 'j'enregistre au format PDF ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ Chemin & "FactureNumero_" & Range("B10").Value & ".pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ From:=1, To:=1, OpenAfterPublish:=False End Sub-
-
Bonjour,
je viens d'essayer … et ça ne fonctionne toujours pas !
j'ai pourtant fait un copier-coller de ce que tu m'as envoyé, et toujours la partie ActiveSheet…. qui se met en jaune.
Je vais tenter de t'envoyer l'entièreté de mon fichier via cijoint.
Merci d'avance de regarder où j'ai fait une erreur (ou plusieurs)
sur la facture j'ai mis des boutons :
Sauvegarder m'envoie les données sur Historique_Facture
Imprimer : m'imprime deux exemplaires
Enregistrement facture en pdf : c'est là que ça cloche !
Nouvelle facture et effacement des données : fonctionne correctement.
Mon projet serait également de ne faire qu'un seul bouton pour l'enregistrement en pdf et la sauvegarde.
voici le lien : https://cjoint.com/c/JEyiTawLSeR
grand merci d'avance.
-
-
Bonjour,
Tu as oublié de créer un nouveau dossier comme ceci:
Sub EnregistrementFacture() 'je déclare mes variables Dim NomDossier As String Dim Chemin As String 'je nomme le dossier NomDossier = Application.InputBox("ArchivageFactures:", "Année ?") 'je crée le dossier MkDir "C:\Documents\ArchivageFactures\" & NomDossier 'je donne le chemin Chemin = "C:\Documents\ArchivageFactures\" & NomDossier & "\" If NomDossier = "" Then Exit Sub 'j'enregistre au format PDF ActiveSheet.ExportAsFixedFormat Type:=xlTypexlsx, Filename:= _ Chemin & "FactureNumero_" & Range("B10").Value & ".pdf", quality:= _ xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _ from:=1, to:=1, openafterpublish:=False End Sub
-
-
Bonjour,
je viens d'essayer … et ça ne fonctionne toujours pas !
j'ai pourtant fait un copier-coller de ce que tu m'as envoyé, et toujours la partie ActiveSheet…. qui se met en jaune.
Je vais tenter de t'envoyer l'entièreté de mon fichier via cijoint.
Merci d'avance de regarder où j'ai fait une erreur (ou plusieurs)
sur la facture j'ai mis des boutons :
Sauvegarder m'envoie les données sur Historique_Facture
Imprimer : m'imprime deux exemplaires
Enregistrement facture en pdf : c'est là que ça cloche !
Nouvelle facture et effacement des données : fonctionne correctement.
Mon projet serait également de ne faire qu'un seul bouton pour l'enregistrement en pdf et la sauvegarde.
voici mon fichier : https://cjoint.com/c/JEyiTawLSeR- C'est ton chemin qui n'est pas bon, il manque des éléménts
celui-ci qui doit être bon
ChDir "C:\Users\bs382\OneDrive\Documents\Archivage Factures\2020" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\bs382\OneDrive\Documents\Archivage Factures\2020\Facturier_DHoe.xlsm" _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
et celui là
"C:\Documents\ArchivageFactures\" & NomDossier & "\"
où il manque
C:\Users\bs382\OneDrive
corrige le , ça devrait fonctionner
Mon projet serait également de ne faire qu'un seul bouton pour l'enregistrement en pdf et la sauvegarde.
appeler ces macros dans le même bouton:
Sub EnregistrementFacture() 'enregistrement PDF 'je déclare mes variables Dim NomDossier As String Dim Chemin As String 'je nomme le dossier et donne le chemin NomDossier = Application.InputBox("ArchivageFactures:", "Année ?") If NomDossier = "" Then Exit Sub 'je crée le dossier MkDir "C:\Users\bs382\OneDrive\Documents\ArchivageFactures\" & NomDossier 'je donne le chemin Chemin = "C:\Users\bs382\OneDrive\Documents\ArchivageFactures\" & NomDossier & "\" 'j'enregistre au format PDF ActiveSheet.ExportAsFixedFormat Type:=xlTypexlsx, Filename:= _ Chemin & "FactureNumero_" & Range("B10").Value & ".pdf", quality:= _ xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _ from:=1, to:=1, openafterpublish:=False End Sub Sub Enregistrement() 'sauvegarde ChDir "C:\Users\bs382\OneDrive\Documents\Archivage Factures\2020" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\bs382\OneDrive\Documents\Archivage Factures\2020\Facturier_DHoe.xlsm" _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub
voilà
@+ Le Pivert - Merci, merci, merci !!!
Je vais mettre cela en route dès demain matin (car aujourd'hui j'ai suffisamment "joué" avec mon PC !)
C'est une chose formidable que cette aide que l'on peut trouver ici.
Je suis à la retraite, et je tente de faire un petit programme pour un ami. J'ai de bonnes connaissances en Excel, mais peu d'expérience en VBA. J'ai bien suivi des cours (en cours du soir) mais cela fait quand même quelques années …
J'espère à mon tour pouvoir aider prochainement quelqu'un à l'aide de mes petites connaissances.
Merci, continuez bien, vous êtes formidables.
-
-
Bonjour, hélas j'ai toujours mon problème !
si je lance la sauvegarde en pdf j'ai la ligne MkDir … qui se met en jaune
je lui met un apostrophe (pour l'éviter) et c'est le bloc ActiveSheet.Export… qui se met en jaune.
J'ai également changé le type en pdf.
Enfin je pense avoir suivi toutes vos indications ?? où alors je me suis planté quelque part ?
Je vous renvoie par cjoint mon fichier actuel (légèrement changé par rapport à celui de hier puisque j'y ai introduit vos changements.
voici le lien : https://cjoint.com/c/JEzicVX0tkR
encore merci de votre aide-
Cela ne sert à rien d'envoyer ton fichier, le problème vient de ton chemin!
Et nous sur notre machine, ton chemin on ne peut pas le tester!
Tu vas te servir de l’enregistreur de macro.
Tu enregistres ton classeur en PDF manuellement et là tu auras ta macro avec le chemin correct. il te suffira de mettre cette macro dans ton projet
Voilà, c'est ce que tu aurais dû faire dès le départ- Bonsoir,
d'abord merci beaucoup pour le mal que tu te donnes, mais j'ai toujours un problème.
J'ai pris ton exemplaire et ai sauvegardé une première facture : OK tout fonctionne et j'ai une inscription : "facture enregistrée"; là, je me dis … Super ! ça fonctionne et du coup je fais une seconde facture et … patatra ça cale au niveau du MKdir
Je me demande si c'est normal que l'on crée un directory à chaque facture ? je pense que une fois créé il est bon pour toutes les factures.
Je l'ai mis entre apostrophes et paf, c'est la partie ActiveSheet qui se met en jaune.
J'ai créé mon chemin en utilisant l'enregistreur de macro, cela donne :
ChDir "E:\Essai Factures"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"E:\Essai Factures\Facturier_DHoe.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
et je retrouve uniquement ma première facture, mais sans son numéro (utile pour la retrouver)
encore une fois, merci de ton aide. Il n'y a pas urgence, je ne reviendrai sur le PC que demain dans la journée.
en tant que retraité confiné, je n'ai pas une minute à moi. Tel par exemple, cet après midi aller à Bruxelles (100 km de chez moi) pour y chercher un duplicata pour le permis de conduire de mon petit fils, ayant égaré l'original et il était impossible de recevoir cela par mail… pourtant nous sommes au XXI siècle.
Bonne soirée; - Je me demande si c'est normal que l'on crée un directory à chaque facture ? je pense que une fois créé il est bon pour toutes les factures.
Si tu enregistres dans le même dossier, alors à quoi te sert cette ligne de code?
'je nomme le dossier et donne le chemin NomDossier = Application.InputBox("ArchivageFactures:", "Année ?")
et je retrouve uniquement ma première facture, mais sans son numéro (utile pour la retrouver)
dans le chemin il manque quelque chose!
"E:\Essai Factures\Facturier_DHoe.pdf"
il manque ceci:
"FactureNumero_" & Range("B10").Value
Voilà il suffit de corriger ces 2 points et cela devrait être opérationnel
@+ Le Pivert
-
-
Ouf ! ça y est, ça fonctionne.
Je n'ai pas su revenir plus tôt sur ce problème, mais j'avais décidé de m'y remettre ce matin afin de pouvoir en terminer.
Tout (presque) fonctionne.
Je fais ma facture, je l'imprime en deux exemplaires, je l'inscrit dans l'historique clients puis je la sauvegarde en pdf.
Sauf que en faisant ces deux opérations, j'incrémente deux fois et je voudrais diminuer le nombre de boutons afin de simplifier l'utilisation de celui qui s'en servira.
J'ai un module 1
archiver : il écrit dans l'historique clients, vide le corps de facture , vide le nom et incrémente le nouveau numéro de facture.
le module 2 permet d'imprimer deux exemplaires : OK
le module 3 incrémente le numéro de facture : je pense que je devrais le supprimer
le module 4 enregistre en pdf
le module 5 enregistre en pdf serait à supprimer.
Il faut que je sauvegarde dans l'historique client les données telles qu'elles sont, mais je dois également sauvegarder "l'image" de la facture avec son numéro afin de pouvoir procéder à une réimpression plus tard ou simplement de l'envoyer au client par pdf.
Je suis un peu perdu, et j'ai peur d'oter des choses essentielles...
Merci d'encore un peu m'aider.
Bonne journée à vous.-
pour cela:
mais je dois également sauvegarder "l'image" de la facture avec son numéro
Option Explicit 'enregistrer facture au nom du client dans le même dossier que ce classeur Sub savefacture() Worksheets("Facture").Select cacherbouton Worksheets("Facture").Copy With ActiveWorkbook .SaveAs Filename:=ThisWorkbook.Path & "\" & Range("E10") & ".xlsx", FileFormat:=xlOpenXMLWorkbook .Close SaveChanges:=False End With reinitialiser MsgBox "Enregistrer dans le même dossier", vbInformation, "Enregistrement facture" End Sub Sub cacherbouton() Dim Sh As Shape For Each Sh In ActiveWorkbook.ActiveSheet.Shapes If Sh.Name <> "Image 1" And Sh.Name <> "Rectangle 2" Then Sh.Visible = False End If Next Sh End Sub Sub reinitialiser() Dim Sh As Shape For Each Sh In ActiveWorkbook.ActiveSheet.Shapes Sh.Visible = True Next End Sub
Voilà
@+ Le Pivert
-