Microsoft 365 envoi par mail de feuilles Excel dont les noms des feuilles sont les adresses d'envoi

obelix77

XLDnaute Junior
Bonjour,

Je souhaite envoyer le contenu de chaque feuille (nombre le lignes/colonnes variable donc jusqu'à "CTRL+FIN) aux adresses mails qui sont le nom des feuilles (nombre de feuilles variables également).
Je souhaite utiliser un modèle pour l'envoi des mails qui se fera par Outlook.
Mon problème : je ne maitrise pas du tout le vba 🥹

Je joins un fichier exemple. Ce fichier sur établi par Query.

J'espère avoir été clair dans ma demande et je remercie tous ceux qui se pencheront sur mon besoin.

Très cordialement,
 

Pièces jointes

  • envoi_mail.xlsx
    41.5 KB · Affichages: 9
Solution
tu l'a visiblement trouvé
1705753229724.png

Dudu2

XLDnaute Barbatruc
Bonjour,
Parce que ce que tu demandes un un développement qui peut prendre des heures et je doute qu'un membre du forum doté des compétences pour le faire accepte de passer ce temps à développer ton affaire.
Le forum est fait pour aider sur des problème techniques précis, pas pour faire des développements conséquents.
 

patricktoulon

XLDnaute Barbatruc
Bonjour
faut pas abuser c'est pas du grand developpement là
un exemple vite fait comme ca
essaie comme ca
et si les mails te conviennent comme ça
ferme les tous et supprime la ligne".Display" et débloque la ligne".send"
chaque feuille est envoyée en piece jointe

VB:
Sub rearmMail()
    Dim Sh As Worksheet
    For Each Sh In Worksheets
        If InStr(1, Sh.Name, "@", vbTextCompare) > 0 Then
            sendMail Sh
        End If
    Next
End Sub
Sub sendMail(feuille As Worksheet)        'envoi mail

    Dim OutObj As Object, OutMail As Object
    Dim sPath As String, sNomFic As String
    Dim sAdrmail As String, strSujet As String, strBody As String
    Dim FichierPDF$
    FichierPDF = ThisWorkbook.Path & "\" & feuille.[A4].Value & ".pdf"
    Set OutObj = CreateObject("outlook.application")        'lance outlook
    Set OutMail = OutObj.CreateItem(0)
    feuille.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FichierPDF, Quality:=xlQualityStandard, _
                                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
                                False

    sAdrmail = feuille.[B1].Text       'adresse destinataire
    SAdrCC = "moimeme@hotmail.com'        'adresse CC"
    strSujet = "fichier"        'sujet du mail
    
    Message = "Bonjour Mr" & feuille.[A4].Value & vbCrLf & " veuillez trouver ci joint la feuille vous concernant " & vbCrLf & "En vous souhaitant bonne réception"
    
    With OutMail
        .Display        'affiche le mail sans l'envoyer sinon .send
        .to = sAdrmail
        .CC = SAdrCC
        .Subject = strSujet
        .Body = Message
        .attachments.Add FichierPDF
        '.send envoie le mail
    End With
    Set OutMail = Nothing
    Set OutObj = Nothing
If Dir(FichierPDF) <> "" Then Kill FichierPDF
End Sub
 

obelix77

XLDnaute Junior
Bonjour
faut pas abuser c'est pas du grand developpement là
un exemple vite fait comme ca
essaie comme ca
et si les mails te conviennent comme ça
ferme les tous et supprime la ligne".Display" et débloque la ligne".send"
chaque feuille est envoyée en piece jointe

VB:
Sub rearmMail()
    Dim Sh As Worksheet
    For Each Sh In Worksheets
        If InStr(1, Sh.Name, "@", vbTextCompare) > 0 Then
            sendMail Sh
        End If
    Next
End Sub
Sub sendMail(feuille As Worksheet)        'envoi mail

    Dim OutObj As Object, OutMail As Object
    Dim sPath As String, sNomFic As String
    Dim sAdrmail As String, strSujet As String, strBody As String
    Dim FichierPDF$
    FichierPDF = ThisWorkbook.Path & "\" & feuille.[A4].Value & ".pdf"
    Set OutObj = CreateObject("outlook.application")        'lance outlook
    Set OutMail = OutObj.CreateItem(0)
    feuille.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FichierPDF, Quality:=xlQualityStandard, _
                                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
                                False

    sAdrmail = feuille.[B1].Text       'adresse destinataire
    SAdrCC = "moimeme@hotmail.com'        'adresse CC"
    strSujet = "fichier"        'sujet du mail
  
    Message = "Bonjour Mr" & feuille.[A4].Value & vbCrLf & " veuillez trouver ci joint la feuille vous concernant " & vbCrLf & "En vous souhaitant bonne réception"
  
    With OutMail
        .Display        'affiche le mail sans l'envoyer sinon .send
        .to = sAdrmail
        .CC = SAdrCC
        .Subject = strSujet
        .Body = Message
        .attachments.Add FichierPDF
        '.send envoie le mail
    End With
    Set OutMail = Nothing
    Set OutObj = Nothing
If Dir(FichierPDF) <> "" Then Kill FichierPDF
End Sub
Un grand merci à toi. Certes ce n'est pas du grand développement mais quand on ne maitrise pas du tout le vba...
Par contre je ne souhaite pas envoyer la feuille en pièce jointe mais juste faire un copier/coller dans le corps du mail. En effet, il ne faut pas que "Pierre" voit les résultats de "Paul" et sous forme de pièce jointe il peut.
Vraiment je suis sincèrement désolé de ne pas l'avoir dit dans la demande; un oubli de ma part.
Et je sais que les demandes "à tiroir" sont insupportables. Donc encore une fois 1000 excuses
Et bien sur un énorme merci 👍👍👍
 

patricktoulon

XLDnaute Barbatruc
re
pierre /paul ???????????????
les mail partent vers un seul destinataires
c'est pas clair ton truc là
t'a du picoler avec pierre et paul toi 🤪
en attendant j'ai évolué
et oui moi je vais comme une fusée ;)
j'ai ajouté une feuille Acceuil
avec un bouton pour envoyer toutes les feuilles
et
des liens vers les autres feuilles sont créés à l'ouverture du classeur dans la feuille Acceuil
1705674459078.png



