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é:
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.
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: