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
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,

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 🙏
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,

Super ça marche ! Merci beaucoup !

J'ai le message suivant qui apparaît :
1630503485307.png
 

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 :
1630912626905.png


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

1630912651656.png


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
431

Statistiques des forums

Discussions
311 740
Messages
2 082 041
Membres
101 879
dernier inscrit
Arthur M