quand tu clique sur ces liens ca t'emmène sur la feuille
ensuite quand tu es sur une feuille tu a au click droit dans le menu des cellule
"Envoyer par mail
"retour à l'acceuil
tu l'aura compris
tu clique dessus et ca fait ce dont il est sensé faire pour la feuille sur la quelle tu clique
1705674661181.png


voila voila
tu dira a pierre et à paul d'éviter de te faire picoler hein
fichier joint
 

Pièces jointes

  • envoi_mail(1).xlsm
    58.9 KB · Affichages: 3

obelix77

XLDnaute Junior
re
pierre /paul ???????????????
les mail partent vers un seul destinataires
c'est pas clair ton truc là
t'a du picoler avec pierre et paul toi 🤪
en attendant j'ai évolué
et oui moi je vais comme une fusée ;)
j'ai ajouté une feuille Acceuil
avec un bouton pour envoyer toutes les feuilles
et
des liens vers les autres feuilles sont créés à l'ouverture du classeur dans la feuille Acceuil
Regarde la pièce jointe 1188750


quand tu clique sur ces liens ca t'emmène sur la feuille
ensuite quand tu es sur une feuille tu a au click droit dans le menu des cellule
"Envoyer par mail
"retour à l'acceuil
tu l'aura compris
tu clique dessus et ca fait ce dont il est sensé faire pour la feuille sur la quelle tu clique
Regarde la pièce jointe 1188751

voila voila
tu dira a pierre et à paul d'éviter de te faire picoler hein
fichier joint
Comme tu as du le comprendre, Pierre et Paul étaient des exemples bien sur.
Mais tu m'as bien fait rire 🤣
Je te remercie énormément.
Je teste ça dans le week-end et je te fait un retour.
Tu es au top 😜
 

obelix77

XLDnaute Junior
Comme tu as du le comprendre, Pierre et Paul étaient des exemples bien sur.
Mais tu m'as bien fait rire 🤣
Je te remercie énormément.
Je teste ça dans le week-end et je te fait un retour.
Tu es au top 😜
Hello

J'ai testé et ... ça marche nickel. Je ne pouvais espérer mieux. Tu est au top.

Juste une chose : je ne vois pas le 2ème fichier qui permet de faire un clic droit dans la feuille. Pas bien grave le 1er est nickel. Mais je ne voudrais pas que tu ais bossé pour rien.

Ce soir apéro avec Pierre et Paul. Tu viens? Selon ton pseudo tu n'ai pas très loin. Moi c'est Carry le Rouet.

Encore 1000 mercis
 
Dernière édition:

Discussions similaires