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 Sub

Avec 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

Rechercher des sujets similaires à "modifier fonction vba enregistrer document bureau"