Impression/PDF/mail

ballmaster

XLDnaute Occasionnel
Bonjour à tous,

J'ai commencé à travailler sur un projet pour automatiser un processus répétitif qui doit se faire tous les mois.

Sur un onglet, j'ai plusieurs tableaux récapitulatifs (issues de données provenant d'autres feuilles, mais pas mises dans le fichier) .
Chaque tableau doit être envoyé à un destinataire précis.

Le process serait le suivant :

- envoyer automatiquement par mail le tableau au destinataire concerné

Je cale, car je n'arrive pas à envoyer un bout de feuille (une séléction par exemple) en pièce jointe à un destinataire.
l'autre piste était de générer un pdf via pdfcreator (excel 2003) et de l'envoyer par mail, mais la, je suppose qu'il faut rentrer dans le script au niveau de pdfcreator, et je ne sais pas faire.

Bref, si qq'un a une idée. (je suis sur que oui)

PS : mon code est la résultante de 2 essais, la première partie avec l'impression dans un fichier (.prn) mais cela ne semble pas approprié.
 

Pièces jointes

  • impression.xls
    45.5 KB · Affichages: 47
  • impression.xls
    45.5 KB · Affichages: 47
  • impression.xls
    45.5 KB · Affichages: 51

dionys0s

XLDnaute Impliqué
Re : Impression/PDF/mail

Bonjour ballmaster

Sans regarder ton fichier, voici un code pour l'envoi automatique de mail via Outlook :

Code:
Shell "Outlook.exe"

Set objwShell = CreateObject("wscript.shell")

    Dim OlApp As Outlook.Application
    Dim OlItem As Outlook.MailItem
    
    Set OlApp = New Outlook.Application
    Set OlItem = OlApp.CreateItem(olMailItem)
    
    With OlItem
        .To = adresse@machin.truc
        .Subject = "Objet du mail"
        .Body = "Corps du message"
        .Attachments.Add ActiveWorkbook.FullName
        .Display
        .Send
    End With
    
    Set OlItem = Nothing
    Set OlApp = Nothing

A adapter of course

Bon courage
 
Dernière édition:

ballmaster

XLDnaute Occasionnel
Re : Impression/PDF/mail

Bjr Dyonys0s,

Je te remercie pour ton code mais je ne peux l'adapter.

Mon onglet récap de donées, contient 6 tableaux, chacun des tableaux devant être envoyé à un destinataire précis.

Il faut donc pouvoir envoyer 1 et 1 seul tableau (donc une partie d'une feuille) à un destinataire.

Dans ton code, c'est tout le classeur qui part, donc cela ne me convient pas.

Merci quand meme pour la rapidité de ta réponse.
 

dionys0s

XLDnaute Impliqué
Re : Impression/PDF/mail

Question : souhaites-tu que l'envoi de mail soit complètement automatique ? C'est-à-dire avec aucune intervention de l'utilisateur ?

Pour l'envoi d'une partie de la feuille seulement, je n'en suis pas certain, mais à vue de nez, ça a l'air possible. Pour ce faire, il faudrait que les trames de tes tableaux soient rigoureusement identiques (hauteur et largeur) et que l'adresse mail des destinataires existe quelquepart dans ton classeur, et qu'il soit possible de la mettre en relation avec les éditeurs concernés.

Pour l'envoi en PJ, je pense qu'il faut passer par un worksheet.add, même temporaire. Je ne m'y connais pas assez encore (me suis mis au VBA il y a un peu plus d'un mois...) donc tout ceci est à prendre avec des pincettes bien entendu.
 

ballmaster

XLDnaute Occasionnel
Re : Impression/PDF/mail

Re,

Oui les tableaux ont une structure identique.

Envoyer un classeur entier à des destinataires différents de manière automatique, j'ai le code. (trouvé sur ce site d'ailleurs)

Mais c'est envoyé un bout d'une feuille par mail (en pièce jointe) que je n'arrive pas à faire.
 

dionys0s

XLDnaute Impliqué
Re : Impression/PDF/mail

C'est tordu, et il y a sûrement mieux et plus pro à faire, mais ce que je ferais dans ton cas (et avec le niveau qui est le mien), c'est un workbook.add en y copiant automatiquement le tableau que tu veux envoyer, et attacher le workbook créé dans le mail.
 

dionys0s

XLDnaute Impliqué
Re : Impression/PDF/mail

ou alors tu enregistres ta sélection en pdf, et tu envoies le pdf en pièce jointe.

Code pour mettre une sélection en pdf :

Code:
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False
Application.DisplayAlerts = False

Dim objPDF As Object
Dim S As Worksheet
Dim R As Range
Dim OBJ As Object
Dim rep&
Dim ImprimanteActive$
Dim Message$

ImprimanteActive$ = Application.ActivePrinter

[B]Range("A1:G62").Select[/B]

Set R = Selection
Set objPDF = CreateObject("PDFCreator.clsPDFCreator")
With objPDF
  If .cStart("/NoProcessingAtStartup") = False Then
    MsgBox prompt:="On ne peut pas lancer PDFCreator", _
        Buttons:=vbInformation + vbOKOnly
    Exit Sub
  End If
  .cOption("UseAutosave") = 1
  .cOption("UseAutosaveDirectory") = 1
  .cOption("AutosaveDirectory") = "Nom du répertoire complet"
  .cOption("AutosaveFilename") = "Nomdufichier.pdf"
  .cOption("AutosaveFormat") = 0
  .cClearCache
End With
If TypeName(Selection) = "Range" Then
  R.PrintOut copies:=1, ActivePrinter:="PDFCreator"
