Export facture en PDF

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

45 réponses

Résumé de la discussion

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.

Généré automatiquement par IA
sur la base des meilleures réponses
danielc0 Messages postés 2106 Date d'inscription   Statut Membre Dernière intervention   257
 

J'en déduis que l'adresse avec laquelle tu envoies le mail est une adresse GMail ?

Daniel


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

Oui, c'est bien ça. Je t'ai envoyé mon compte gmail en MP

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

Bonjour,

Ca a l"air assez compliqué avec GMail. Tu dois avoir un mot de passe "GMail App Password. Pour en créer un :(c'est en anglais) :

Au besoin, je peux le traduire. Je vais t'nvoyer le code mais je ne peux pa le tester moi-même.

Daniel


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

Bonjour,

Je viens d'en avoir la confirmation, CDO ne fonctionne plus.

Daniel


0

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

Posez votre question
xavier62000 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   2
 

Bonsoir Daniel, 

Je vais devoir me convertir à Outlook donc avec un compte autre que le mien. 

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

Bonsoir Daniel

Compte Outlook créer et envoyé en MP

Bonne soirée

xavier

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

Teste le code ci-dessous. Il faut modifier la 4e ligne pour indiquer l'adresse du compte expéditeur :

Expediteur = "XXXX@XXXX.com"
Sub Mail()
  Dim NS As Object, GaddressList, Expediteur As String, Exp As Object
  Dim M As Object, olApp As Object, oAccount As Object
  Expediteur = "XXXX@XXXX.com"
  Set olApp = CreateObject("Outlook.application")
  For Each oAccount In olApp.Session.Accounts
    Debug.Print oAccount.smtpaddress
    If oAccount.smtpaddress = Expediteur Then
      Set M = olApp.CreateItem(olMailItem)
      With M
        .Subject = "CSD Tennis de Table – Facture"
        .Body = "Merci de recevoir votre facture relative à vos engagements. Cordialement"
        .Recipients.Add Sheets("Modele Facture ").Range("L10").Value
        Set .sendusingaccount = oAccount
        .attachments.Add "c:\XXXXXX.pdf"
        .Send
      End With
      Exit For
    End If
  Next
End Sub

Daniel 


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

Bonjour Daniel,

Désolé de répondre tardivement !!

j'ai un problème de configuration avec Outlook. Donc je ne peux pas dire si c'est OK

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

Voilà le message d'erreur. 

Et dans mon compte, je ne vois pas de problème

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

Bonjour,

Tu utilises Outlook.com ou l'appli de bureau Outlook. Les macros ne fonctionnent qu'avec cette dernière.

Daniel

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

j'ai les 2.

Outlook classicisme et outlook de microsoft 365

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

Et le message se produit quand ?

Daniel

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

le message se produit après la macros d excel.

faut il desinstaller outlook de microsoft 365.

c'est le classic qui va pas

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

Non, j'ai testé avec Outlook 365 classic sans erreur. Est-ce que tu t'es connecté à ton compte Microsoft comme ils te le disent ?

Daniel


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

oui. mais après je ne sais pas où aller et voir quoi

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

Tu ne vois rien d'anormal concernant ton abonnement à Microsoft 365 ? Sinon, Ouvre le classeur dans Excel. Appuie sur les touches Alt+F11. La fenêtre de l'éditeur VB s'ouvre. Clique dans la macro Mail.Appuie sur F8 pour exécuter la macro ligne par ligne. Recommence jusqu'à arriver à une erreur ou à la fin de la macro. Est-ce qu'il y a une erreur ?

Daniel


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

on est bien d'accord que je dois utiliser le classic et non le nouvel outlook ??

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

Normalement, on doit pouvoir utiliser les deux. Moi, j'ai testé avec Classic. New me sort par les yeux, mais c'est uniquement un différence d'interface utilisateur. Donc aucune différence pour les macros.

Daniel


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

voilà ce que ça fait 

2°) Je rentre le mot de passe

3°)

Est dans mon compte d'abonnement je ne sais pas quoi faire ce n'est pas moi qui gère, trop compliqué pour moi.

Quand je lance outloock classic sans passer par le fichier Excel c'est pareil.

Idem quand jutilise l'adresse mail du lien Hypertexte

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

Une fois que tu es là, clique sur le menu "Affichage" et "Fenêtre variables locales". Dan cette fen^tre, clique sur le "+" en regard de olApp pour déplier les propriétés. Déplie "Session" et "Accounts". En dessous de "Accounts", quel nombre y a-t-il en face de "Count" ?

Daniel


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

Exécute aussi cette macro qui doit afficher le numéro et le libellé de l'erreur.

Sub Mail()
  Dim NS As Object, GaddressList, Expediteur As String, Exp As Object
  Dim M As Object, olApp As Object, oAccount As Object
  Expediteur = "XXXX@XXXX.com"
  Set olApp = CreateObject("Outlook.application")
  On Error Resume Next
  For Each oAccount In olApp.Session.Accounts
    MsgBox Err.Number & " " & Err.Description
    Exit Sub
    Debug.Print oAccount.smtpaddress
    If oAccount.smtpaddress = Expediteur Then
      Set M = olApp.CreateItem(olMailItem)
      With M
        .Subject = "CSD Tennis de Table – Facture"
        .Body = "Merci de recevoir votre facture relative à vos engagements. Cordialement"
        .Recipients.Add Sheets("Modele Facture ").Range("L10").Value
        Set .sendusingaccount = oAccount
        .attachments.Add "c:\XXXXXX.pdf"
        .Send
      End With
      Exit For
    End If
  Next
End Sub

Daniel


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

Bonjour Daniel,

Désolé, de repondre tardivement 

Voilà pour les variables locales j'ai strictement rien

Et Pour l'execution de la macro pas de numéro ni de libellé d'erreur

0