Macro excel envoi Pièce jointe en pdf [Résolu/Fermé]

Signaler
-
 Jean -
Bonjour,

Je viens d'acquérir excel 2007 pour les besoins de ma société.
Je ne suis pas un as du vba, mais j'ai fait cette macro afin d'envoyer un classeur à mes clients :


Sub mailauto()

'
' mail Macro
'
Dim objet As String
Dim desti As String
desti = Range("H5")
objet = Range("A1") & " " & Range("F9")

Application.DisplayAlerts = False
ActiveSheet.Copy 'crée une copie de la feuille active
ActiveWorkbook.SendMail desti, objet, True ' envoi du mail
ActiveWorkbook.Close ' supprime le classeur crée après l'envoi
Application.DisplayAlerts = False

'
End Sub

A partir de là, j'aimerai pouvoir envoyer simplement un onglet nommé " auto" au format pdf à la place de tout le classeur, ainsi qu'un corps de message personnalisé via une cellule B1 du style. Chère "B1", voici le récapitulatif ........

Mais mes essais ont été soit illisibles, soit ils ont buggés.
En précision, je ne veux pas que cette macro soit uniquement dirigée sur outloock mais sur la messagerie par défaut.

Merci de votre aide.

12 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
Bonjour,

Tu devrais plutôt utiliser cette technique pour l'envoi.
Pour créer ton PDF c'est très simple :
    Sheets("nom onglet").ExportAsFixedFormat Type:=xlTypePDF, Filename:="chemin du fichier" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False


Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Merci gbinforme :)

Le lien que tu me propose m'a l'air un peu trop compliqué pour mes modestes connaissances.

Par conte je ne comprends pas comment utiliser ( ou implanter ) le code du dessus. C'est un complément du mien ?
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
peu trop compliqué : la présentation peut-être mais sinon ce n'est pas complexe et cela fonctionne bien.

Le code sert à créer ton pdf que tu joins au message.

Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, se serait plus facile de t'aider et d'adapter la macro.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
Je vais en créer une " neutre " car le document à envoyer en pdf étant un pro-format douanier, je ne peux pas le communiquer. ;)
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
C'est exactement cela et je te le mettrai en état d'envoi ce soir.
Si tu peux me mettre ton fournisseur d'accès internet cela serait un plus.
Mon FAI est orange, mais je peux être amené à me connecter en wifi hors de chez moi et donc pas forcement sur orange.

Merci pour ton aide.
:)
Voici le lien dropbox de mon classeur :

https://dl.dropboxusercontent.com/u/197385501/help-me-pls.xls

Bien sur, il a été allégé.

Merci encore.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
Bonjour,

Voilà, je te joins un lien sur ton classeur avec la macro qui fait le PDF et l'envoi.
Il te suffit de modifier :
- le nom du fichier afin que le destinataire comprenne.
- ton adresse messagerie
- le code smtp si tu te connectes ailleurs que sur orange
- de mettre une adresse valide
et tu peux faire un test.
Le pdf est créé pour le joindre puis il est effacé automatiquement.

Je t'ai mis la macro dans un module particulier que tu peux "tirer" dans ton classeur de travail si les 2 sont simultanément ouverts.

Bon test et si souci, n'hésites pas à demander.
Extra, merci beaucoup :)

Ca va me faire gagner beaucoup de temps.

Reste plus qu'a finaliser.

Encore merci, :) :) :)
Je reviens juste pour un petit complément.

Afin de ne pas avoir 6 fois la même macro je souhaite que la fonction Sheets("xxxxx") qui détermine le nom de la feuille puisse prendre la valeur d'une cellule, est-ce possible ?

Encore merci....

Pour info, j'ai lancé une nouvelle demande d'aide ici :
https://forums.commentcamarche.net/forum/affich-31692229-sauvegarder-deux-feuilles-en-pdf-via-une-macro

;)
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
Bonjour,

Tout simplement :
    Sheets([A1].value)).ExportAsFixedFormat Type:=xlTypePDF, Filename:=fic _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False

Si tu as "auto" en A1 c'est la feuille auto qui va en pdf mais il te faut modifier fic sinon toutes les feuilles ont le même nom pdf.
Si tu veux éditer les 6 à la fois tu remplaces A1 par une variable array qui contient le nom des 6 feuilles.
Merci beaucoup, je vois ça ce WE.

Bonne soirée et encore merci pour ton aide
:)
Merci beaucoup, à première vue cela fonctionne bien.

Juste un petit message d'erreur comme quoi l'indice n'appartient pas à la sélection mais je ne pense pas que ce soit très grave.

Encore merci.

:)
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
l'indice n'appartient pas à la sélection
a priori cela laisse supposer que le nom de ta feuille n'est pas correct : attention aux espaces : "Auto" n'est pas égal à "Auto ".
Pour l'éviter, tu peux écrire
Sheets(Rtrim([A1].value))
: les espaces si vite saisis seront ignorés à droite.
Merci beaucoup :)

Mais tout est rentré dans l'ordre. J'avais fait des modif de présentation et n'avais pas actualisé la macro.

Merci encore pour ton aide, car grâce à toi, j'ai également pu résoudre une autre demande d'aide qui tournait en rond.

Grand merci et bonne semaine à toi.

;)
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
Merci du retour et content de t'avoir aidé à résoudre ce souci alors que je te sentais effrayé par la solution initialement proposée : c'est parfait d'avoir fait face !
>
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020

Merci pour le compliment, mais j'avoue que même si j'ai pu le modifier, je suis bien loin de tout comprendre. Si tu as une adresse mail, je peux t'envoyer le classeur achevé si tu le désire. :)
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 187
J'ai bien une adresse mail mais tu penses bien que je ne vais pas la mettre sur un site pour me la faire pirater et envahir de spams alors comme tu n'ai pas inscrit sur CCM je te fait confiance pour la bonne réalisation de ton projet. C'est de toute façon en faisant toujours un peu au-delà de ce que l'on maitrise que l'on peux progresser et je suis heureux que l'on ai pu faire un pas de plus ensemble. Cette procédure d'envoi de mail est très puissante, très efficace, sûre tout en étant relativement simple à mettre en oeuvre car si tu as surfé un peu, pour envoyer un fichier joint, il y a beaucoup d'usines à gaz proposées et souvent moins efficaces.
Bien cordialement.
Merci à toi encore une fois et au plaisir de se re-croiser.

:)