Export facture en PDF
danielc0 Messages postés 2206 Date d'inscription Statut Membre Dernière intervention -
Bonjour, à vous
Je cherche à Exporter mes factures Excel en PDF en créant un dossier en cliquant sur un bouton Exporter pour éviter de faire les manipulations.
Le nom du fichier exporter se concatène avec les cellules E5 et L1 (num facture + client)
Pouvez me faire part, pourquoi le code ci-dessous ne fonctionne pas !! Le fichier se trouve dans un répertoire "Finance" sur onedrive et normalement je devrais retrouver Finance/factures Pdf.
Merci d'avance
Sub EXPORT_PDF()
Dim Dossier
Dim Chemin As String
Dim ws As Worksheet
Set ws = ActiveSheet
If MsgBox(" Voulez vous exporter la facture en PDF ", vbYesNo + vbQuestion, "Confirmation….. ! ") = vbYes Then
On Error Resume Next
Dossier = Application.InputBox("Insérer nom du dossier", "Création du dossier", "Factures PDF ")
Chemin = ThisWorkbook.Path & " / " & Dossier & " : "
If Dossier = True Then
GetAttr (Chemin) And vbDirectory
Else
MkDir (Chemin)
End If
ws.ExportAsFixedFormat xlTypePDF, Chemin & Range("E5").Value & " _ " & Range("L1").Value, xqualitystandard, True, False, 1, 1, False
End If
End Sub
Windows / Edge 142.0.0.0
45 réponses
- 1
- 2
- 3
Le problème porte sur l’export d’une facture Excel en PDF avec création d’un dossier et nom de fichier calculé à partir des cellules E5 et L1, le tout dans un répertoire Finance sur OneDrive, mais le code actuel échoue. La solution la plus pertinente propose de déclarer Dossier comme chaîne, de construire le chemin avec des backslashes, de tester/créer le dossier via Dir et MkDir, puis d’exporter le PDF en utilisant le chemin complet et le nom fichier provenant de E5 et L1. Cette approche corrige l’erreur où Dossier était traité comme booléen et évite les séparateurs inadaptés dans le chemin. Des éléments évoquent que le stockage sur OneDrive ou Dropbox peut influencer le chemin d’accès et que des vérifications avec ThisWorkbook.Path ou des tests supplémentaires peuvent aider à diagnostiquer le chemin réel.
-
Bonjour
A tester
Sub EXPORT_PDF() Dim Dossier As String Dim Chemin As String Dim ws As Worksheet Set ws = ActiveSheet If MsgBox("Voulez-vous exporter la facture en PDF ?", vbYesNo + vbQuestion, "Confirmation….. !") = vbYes Then On Error Resume Next Dossier = Application.InputBox("Insérer nom du dossier", "Création du dossier", "Factures PDF") ' Assurez-vous que le chemin est correct Chemin = ThisWorkbook.Path & "\" & Dossier & "\" ' Vérifiez si le dossier existe, sinon créez-le If Dir(Chemin, vbDirectory) = "" Then MkDir Chemin End If ' Exporter en PDF ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Range("E5").Value & " _ " & Range("L1").Value & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False End If End SubCrdlt
-
Bonjour,
"ne fonctionne pas"
Il ne donne pas le résultat escompté, ou il provoque une erreur ? Dans ce dernier cas, laquelle et sur quelle ligne ?
Daniel
-
Le code passe sans erreur pour moi. Peut-être :
Chemin = ThisWorkbook.Path & " \ " & Dossier & " : \"
-
Bonjour Daniel
Le code de JCB40 fonctionne, La facture se créer en PDF dans un répertoire dejà créer. Mais perso, je préfère créer le répertoire avec l'Input box. Du moins c'est ce que je croyais !!
Sub EXPORT1_PDF() Dim Dossier As String Dim Chemin As String Dim ws As Worksheet Set ws = ActiveSheet If MsgBox("Voulez-vous exporter la facture en PDF ?", vbYesNo + vbQuestion, "Confirmation….. !") = vbYes Then On Error Resume Next Dossier = Application.InputBox("Insérer nom du dossier", "Création du dossier", "Factures PDF") Chemin = ThisWorkbook.Path & "\" & Dossier & "\" If Dir(Chemin, vbDirectory) = "" Then MkDir Chemin End If ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Range("E5").Value & " _ " & Range("L1").Value & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False End If End Sub -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Teste comme ça :
Sub EXPORT_PDF() Dim Dossier Dim Chemin As String Dim ws As Worksheet Set ws = ActiveSheet If MsgBox(" Voulez vous exporter la facture en PDF ", vbYesNo + vbQuestion, "Confirmation….. ! ") = vbYes Then On Error Resume Next Dossier = Application.InputBox("Insérer nom du dossier", "Création du dossier", "Factures PDF ") Chemin = ThisWorkbook.Path & " \ " & Dossier & " : \" Var = "" Var = Dir(Chemin, vbDirectory) If Err.Number <> 0 Then Err.Clear MkDir Dossier End If ws.ExportAsFixedFormat xlTypePDF, Chemin & Range("E5").Value & " _ " & Range("L1").Value, _ xqualitystandard, True, False, 1, 1, False End If End SubDaniel
-
Désolé, le répertoire ne se créé pas ainsi que la facture en Pdf
-
Après que le fichier PDF est généré, je cherche à envoyer par mail la facture avec le code ci-dessous.
Je n'arrive pas à attacher ma facture qui vient d'être généré
sub mail Dim mail as CDO.Message Set Mail = New CDO.Message Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpusessl »)=True Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpauthenticate »)=1 Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpserver »)= »smtp.gmail.com » Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpserverport »)=25 Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/sendusing »)=2 Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/senusername »)= « ***@*** » Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/sendpassword »)= « XXXXXXXXXX@ » Mail.Configuration.fields.Update With Mail .Subject = « CSD Tennis de Table – Facture » .From = « ***@*** » .To = Sheets (« Modele Facture »).Range (« L10 »).Value ‘.CC = « ***@*** » . TextBody = « Merci de recevoir votre facture relative à vos engagements. Cordialement » .AddAttachement dossier « End With One error resume Next Mail Send Set mail = Nothing End sub -
Est-ce que le classeur est sur OneDrive ?
Daniel
-
Dans la fenêtre de l'éditeur VB, clique sur "Affichage" et "Fenêtre d'exécution"
Dans cette fenêtre d'exécution, entre :
?ThisWorkbook.Path
Appuie sur Entrée et copie ce qui s'affiche dans ta réponse.
Daniel
-
Le fichier se trouve dans Dropbox :
C:\Users\user\Dropbox\CSD Finance
Il sera partagé avec une autre personne pour une utilisation partagée.
Xavier
-
Le fichier se trouve dans Dropbox :
Dans l'éditeur il répond :
C:\Users\user\Dropbox\CSD Finance
Xavier
-
oui, bien entendu.
Je ferai plusieurs essais
-
Le caracctère ":" n'est pas autorisé dans les noms de fichier ou de dossier. Je mets "
Factures PDF" provisoirement.
Daniel
-
J'ai dû ôter les espaces au début et à la fin des noms de dossier qui ne sont pas autorisés non plus. Essaie :
Sub EXPORT_PDF() Dim Dossier Dim Chemin As String Dim ws As Worksheet Set ws = ActiveSheet If MsgBox(" Voulez vous exporter la facture en PDF ", vbYesNo + vbQuestion, "Confirmation….. ! ") = vbYes Then On Error Resume Next Dossier = Application.InputBox("Insérer nom du dossier", "Création du dossier", "Factures PDF") Chemin = ThisWorkbook.Path & "\" & Dossier & "\" Var = Dir(Chemin, vbDirectory) If Var = "" Then On Error GoTo 0 ChDir ThisWorkbook.Path MkDir ThisWorkbook.Path & "\" & Dossier End If ws.ExportAsFixedFormat xlTypePDF, Chemin & Range("E5").Value & " _ " & Range("L1").Value, _ xqualitystandard, True, False, 1, 1, False End If End SubDaniel
-
Avant que je m'attaque à ton problème de courrier, confirme que tu souhaites envoyer le fichier par mail sans passer par OutLook.
Daniel
-
Trouvé plusieurs erreurs dans ce code. Proposition :
Option Explicit Sub EXPORT_PDF() Dim Dossier Dim Chemin As String Dim ws As Worksheet Set ws = ActiveSheet If MsgBox(" Voulez vous exporter la facture en PDF ", vbYesNo + vbQuestion, "Confirmation….. ! ") = vbYes Then On Error Resume Next Dossier = Application.InputBox("Insérer nom du dossier", "Création du dossier", "Factures PDF") Chemin = ThisWorkbook.Path & "\" & Dossier If Dossier = True Then GetAttr (Chemin) And vbDirectory Else MkDir (Chemin) End If ws.ExportAsFixedFormat xlTypePDF, Chemin & "\" & Range("E5").Value & " _ " & Range("L1").Value, xlQualityStandard, True, False, 1, 1, False End If End Sub -
Bonjour Daniel,
Impeccable, sa fonctionne très bien.
Alors Oui, je souhaite envoyer :mes factures sans Outloock et dans le cas présent se sera avec Gmail. Je regarderai plus tard si je trouve les éléments de paramétrage avec SFR.
Juste pour savoir, j'ai a peu près 100 factures à faire par mois et à envoyer. Serait-il possible de faire une boucle des factures 1 à la dernière et les envoyer ensuite par mail.
Faut-il t'envoyer le code que j'ai préparé, je n'arrive pas à attacher la facture dans le mail. ??
A contrario, se sera 1 par 1 pas de soucis
Merci Cordialement
-
J'ai besoin de savoir quel est ton compte mail (par exemple xxxx.GMAIL.COM).
Daniel
-
Envoyer en MP
xavier
-
Voilà ce que j'ai commencé pour envoyer le mail lié à la facture.
Hic, je n'arrive pas à attacher la facture au mail
Dim mail as CDO.Message Set Mail = New CDO.Message Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpusessl »)=True Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpauthenticate »)=1 Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpserver »)= »smtp.gmail.com » Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/smtpserverport »)=25 Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/sendusing »)=2 Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/senusername »)= « ***@*** » Mail.configuration.fields.Item(« http://schemas.microsoft.com/cdo/configuration/sendpassword »)= « XXXXXXXXXXx » Mail.Configuration.fields.Update With Mail .Subject = « CSD Tennis de Table – Facture » .From = « ***@*** » .To = Sheets (« Modele Facture »).Range (« L10 »).Value ‘.CC = « ***@*** » . TextBody = « Merci de recevoir votre facture relative à vos engagements. Cordialement » .AddAttachement dossier & »facture End With One error resume Next Mail Send Set mail = Nothing End sub
- 1
- 2
- 3
