Création et envoi pdf par macro VBA [Résolu/Fermé]

Signaler
-
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
-
Rebonjour à tous,

D'avance merci à tous ceux qui mettent leur expérience au service des autres!
Voici mon petit soucis,
j'ai créé la macro que voici

Sub EnvoiMailMediven()    
ActiveSheet.Unprotect Password:="xxxx"    
ActiveSheet.Range("A1:K17").Select    
ActiveWorkbook.EnvelopeVisible = True    
ReturnReceipt = True    
With ActiveSheet.MailEnvelope    
    .Introduction = "bonjour , ci joint notre commande pour des xxxx"    
    .Item.To = "info@xxxx.be"    
    .Item.Subject = "commande xxxx"    
    .Item.Send    
End With    
Range("A11").Select    
ActiveWorkbook.Save    
ActiveSheet.Protect Password:="xxxx"    
End Sub    


Comme vous le voyez cette macro me permet d'envoyer un tableau excel par mail.
Cela fonctionne très bien mais lorsque la personne qui reçoit ce mail désire l'imprimer il manque une partie du tableau (Fichtre, embêtant ca).
Au début je croyais qu'il s'agisait d'un problème de configuration de l'imprimante, mais j'ai beau changer cette configuration le problème reste le même (il me manque toujour une partie).
Depuis aujourd'hui je me demande si cela ne vient pas de la macro et si il serait possible de modifier celle-ci pour qu'elle prenne en compte des critères de taille?

J'espère que mes explications sont claires et j'ai hâte de lire vops suggestions.
Merci à tous

Philippe





5 réponses

Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
Bonjour,
Juste en passant comme cela et à tout hasard, la partie qui s'imprime correctement ne serait elle pas : "A1:K17"?
Je sens comme qui dirait une pointe d'humour dans ta question.
Et bien non, "A1:K17" est bien la zone qu'il faut imprimer mais qui ne s'imprime pas en entier (j'aurais préféré que ce soit le cas, on aurait bien rigoler tous les deux)!

Cela dit merci à toi de m'avoir répondu car on ne se pousse pas au portillon pour m'aider.
Mais je ne perd pas espoir.
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
Non cela n'étais pas de l'humour.
Le destinataire du mail reçoit tout le tableau, dans le corps du message, mais à l'impression tout ne s'imprime pas. C'est bien cela?
C'est exactement ca!
Et même en configurant son imprimante différemment, ca ne fait que diminuer le problème mais sans le régler totalement
Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
288
Bonjour,

quelles références as-tu, dans ton code (sous VBE, Outils/Références)

Et sinon, n'aurais-tu point une zone d'impression de pré-définie?

@ te relire
que veut tu dires par référence dans mon code?
je ne crois pas avoir une zone d'impression prédéfinie car quand la personne change ses paramètre d'impression ca diminue le problème sans le régler totalement
Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
288
Re-;

Lorsque tu es sous VBE (Visual Basic Edition) par le biais de "Alt + F11", tu as accès à une barre de menus...

Si tu cliques sur "Outils/Références", tu as les références requises pour dérouler ton code...

C'était cela que je te demandais....

Maintenant, vu que "tu ne crois pas" que tu aies une zone d'impression...

Peut-être un souci d'interface Clavier/Dossier?

Il sait régler une zone d'impression? (ton interlocuteur)

Bon courage
5 références sont disponibles

- visual basic for applications
- microsoft excel 11.0 object library
- ole automation
- microsoft office 11.0 object library
- microsoft forms 2.0 objetct library
Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
288
Re-,

Je te posais cette question, car je n'arrive pas à reproduire ton souci chez moi....(ni à utiliser ton code, d'ailleurs....)

Ayant activé les mêmes références que toi, je n'y arrive toujours pas...

So, je ne vais plus être d'une grande utilité, ne pouvant utiliser le même code que toi....

PS, tu le déroules bien sous Excel?
oui excel 2003 (sp3)
Rebonjour,

Personne d'autre n'aurait une idée pour mon petit problème?
SVP

Merci
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
Ou c'est de ma faute... J'ai présumé que ton fichier excel s'appelait "classeur1.xls". Ce n'est peut être pas le cas. J'ai supposé également que tu enregistrait ton fichier pdf dans le même répertoire que ton fichier excel. Ce n'est peut être pas le cas non plus.
Pour le test, remplace cette ligne :
Fichier = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - 4) & ".pdf"
par :
Fichier = "C:\mets_ici_tout_\le_chemin\d'acces_à_\ton\fichier\Classeur1.pdf"
Et cela devrait fonctionner...
Messages postés
12
Date d'inscription
mercredi 10 novembre 2010
Statut
Membre
Dernière intervention
21 décembre 2010

excellent, ca fonctionne (mais encore un petit bémol)

visiblement l'envoi du mail se fait avant la mise à jour du fichier pdf, donc quand je reçois le mail c'est celui avant modification alors que le fichier pdf à bien été modifié
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
On doit donc ajouter une temporisation... Remplace ta macro par :
!!! remplace encore la ligne "fichier = "

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Imprime2_pdf()
Dim Defaut_Impr
Dim ol As Object, myItem As Object
Dim strHtml, Fichier As String

Defaut_Impr = Application.ActivePrinter
Application.ActivePrinter = "Adobe PDF sur Ne28:"
    ActiveSheet.PrintOut Copies:=1, Collate:=True
Application.ActivePrinter = Defaut_Impr
Sleep 10000
    Fichier = "C:\mets_ici_tout_\le_chemin\d'acces_à_\ton\fichier\Classeur1.pdf" 
    If Fichier = "" Then Exit Sub
        
   strHtml = "Bonjour , <BR>"
strHtml = strHtml & "<B><font size=6mm>" & _
"vous trouverez ci joint le fichier demandé</font></B>"
strHtml = strHtml & "<BR><BR><BR>" & _
"<font color=red>Cordialement</font>" & "<BR>"
strHtml = strHtml & Environ("UserName")
strHtml = strHtml & ""

Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)

myItem.To = "adresse Email"
myItem.Subject = "envoi d'un fichier attaché"
myItem.HtmlBody = strHtml
'fichier en cours d'utilisation envoyé en attaché:
myItem.Attachments.Add Fichier
myItem.Send

Set ol = Nothing

End Sub
Messages postés
12
Date d'inscription
mercredi 10 novembre 2010
Statut
Membre
Dernière intervention
21 décembre 2010

super extra ca marche super !!!!!!!!!!!!!!
Mille merci
malheureusement je ne suis pas sure de pouvoir un jour te renvoyer l'assenceur......mais qui sait?
tu as été hyper patient
si je devais encore avoir des petits soucis, puis encore abuser dans le futur?
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
Ce site est là pour ça.
N'hésite surtout pas à passer, pour tout et n'importe quoi...
Si tu veux me renvoyer l'ascenseur, essaye d'aider à ton tour quelqu'un sur le forum un jour ou tu auras le temps...
Voilà a+ et n'hésite pas!!!