Envoi de mails à plusieurs adresses mails présentes dans le classeur

Bonjour,

Je vous joins mon fichier

En suivant un tuto, j'ai créé un bouton pour envoyer par mail une plage définie de mon classeur, en l'occurence ici, dans la feuille "planning pour agence interim", la plage B2:Q26

Problème, mon bouton marche très bien pour une adresse définie, mais j'aimerais utiliser une liste présente dans la feuille "paramètres" AI2:AL8

Et là, je coince. J'ai fait des tests avec d'autres suggestions glanées ci et là mais sans succès

D'avance, merci à la communauté si une solution se dégage et, si possible, une explication pour que je progresse sur cette item

Locuste

Bonjour

Essayez le code comme ceci

Private Sub CommandButton1_Click()
Dim dlg As Byte, i as byte

ActiveWorkbook.EnvelopeVisible = True
With Sheets("Paramètres")
    dlg = .Range("AJ" & Rows.Count).End(xlUp).Row
    For i = 3 To dlg
        With .MailEnvelope.Item
           .To = Worksheets("Paramètres").Range("AK" & i)
           .Subject = "Horaires des intérimaires ligne de caisses Castorama"
           .Send 'display
        End With
    Next i
End With
End Sub

je n'ai pas testé car je n'utilise pas le même programme mail que vous.
Vous pouvez remplacer Send par Display juste pour vérifier que cela fonctionne

si ok -->

Cordialement

Bonjour Dan et d'ores et déjà un tout grand merci pour la proposition

Celà ressemble à ce que j'avais vu, mais je ne suis pas arrivé à maitriser la partie Range pour le .To

Pour l'instant, je ne peux pas tester car j'au un bug macro : erreur 1004 méthode 'enveloppevisible' de l'objet _Workbook a échoué

vba debug

Pour l'instant, je ne peux pas tester car j'au un bug macro : erreur 1004 méthode 'enveloppevisible' de l'objet _Workbook a échoué

Pourquoi mettez-vous l'instruction à FALSE alors que dans votre demande la valeur est à TRUE ??

Edit, j'avais mis false pour tester, mais j'ai remis true après

J'ai corrigé un peu pour obtenir finalement que le bug disparaisse mais je ne suis pas sur d'avoir utiliser la bonne méthode

image

Mais autres soucis :

- il ne va pas rechercher les adresses mails

- la plage sélectionnée correspond à toute la feuille (quadrillage et ligne vide inclue). Sur mon premier test, j'etais parvenu à n'avoir que la partie sélectionnée

- il met le bouton dans le corps du texte alors que j'aimerais qu'il ne se voit pas dans le mail

vba debug

- il ne va pas rechercher les adresses mails

Mais pourquoi vous changez ce que je vous donne ??? --> Range("AK3" ???

- la plage sélectionnée correspond à toute la feuille (quadrillage et ligne vide inclue). Sur mon premier test, j'etais parvenu à n'avoir que la partie sélectionnée

- il met le bouton dans le corps du texte alors que j'aimerais qu'il ne se voit pas dans le mail

A part que j'avais enlevé Activesheet.range("A2:Q26") rien n'a changé par rapport à ce que vous aviez donné.

Ce n'est pas ce que je vous ai donné qui met le bouton dans votre mail.
Vous voulez envoyez à toutes les adresses mail dans le même mail ou en mail séparé.

Vous utilisez quoi comme messagerie

bonjour,

je suppose que les adresses se trouvent dans la plage AK2:AK8. Ce ".To", on peut aussi utiliser ".BCC" quand on ne vaut pas qu'on voit toutes les adresses.

.to = Join(Application.Transpose(Sheets("Paramètres").Range("AK2:AK8")), ";")

Vu que ça buggait avec la formule originale, j'ai fait quelques tests

Avec votre version :

image

Je rajoute donc le range ActiveSheet.Range("A2:Q26").Select, la, plus de bugs mais aucune adresse mail importée

image

Je test donc de préciser l'info du range "AK" vers "AK3" mais aucun effet

Le but est que le bouton permette d'envoyer uniquement la plage "B2;Q26" de la feuille "planning pour agence interim" à toutes les adresses mails présentes dans le tableau de l'onglet "paramètres" et ce en un seul mail, peu importe que ces adresses soient en "A" ou en "Cc"

image

J'utilise outlook

Je test donc de préciser l'info du range "AK" vers "AK3" mais aucun effet

Mais ce que vous faites avec AK3 est erroné. (AK3 & i si i vaut 1 -->> cela donne AK31). Donc vous devez restez avec AK.

Habituellement avec Outlook, on procède souvent autrement (exemple ici --> https://forum.excel-pratique.com/s/goto/981334)
Mais si cela a fonctionné pour 1 adresse, essayez le code comme ceci :

Private Sub CommandButton1_Click()
Dim dlg As Byte, i As Byte
Dim listedest As String, dest As String

ActiveSheet.Range("B2:p26").Select
ActiveWorkbook.EnvelopeVisible = True
With Sheets("Paramètres")
    dlg = .Range("AJ" & Rows.Count).End(xlUp).Row
    For i = 3 To dlg
        dest = Worksheets("Paramètres").Range("AK" & i)
        If dest <> "" Then listedest = dest & ";" & listedest
    Next i

    With .MailEnvelope.Item
        .To = listedest
        .Subject = "Horaires des intérimaires ligne de caisses Castorama"
        .Send 'display
    End With
End With
End Sub

Cordialement

Hello à vous 2 et merci piur vos explicaions et conseils

En combinnant ce script :

image

Et en remplaçant l'adresse mail par

image

J'obtiens exactement ce que je souhaite, à savoir le mail et ses différents destinataires qui changent si je change la liste d'adresses mails dans la feuille "paramètres"

Pour moi, problème résolu donc et encore une fois grâce à la communauté Excel-Pratique

Merci à Dan et BsAlv pour leur aide

A très bientôt pour d'autres questions

Locuste

Bah avec ce que je vous ai donné cela va faire la même chose sauf qu'en utilisant Join(.....) si votre liste grandit il faudra adapter la ligne dans le code. A vous de voir

Mais si ok, il ne vous reste plus qu'à cloturer le fil

Rechercher des sujets similaires à "envoi mails adresses presentes classeur"