Convertir en pdf puis envoyer par mail (TB)

Résolu
Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   -  
Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir toutes et tous !
Je souhaite convertir et envoyer une feuille excel et l'envoyer par courriel (TB).
Voici le code que j'utilise :
Sub CommandButton1_Click()
    PieceJointe = Environ("Temp") & "\" & Range("A3") & " " & "régie"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PieceJointe & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Destinataire = Range("A4")
    Sujet = Range("A3") & " " & "régie"
    Nom = Range("D8")
    Texte = "Bonjour " & Nom & "%0a%0aMerci de bien vouloir trouver ci-joint la facture en objet%0a%0aBien cordialement."

    Mail = "D:\PortableApps\ThunderbirdPortable\ThunderbirdPortable.exe"
    monCourriel = " -compose " & "to=" & Destinataire & "," & "subject=" & Sujet & "," & "body=" & Texte & "," & "attachment=" & PieceJointe & ".pdf"
    Shell Mail & monCourriel, vbNormalFocus
    'SendKeys "^{ENTER}", True 'Envoi automatique
    SendKeys "^+{ENTER}", True 'Dossier Messages en attente

End Sub


Je rencontre quelques petits problèmes :
- Je ne parviens pas à assigner un nombre décimal dans le nom de la pièce jointe ni dans l'objet du mail.
- La touche Verr Num se désactive à chaque exécution de la macro (pas très important, mais gênant quand même)
- J'utilise plusieurs boite dans Thunderbird et ne sais pas comment définir laquelle utiliser
- J'utilise dans TB "Envoyer plus tard" (je voudrais ajouter un délais de 10 minutes)

A terme, l'idée c'est de cliquer sur un bouton dans la feuille pour que tout se fasse ensuite.

Le fichier en question : https://www.cjoint.com/c/KKtsmXXCyg4
Je souhaite que le nom du fichier et de l'objet du mail soit : 2271,39 régie
En modifiant la première ligne de code :
PieceJointe = Environ("Temp") & "\" & Range("A3") & " " & "régie"

en
PieceJointe = Environ("Temp") & "\" & Range("E20") & " " & "régie"

Ca ne fonctionne plus. Le nombre est arrondi et le fichier non crée.
J'ai pensé à un formatage de cellule, mais même pas :(

Si quelqu'un peut m'apporter ses lumières, ce serait cool ! :)

Configuration: Office 2016 / TB 91.3.2


--
Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    pour t'aider à comprendre ton code, vois ceci: https://www.commentcamarche.net/contents/1381-debogage

    une fois que tu auras compris tout cela, partage avec nous la valeur de PieceJointe, ainsi que le contenu de la cellule référencée.

    à tout hasard: moi, j'essaierais cstr(csng(Range("E20")))
    0
    1. Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   57
       
      Bonsoir ! :)
      Je ne comprends pas bien le débogage, mais l'exécution de la procédure pas à pas détaillée, le nom est assez explicite.
      L'espion indique :
      - Expression : PieceJointe
      - Valeur : "C:\Users\maison\AppData\Local\Temp\2271,39 régie"
      - Type : Variant/String
      - Contexte : Feuil1CommandButton1_Click

      La valeur est juste pourtant, je ne comprends pas.
      Est-ce bien l'information demandée ? :)

      cstr(csng(Range("E20")))

      Ca va à quelle place ?
      Ainsi :
      PieceJointe = Environ("Temp") & "\" & CStr(CSng(Range("E20"))) & " " & "régie"

      ?

      Si non, je n'ai pas compris :(
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention  
       
      le nom de fichier est correct?
      0
    3. Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   57 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui, en tout cas pour l'espion.
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention  
       
      D'où vient alors ce que tu as écrit: "Le nombre est arrondi"?
      As-tu examiné les autres variables?
      monCourriel
      , par exemple.
      0
    5. Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   57 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      L'espion m'indique bien le bon nombre, avec la décimal : 2771.39

      Mais le mail qui s'ouvre avec le nom de la pièce jointe et l'objet m'affiche : 2771

      Accessoirement, la suite n'apparaît pas non plus, à savoir "régie"
      De plus, je souhaite ajouter un petit résumé des éléments et le problème est le même pour le montant des espèces, à savoir 52,60 pour l'espion mais juste 52 dans le mail

      Je ne comprends pas pourquoi l'espion me donne ce que je veux, mais pas le mail :/

      monCourriel indique : monCourriel : " -compose to=my-tests@outlook.com,subject=2271,39 régie,body=Bonjour%0a%0aRésumé des éléments :%0a%0aESPECES : 52,6,attachment=C:\Users\maison\AppData\Local\Temp\nombre déc
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    pour répondre à cette question:

    - La touche Verr Num se désactive à chaque exécution de la macro (pas très important, mais gênant quand même)

    cela provient de cette ligne:

     SendKeys "^+{ENTER}", True 'Dossier Messages en attente
    


    0
    1. Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   57
       
      Merci pour ton retour ! ^^
      C'est étrange tout de même, puisque le SendKeys doit envoyer "Ctrl + Maj + Entrer" et que cette suite ne désactive pas le padnum.
      Lorsque le message s'ouvre suite à la macro, et que je tape "Ctrl + Maj + Entrer", ça ouvre bien "Envoyer plus tard" :/
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention  
       
      Essaie ceci:

      Dim WshShell As Object
      Set WshShell = CreateObject("WScript.Shell")
      WshShell.SendKeys "^+{ENTER}", True 'Dossier Messages en attente
      


      @+
      0
    3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      et pour cette autre question:

      J'utilise dans TB "Envoyer plus tard" (je voudrais ajouter un délais de 10 minutes)

      Dim WshShell As Object
       Set WshShell = CreateObject("WScript.Shell")
       Application.Wait (Now + TimeValue("0:10:00")) '10 mn
       WshShell.SendKeys "^+{ENTER}", True 'Dossier Messages en attente


      @+ Le Pivert
      0
    4. Nai Messages postés 712 Date d'inscription   Statut Membre Dernière intervention   57 > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      Ca fait patienter Excel, ça ne met pas le message en attente ;)
      Je voudrais utiliser ceci :
      0