Else
  S.PrintOut copies:=1, ActivePrinter:="PDFCreator"
  Application.DisplayAlerts = False
  S.Delete
  Set S = Nothing
  Application.DisplayAlerts = True
End If
Do Until objPDF.cCountOfPrintjobs = 1
  DoEvents
Loop
objPDF.cPrinterStop = False
Do Until objPDF.cCountOfPrintjobs = 0
  DoEvents
Loop
With objPDF
  .cDefaultPrinter = "PDFCreator"
  .cClearCache
  .cClose
End With
Set objPDF = Nothing

Application.ActivePrinter = ImprimanteActive$
Application.ScreenUpdating = True
Application.ShowWindowsInTaskbar = True
Application.DisplayAlerts = True

Dans l'exemple, il imprime en pdf la plage A1:G62
Merci à Patrick Morange pour ce code d'ailleurs.

Good luck
 

ballmaster

XLDnaute Occasionnel
Re : Impression/PDF/mail

Bsoir,

bon j'ai avancé sur la proposition de code de dyonys0s.

J'ai réusi à créer 6 fichiers PDF qui vont s'enregistrer dans un dossier prédeterminé sur le bureau.

Ensuite je pensais envoyer chaque fichier à un destinataire par mail en pièce jointe grâce à une 2nde macro qui fait jouer les sendkeys.
Or, j'ai un bug :
quand je ne mets qu'un seul fichier à envoyer -> ca marche tip top
A partir de 2 fichiers à 2 destinataires -> c'est le brin ! j'ai l'impression que le sendkeys se mélange les pédales.

J'ai les destinataires qui recoivent en pièce des fichiers qui ne sont pas pour eux.
C'est trop bizarre, par exemple pour ceci :

fichier1
dest1
sendkeys dest1 fichier1 -> ca marche


Si je rajoute ceci :

fichier1
dest1
sendkeys dest1 fichier1
fichier2
dest2
sendkeys dest2 fichier2 -> et bien la, il va m'envoyer le fichier1 au destiantaire2 et vice versa ?????

Je ne comprends rien !!
Qqu'un a deja connu ce type de pb ??
 

ballmaster

XLDnaute Occasionnel
Re : Impression/PDF/mail

Voici le code qui me pose soucis

Code:
Sub mail()

'envoi n°1
Nord = "C:\Documents and Settings\Compta\fichier1.pdf"
Dest1 = "toto@orange.fr"

Sujet = "Suivi"
Msg = " Bonjour, " & vbCrLf & vbCrLf
Msg = Msg & "Veuillez trouver ci-joint un état du suivi."
Msg = Msg & vbCrLf & vbCrLf & " SB "

Shell "C:\Program Files\Outlook Express\msimn.exe " & _
"/mailurl:mailto:" & Dest1 & "?subject=" & Sujet & "&Body=" & Msg & ""
SendKeys "%I" & "p" & Nord & "~" & "%s"


'envoi n°2
Laur = "C:\Documents and Settings\Compta\fichier2.pdf"
dest2 = "titi@orange.fr"

Sujet = "Suivi "
Msg = " Bonjour, " & vbCrLf & vbCrLf
Msg = Msg & "Veuillez trouver ci-joint un état du suivi."
Msg = Msg & vbCrLf & vbCrLf & " SB "
Shell "C:\Program Files\Outlook Express\msimn.exe " & _
"/mailurl:mailto:" & dest2 & "?cc=" & copie & "&subject=" & Sujet & "&Body=" & Msg & ""
SendKeys "%I" & "p" & Laur & "~" & "%s"

End sub


Quand je lance cette macro, il m'attache le fichier1 avec le dest2 et le fichier2 au dest1 ?????
 

dionys0s

XLDnaute Impliqué
Re : Impression/PDF/mail

Salut ballmaster

Je t'avoue que je suis largué sur ton code... je n'utilise pas tout à fait ce code pour mon envoi de mail donc je ne saurais te le corriger.
Moi ce que je ferais, ce qui serait surement un poil plus long (en temps d'execution et en lignes de code), c'est refaire la procédure autant de fois qu'il y a de mail. Une macro par mail à envoyer et un bouton qui appelle successivement les macros les unes à la suite des autres. Tant qu'il y a relativement peu de mails à envoyer je m'en contenterais.

(by the way c'est dionys0s. Pas dyonys0s. :) )
 

ballmaster

XLDnaute Occasionnel
Re : Impression/PDF/mail

Salut,

Bon j'ai contourné le pb.

J'ai 6 fichiers distincts , chacun des fichiers étant à envoyer à un destinataire différents.

J'ai donc fait 6 sub (1 par envoi de fichier).

Ensuite j'ai crée 6 boutons auxquels j'ai rattaché une sub (avec une petite gestion des couleurs pour savoir sur lesquels on a déjà appuyé).


Pour information, si j'appelle ces 6 sub à la suite dans un bouton, ca ne fonctionne, ca me mélange les fichiers et les destiantaires (même pb)
 

ballmaster

XLDnaute Occasionnel
Re : Impression/PDF/mail

Oui. Je me demande s'il n'y a pas un bug la.

bizzare non ??

Ceci fonctionne :

Code:
Private Sub CommandButton1_Click()
Call mail1
End Sub

Private Sub CommandButton2_Click()
Call mail2
End Sub

Private Sub CommandButton3_Click()
Call mail3
End Sub


Et ceci bug :

Code:
Private Sub CommandButton1_Click()
Call mail1
Call mail2
Call mail3
End Sub

Y a un truc que j'aurais raté ??
 

Discussions similaires

Réponses
2
Affichages
311

Membres actuellement en ligne

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 047
dernier inscrit
bravetta