Imprimer classeur xls en pdf et envoi mail

JBOBO

XLDnaute Accro
Bonjour le forum,

Ayant pas mal naviguer sur ce forum pour trouver les solutions à mon problème je vous donne ma solution de contournement. ( A ADAPTER)

Les problèmes initiaux était les suivants :

- Imprimer certains onglets d'un classeur en PDF (Chaque onglet devait donner un PDF)
- Pas la possibilité d'installer n'importe quel programme PDF
- J'ai comme imprimante PDF un truc qui s'appelle sowedoo pdf qui par défaut m'enregistre tous mes pdf dans C:\mes documents (ce qui ne me convenait pas)
- une fois le PDF Créé, il fallait l'envoyer par mail à différents destinataires avec un message differents pour chaque destinataire.
- Et enfin mes connaissances en VBA ne m'ont pas permis de faire mieux


Voici ma macro (créer en grande partie par des petits bouts de macro récupérer ici et là sur ce forum.

Macro à ajouter dans un module de visual basic du fichier concerné:

Code:
macrodechezmacro
Sub macrodefolie()
    'selection et copy dans nveau classeur de la Feuille active et feuille modèle, ici modèle(2)
    Sheets(Array(ActiveSheet.Name, "modèle (2)")).Copy
    Application.DisplayAlerts = False
    Sheets("modèle (2)").Select
    ActiveWindow.SelectedSheets.Visible = False
    ' Le chemin du fichier en cours : ThisWorkbook.Päth
    ‘Sauvegarde chaque onglet comme fichier excel dans le repertoire en cours avec un nom defini en partie dans la macro et en partie en prenant les valeurs de certaines cellules 
ActiveWorkbook.SaveAs Filename:= _
        ThisWorkbook.Path & "\" & "FactMat - " & Range("H8").Text & " - " & ActiveSheet.Name & " - " & Range("J79").Text & ".xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
  ‘Imprime le fichier en PDF      
    Application.ActivePrinter = "Sowedoo PDF 4 sur Ne00:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "Sowedoo PDF 4 sur Ne00:"
    'Envoi mail
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.CreateItem(0)
    With MonMessage
‘Va chercher le destinataires dans une cellule du classeur
    ad = Range("j3").Value
    'corps = Range("j4").Value ‘ prevu si tu souhaites ajouter un texte dans le corps du message par le biais d’une cellule du fichier
    If ad <> "" Then .to = ad
    ‘Object du message
.Subject = "toto tata titi"
    ‘Corps du message (Texte non modifiable sans aller dans la macro ou modifiable uniquement dans outlook avant l’envoi du mail)
.Body = "Bonjour," & vbCrLf & corps & "sincères salutations" 
‘vbCrLf permet de faire un retour chariot dans le corps du message
 ‘Joint le fichier PDF au mail 
 .attachments.Add "D:\Data\" & "FactMat - " & Range("H8").Text & " - " & ActiveSheet.Name & " - " & Range("J79").Text & ".pdf" ', FileFormat:= _"
    .display
    End With
    
    'Fin envoi mail

    ‘Fermeture fichier excel creer
     ActiveWindow.Close
    ‘Copie du fichier pdf dans repertoire en cours

    FileCopy "D:\Data\" & "FactMat - " & Range("H8").Text & " - " & ActiveSheet.Name & " - " & Range("J79").Text & ".pdf", ThisWorkbook.Path & "\" & "FactMat - " & Range("H8").Text & " - " & ActiveSheet.Name & " - " & Range("J79").Text & ".pdf"
'Auto suicide du fichier xls dans repertoire en cours   
   
 Kill (ThisWorkbook.Path & "\" & "FactMat - " & Range("H8").Text & " - " & ActiveSheet.Name & " - " & Range("J79").Text & ".xls") ', FileFormat:= _"
‘Auto suicide du fichier pdf dans « mes documents »
    Kill ("D:\Data\" & "FactMat - " & Range("H8").Text & " - " & ActiveSheet.Name & " - " & Range("J79").Text & ".pdf")
    Application.DisplayAlerts = True
End Sub


Bien sur cette macro peut tout à fait etre trituré par les pros de chez pro de ce forum pour la rendre plus "lisible" si besoin est ou définitivement supprimé de ce forum si elle est jugée "non adaptable" ou inutile. JE N'EN VOUDRAIS à PERSONNE.
 
Dernière édition:
G

Guest

Guest
Re : Imprimer classeur xls en pdf et envoi mail

Bonjour JBOBO,

Tu as dans la barre d'édition des post un bouton (dièse) qui insère une balise pour les codes.

Utilise la, cela rend la lecture plus facile.

A+
 

JBOBO

XLDnaute Accro
Re : Imprimer classeur xls en pdf et envoi mail

Bonjour à tous,

Une p'tite question sur la macro ci dessus :

Quel code rajouter pour que la macro ci dessus s'effectue en boucle sur plusieurs onglets sachant que ces onglets ont un nom numerique à 6 chiffres qu'ils sont de couleurs rouges, que le nom et le nombre des onglets est variable. et qu'il y a des onglets à ne pas prendre en compte (mais nommés differemment)

Merci d'avance.
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL