Microsoft 365 donner a ma feuille le nom de l'onglet avant envoi par mails

Nabster

XLDnaute Nouveau
Bonjour à tous,

voici mon projet:
j'ai crée un fichier de facture Excel que j'ai enregistré sur mon bureau
dans ce fichier ils y a 12 onglets qui prennent le nom de chaque mois car je veux envoyer une facture par mois après l'avoir complété

je veux créer une macro simple avec son bouton dans chaque onglet et souhaiterai que cette macro :

- prenne cette feuille active telle que définie par la zone d'impression
- en crée un fichier PDF contenant uniquement cette feuille activre
- donne a ce fichier le nom de l'onglet actif comme par exemple "Facture septembre 2021" : "Facture" + "nom de l'onglet" + "l'année en cours"
- l'enregistre sur mon bureau dans un répertoire "FACTURE"
- envoie ce fichier via Outlook à un destinataire avec une personne en copie,
- l'objet doit être Facture du mois de Septembre 2021 (si on est en septembre 2021)
- le message du mail doit contenir du texte avec un saut de ligne après le bonjour et avant le cordialement et la signature

pour information:
le mois est mentionné en D54 (septembre)
la date de fin de mois de la facture est mentionnée en G5 (30/09/2021)

je ne suis pas du tout un développeur mais en fouillant un peu sur internet j'ai trouvé un truc que j'ai bricolé mais qui ne repond pas a toutes mes demandes c'est pou ca que j'ai besoin de vous.


Sub EnvoiPDFviaOutlook()
Dim Nom As String

Nom = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".")) & "pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & Nom, quality:=xlQualityStandard, _
includedocproperties:=True, ignoreprintareas:=False, openafterpublish:= _
False

Set olApp = CreateObject("Outlook.application")
Set m = olApp.CreateItem(0)
With m
.Attachments.Add ActiveWorkbook.Path & "\" & Nom
.display
.To = "bob@excel.com"
.CC = "leponge@excel.com"
.Subject = "Facture du mois de " & Range("D54")
.Body = "Bonjour Patou," & vbCrLf & vbCrLf & "veuillez de trouver ci-joint ma facture du mois de " & Range("D54") & vbCrLf & vbCrLf & "Cordialement," & vbCrLf & "Mr Bob Leponge" & vbCrLf & "Tel: 06 99 99 99 99"
.Send

End With

End Sub

merci pour votre aide
 

Nabster

XLDnaute Nouveau
Bonjour,

en cherchant un peu j'ai fait une petite modification qui m'a permis de donner à mon fichier PDF le nom de l'onglet de la feuille active

Nom = "Facture de " & ActiveSheet.Name & "." & "pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & Nom, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

le fichier est enregistré sur le même chemin que celui ou se trouve le fichier Excel d'origine
or se souhaiterai que ce fichier PDF s'enregistre sur le bureau (le fichier Excel d'origine sera au même endroit) mais dans un répertoire que j'appellerai "FACTURES" et un sous répertoire qui s'appellera "2021" de sorte que lorsqu'on sera en 2022 un autre sous répertoire puisse se créer "2022" et dans lequel les factures PDF de 2022 puissent venir s'enregistrer automatiquement après chaque envoie en fin de mois.

je ne sais pas encore comment créer des répertoires et sous répertoires, ni comment leur donner le nom de l'année en fonction de la cellule G5 (30/09/2021)

merci pour votre aide
 

Nabster

XLDnaute Nouveau
J'ai trouvé un truc qui m'oblique a creer le repertoire et le sous repertoire a l'avance

ThisWorkbook.Path & "\FACTURES\2021\" & Nom, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Set olApp = CreateObject("Outlook.application")
Set m = olApp.CreateItem(0)
With m
.Attachments.Add ActiveWorkbook.Path & "\FACTURES\2021\" & Nom

j'aurai aimé que les sous répertoires se crée automatiquement s'il n'existent pas en fonction de l'année de la date disponible en G5 (30/09/2021) par exemple


merci pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 181
Membres
112 677
dernier inscrit
Justine11