Modifier fonction VBA pour enregistrer un document sur le bureau
Bonjour,
Je viens d'arriver ici et comme je n'ai aucune formation en VBA, j'ai trouvé des fonctions sur internet qui ont bien répondu à mes demandes ces derniers temps, mais aujourd'hui je bute sur une modification 🙄.
jusqu'à présent, voici (ci dessous) ce que j'utilisais pour dimensionner mon fichier excel, créer un pdf, et ouvrir un mail avec le pdf en pièce jointe pour l'envoyer.
sauf que je fais désormais ce document à partir d'un modèle excel et là, la macro ne fonctionne plus puisqu'il ne sait plus ou enregistrer le pdf (du coup, il faudrait qu'il soit sur le bureau).
Pourriez vous svp m'aider ? et si je pouvais en plus, ajouter dans la macro l'adresse mail du destinataire que j'indiquerai en cellule C3 ce serait vraiment vraiment top !
merci pour votre aide
Sub GSBenvoimail()'
' GSBenvoimail Macro
' envoi par mail de la commande
'
ActiveSheet.PageSetup.PrintArea = Range("A1:x" & Range("b65536").End(xlUp).Row).Address
'--------------------------------------------------'
'Création du fichier PDF
'--------------------------------------------------'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & "pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'--------------------------------------------------'
'Mettre fichier en pièce jointe Outlook
'--------------------------------------------------'
Set Ol = CreateObject("outlook.application")
Set myItem = Ol.CreateItem(olMailItem)
myItem.Subject = "Commande pré saison 2023"
myItem.Attachments.Add ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & "pdf"
myItem.Display
End Sub
ps : j'ai comme l'impression que je vais passer beaucoup de temps ici 😁
Bonjour Sandrine19,
A tester, un exemple de macro :
Sub GSBenvoimail()
'
' GSBenvoimail Macro
' envoi par mail de la commande
'
ActiveSheet.PageSetup.PrintArea = Range("A1:x" & Range("b65536").End(xlUp).Row).Address
'--------------------------------------------------'
'Création du fichier PDF
'--------------------------------------------------'
Dim DesktopPath As String
DesktopPath = Environ$("USERPROFILE") & "\Desktop\"
Dim pdfName As String
pdfName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5) & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=DesktopPath & pdfName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'--------------------------------------------------'
'Mettre fichier en pièce jointe Outlook
'--------------------------------------------------'
Set Ol = CreateObject("outlook.application")
Set myItem = Ol.CreateItem(olMailItem)
myItem.Subject = "Commande pré saison 2023"
myItem.Attachments.Add DesktopPath & pdfName
myItem.To = Range("C3").Value
myItem.Display
End SubAvec ce code, le PDF sera enregistré sur le bureau et l'adresse e-mail sera récupérée à partir de la cellule C3. Vous devez vous assurer que la cellule C3 contient une adresse e-mail valide.
Si vous avez d'autres questions hésitez pas
Merci Beaucoup Abderrahmane BENALI
Tout fonctionne parfaitement !
C'est top
Bonne fin de journée
Sandrine