Export facture en PDF

xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   -  
xavier62000 Messages postés 93 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

 

A voir également:

26 réponses

JCB40 Messages postés 3468 Date d'inscription   Statut Membre Dernière intervention   470
 

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 Sub

Crdlt


1
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

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


0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Le code passe sans erreur pour moi. Peut-être :

Chemin = ThisWorkbook.Path & " \ " & Dossier & " : \"

0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

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 Sub

Daniel


0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

Désolé, le répertoire ne se créé pas ainsi que la facture en Pdf

0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

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
0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Sers-toi de cette icône pour poster du code en indiquant "basic" :

Daniel

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Est-ce que le classeur est sur OneDrive ?

Daniel


0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

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


0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

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

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Merci de bien vouloir répondre :

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

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Pour le partage, je ne suis pas en mesure de tester. Il faudra faire des essais avec et sans partage.

Daniel

0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

Le fichier se trouve dans Dropbox :

Dans l'éditeur il répond :

C:\Users\user\Dropbox\CSD Finance

Xavier

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Bonjour et merci,

Je m'y mets dans la matinée.

Daniel

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Je n'ai pas trop l'habitude de Dropbox, mais ici, il mets "users" avec un "S" au bout :

?ThisWorkbook.Path & "|"


C:\Users\dcola\Dropbox|

Tu es sûr de ton coup ?

Daniel

0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

oui, bien entendu.

Je ferai plusieurs essais

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Le caracctère ":" n'est pas autorisé dans les noms de fichier ou de dossier. Je mets "

Factures PDF" provisoirement.

Daniel


0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

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 Sub

Daniel


0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Avant que je m'attaque à ton problème de courrier, confirme que tu souhaites envoyer le fichier par mail sans passer par OutLook.

Daniel


0
Dormeur74
 

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
0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Bonjour à toi  aussi,

"Trouvé plusieurs erreurs dans ce code"

Il en reste :

        If Dossier = True Then
            GetAttr (Chemin) And vbDirectory

???

Daniel

0
Dormeur74 > danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention  
 

Exact. Même pas vu que Dossier ne pouvait pas être un booléen. 

0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

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

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

Je ne pense pas avoir le temps ce soir. Je verrai demain.

Daniel

0
danielc0 Messages postés 2020 Date d'inscription   Statut Membre Dernière intervention   247
 

J'ai besoin de savoir quel est ton compte mail (par exemple xxxx.GMAIL.COM).

Daniel


0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

Envoyer en MP

xavier

0
xavier62000 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   2
 

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
0