Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Envoi par mail: 1 adresse mail par onglet Excel

Comptable 1

XLDnaute Nouveau
Bonjour à tous,

J'ai un fichier Excel, avec environs 20 onglets, et je souhaiterais envoyer chaque onglets séparément par mail (pas toujours les même adresses mail) de façon automatique.

Pensez vous que cela puisse se faire ? Et si oui, pourriez vous m'indiquer comment faire ?

En vous remerciant par avance

Bonne journée
 
Solution
Bonjour,
Oups, autant pour moi. Essaie :
VB:
Sub Mail()
  Dim olApp As Object, M As Object, Sh As Worksheet, Wbk As Workbook, Txt As String
  Set olApp = CreateObject("Outlook.application")
  For Each Sh In ThisWorkbook.Sheets
    Sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      Sh.Name, Quality:= _
      xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
    Set M = olApp.CreateItem(olMailItem)
    With M
      .Subject = "Objet"
      '.Body = "Body"
      .Recipients.Add Sh.[A1].Value
      .attachments.Add ThisWorkbook.Path & "\" & Sh.Name & ".pdf"
'      .display
      .Send
    End With
  Next Sh
End Sub

danielco

XLDnaute Accro
Bonjour,

Où trouver l'adresse ou envoyer où envoyer l'onglet ? dans une cellule de la feuille ? Comment veux-tu l'envoyer ? En pièce jointe où en copiant une plage de cellules dans le corps du message ?

Daniel
 

danielco

XLDnaute Accro
Un exemple de macro avec le destinataire en A1
VB:
Sub Mail()
  Dim olApp As Object, M As Object, Sh As Worksheet, Wbk As Workbook, Txt As String
  Set olApp = CreateObject("Outlook.application")
  Set M = olApp.CreateItem(olMailItem)
  For Each Sh In ThisWorkbook.Sheets
    Sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      Sh.Name, Quality:= _
      xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
    With M
      .Subject = "Objet"
      '.Body = "Body"
      .Recipients.Add [A1].Value
      .attachments.Add ThisWorkbook.Path & "\" & Sh.Name & ".pdf"
'      .display
      .Send
    End With
  Next Sh
End Sub

Daniel
 

Comptable 1

XLDnaute Nouveau
Bonjour,

J'ai essayé la macro cité plus haut.
Cependant cela envoi à l'adresse mail saisie en A1 de la feuille 1
- un mail avec en pièce jointe la feuille 1
- un mail avec en pièce jointe la feuille 2

Est ce possible d'envoyer un mail séparément, à l'adresse mail de la feuille 1 avec pièce jointe feuille 1, et à l'adresse mail de la feuille 2 avec pièce jointe de la feuille 2 ? Et ainsi de suite avec toute mes feuilles ?

Merci par avance
 

danielco

XLDnaute Accro
Bonjour,
Oups, autant pour moi. Essaie :
VB:
Sub Mail()
  Dim olApp As Object, M As Object, Sh As Worksheet, Wbk As Workbook, Txt As String
  Set olApp = CreateObject("Outlook.application")
  For Each Sh In ThisWorkbook.Sheets
    Sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      Sh.Name, Quality:= _
      xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
    Set M = olApp.CreateItem(olMailItem)
    With M
      .Subject = "Objet"
      '.Body = "Body"
      .Recipients.Add Sh.[A1].Value
      .attachments.Add ThisWorkbook.Path & "\" & Sh.Name & ".pdf"
'      .display
      .Send
    End With
  Next Sh
End Sub
 

Comptable 1

XLDnaute Nouveau
Bonjour,

De nouveau une question pour mon envoi automatique de mail

Est ce possible de rajouter une condition : si A1 est vide alors imprimer la feuille ; sinon envoyer par mail ?

Aussi, quand j'envoi par mail, Outlook me demande pour chaque mail une autorisation, peut on enlever ce message ?

Merci d'avance
 

danielco

XLDnaute Accro
Bonjour,

Aussi, quand j'envoi par mail, Outlook me demande pour chaque mail une autorisation, peut on enlever ce message ?
Quel est le libellé exact du message ? sinon remplace le code par celui-ci :

VB:
Sub Mail()
  Dim olApp As Object, M As Object, Sh As Worksheet, Wbk As Workbook, Txt As String
  Set olApp = CreateObject("Outlook.application")
  For Each Sh In ThisWorkbook.Sheets
    If Sh.[A1] <> "" Then
      Sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Sh.Name, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
      Set M = olApp.CreateItem(olMailItem)
      With M
        .Subject = "Objet"
        '.Body = "Body"
        .Recipients.Add Sh.[A1].Value
        .attachments.Add ThisWorkbook.Path & "\" & Sh.Name & ".pdf"
  '      .display
        .Send
      End With
    Else
      Sh.PrintOut
    End If
  Next Sh
End Sub

Daniel
 

Comptable 1

XLDnaute Nouveau
Bonjour,

J'ai un soucis avec mon envoi de mail. Tout fonctionnait très bien et maintenant j'ai un message d'erreur :


Quand je fais débogage j'ai ça:



Je ne comprends pas pourquoi j'ai un problème avec les pièces jointe

Merci d'avance pour le coup de mains !!!

Bonne journée
 

Discussions similaires

Réponses
16
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…