Envoi en groupe vers Outlook

Tophe2

XLDnaute Impliqué
Bonsoir le forum

J'ai regardé quelques sujet traitant de la liaison entre excel et outlook mais je n'ai pas encore trouvé ce que je cherche.

- J'ai 1 fichier excel 200 noms maxi en tête noms prénoms tél email adresse ...

Est il possible de faire une case à coché ou autre pour sélectionner les destinataire d'un message outlook avec une pièce jointe.

Merci pour votre aide ou info sur cela.

Cordialement
et bonne fin d'année à tous.
Christophe.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Envoi en groupe vers Outlook

Bonsoir Christophe,

Déjà les cinq discussions similaires en bas de ce fil, sinon, question mille fois traitée...

Recherche en haut, c'est pas mal. Ensuite, si problèmes, tu reviens.

Bonne soirée.

Jean-Pierre
 

Tophe2

XLDnaute Impliqué
Re : Envoi en groupe vers Outlook

Bonsoir Jean Pierre

Merci pour les propositions, mais c'est pour l'ordi du travail et chez moi j'ai Outlook express et pas microsoft Outlook.
Donc pour les outils référence, j'ai pas !!. Mais en regardant les fichiers joint dans les messages ... je voulais savoir, si il était possible de cliquer sur les destinataires choisis et faire un bouton <sélectionner> qui ouvre Microsoft Outlook afin d'écrire le message et d'y mettre la pièce jointe.
Je ne souhaite pas écrire le texte dans excel.
Je cherche un exemple concernant la sélection d'adresse email pour faire cela.

Cordialement
Christophe.
 

JNP

XLDnaute Barbatruc
Re : Envoi en groupe vers Outlook

Bonjour Tophe2, Jeanpierre :),
As tu essayé de passer par un USF avec un combobox multi choix ?
Ou alors, si tu veux conserver ce choix pour plusieurs envois, une petite colonne avec validation ne prenant que des X devant tes adresses et un test avant l'envoi ?
Pour pouvoir saisir le texte et mettre une pièce jointe, c'est l'instruction ci-dessous en rouge (macro de Thierry) qui permet en bascule de voir ou de ne pas voir le mail avant son envoi.
Code:
' Thierry (XLD)
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
    With OLMail
          .To = MailTo ' Destinataire
          .CC = MailCC ' Copie
          .Importance = olImportanceNormal
          .Subject = ObjetMessage ' Sujet
          .Body = CorpsMessage ' Message
          .Attachments.Add CheminDestination & NouveauNomFichier ' Pièce jointe
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
          .ReadReceiptRequested = True ' Accusé de lecture
[COLOR=red]'          .Send '<<<<<<<<<<<<<<<Pour envoyer directement[/COLOR]
[COLOR=red]         .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi[/COLOR]
    End With
Bon WE :cool:
 
Dernière édition:

Tophe2

XLDnaute Impliqué
Re : Envoi en groupe vers Outlook

Bonjour le forum, Jean Pierre et JNP

Merci pour ta proposition j'ai un fichier test où j'ai entré ton code. Seulement j'avais en colonne C et A des doubles clic pour faire des listes ou des recherches. Maintenant il m'ouvre à chaques clic Outlook pardon Word pour envoyer un message. C'est vrai c'est mieux qu'au départ car j'avais rien de bien concret.
Est il possible de ne pas ouvrir word pour l'envoi de message mais outlook directement et à qu'à chaque doubles clic Outlook ou word ne s'ouvre pas.

Comment faire pour sélectionner les destinataires de l'email ?

Merci pour l'aide.
Cordialement et bonne fête
Christophe.
 

Pièces jointes

  • repertoire.zip
    16.9 KB · Affichages: 95
  • repertoire.zip
    16.9 KB · Affichages: 100
  • repertoire.zip
    16.9 KB · Affichages: 97

JNP

XLDnaute Barbatruc
Re : Envoi en groupe vers Outlook

Re Tophe2 :),
Ne le prends pas mal mais j'ai l'impression que tu copies plus les lignes de codes que tu ne les analyses... Le code fourni pour envoyer un email doit bien sûr se trouver dans un module séparé avec une procédure à lui et un échange de données (le plus pratique est d'utiliser Public dans un module que tu nommes publication pour déclarer les variables à échanger d'un code à l'autre). Là, tu l'as collé dans la procédure Worksheet_BeforeDoubleClick de ta feuille, donc il se déclenche obligatoirement à chaque double clic...
Maintenant, le fait qu'il ouvre Word est certainement dû au fait que les objets contrôlés sont prévus pour Outlook et non OutlookExpress, il faudrait trouver les correspondances mais je ne les connais pas. Mais ton post de tout à l'heure disait qu'au boulot, tu l'avais, donc, si chez toi ça ouvre Word, au boulot, ça ouvrira Outlook.
Maintenant, pour sélectionner les destinataires, je t'avais proposé de mettre un "X" dans une colonne devant les destinataire. Il te suffira de faire une boucle dessus pour concaténer les adresses avec un ";" entre chaque adresse et l'envoyer dans ".To"
Bon courage :cool:
 

Tophe2

XLDnaute Impliqué
Re : Envoi en groupe vers Outlook

Bonsoir JNP
Mon niveau en écriture VBA est très léger, mais à l'aide de livres et du forum j'arrive à faire quelques bricole. Certes ce que tu me dit n'est que la vérité de mes actions sur excel. Cependant je vais essayer de prendre en compte ce que tu me dis pour avancer mais sache que si tu as un exemple concernant la X avant l'email je suis preneur car là je vois pas trop (faire une boucle pour concaténer...).
Merci par avance cela m'aiderai bien dans l'avancer de mon travail.
Cordialement
Christophe.
 

JNP

XLDnaute Barbatruc
Re : Envoi en groupe vers Outlook

Re :),
Comme je te l'ai dit, aucune critique de ma part, on est tous là pour progresser (sauf les Barbatrucs qui sont déjà trop bons ;)) et à chacun sa méthode (en ce qui me concerne, le "ça marche" m'exaspère et quitte à y passer du temps, je préfère le "j'ai compris").
Pour tes cases à cocher, par exemple, tu te réserves la colonne A pour mettre un "X". Ensuite, dans ton code d'envoi email, tu mets :
Code:
Dim I as Integer, MailTo as String
For I = 1 To 100 [COLOR=seagreen]' Il y a sur le forum de quoi regarder _[/COLOR]
[COLOR=seagreen]  quelle est la dernière cellule remplie, mais comme je _[/COLOR]
[COLOR=seagreen]  n'ai jamais testé, je mets 100 par exemple[/COLOR]
If Cells(I, 1) = "X" Then
    MailTo = MailTo & Cells(I, 3) & ";" [COLOR=seagreen]' 3 pour regarder _[/COLOR]
[COLOR=seagreen]  ta colonne C si c'est là où est l'adresse, à modifier pour ton cas[/COLOR]
End If
Next I
Ensuite, il te reste juste à mettre dans le code que je t'avais donné
Code:
.To = MailTo
Bon courage :cool:
 

Tophe2

XLDnaute Impliqué
Re : Envoi en groupe vers Outlook

Bonjour JNP et le forum

J'avance, j'ai suivi ta proposition et réalisé un tableau comme tu me le conseillais. J'ai assemblé le code et ca donne cela:

Code:
Sub Message1()
Dim I As Integer, MailTo As String
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)

For I = 1 To 100 ' Il y a sur le forum de quoi regarder _
  quelle est la dernière cellule remplie, mais comme je _
  n'ai jamais testé, je mets 100 par exemple
If Cells(I, 1) = "X" Then
    MailTo = MailTo & Cells(I, 3) & ";" ' 3 pour regarder _
  ta colonne C si c'est là où est l'adresse, à modifier pour ton cas
End If
Next I

    With OLMail
          .To = MailTo ' Destinataire
          .CC = MailCC ' Copie
          .Importance = olImportanceNormal
          .Subject = ObjetMessage ' Sujet
          .Body = CorpsMessage ' Message
         ' .Attachments.Add CheminDestination & NouveauNomFichier ' Pièce jointe
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
          .ReadReceiptRequested = True ' Accusé de lecture
'          .Send '<<<<<<<<<<<<<<<Pour envoyer directement
         .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
    End With
End Sub

Cela m'ouvre bien Outlook (que j'ai fini par installer sur mon ordi pour faire les essais), pas pas avec les emails contenant une X colonne A.
Si tu as un peu d'aide à m'apporter en ce dimanche d'avant Noël.
Cordialement
Christophe.
 

JNP

XLDnaute Barbatruc
Re : Envoi en groupe vers Outlook

Salut Christophe :),
En pièce jointe ton fichier de départ avec les X à côté de tes adresses. Chez moi ça marche (après adaptations des valeurs de colonnes et de lignes).
A te lire et joyeuses fêtes :cool:
 

Pièces jointes

  • repertoireJNP.xls
    59 KB · Affichages: 143

Tophe2

XLDnaute Impliqué
Re : Envoi en groupe vers Outlook

Bonsoir JNP
Tout d'abord merci pour ton aide et ta patience cela fontionne correctement j'ai pu y mettre également les CC, l'objet et le message mais je n'ai pas réussi à y insérer une pièce jointe directement en mettant le chemin d'accès dans une cellule ou autre ... j'essai avec le code suivant
Code:
'.Attachments.Add CheminDestination & NouveauNomFichier ' Pièce jointe

Je viens de trouver cette solution mais valable pour une pièce jointe si solution pour plusieurs dans # cellules ou la même ?
Code:
Sub Message1()
Dim I As Integer, MailTo As String, MailCC As String
Dim vPJ
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)

For I = 1 To 100 ' Il y a sur le forum de quoi regarder _
  quelle est la dernière cellule remplie, mais comme je _
  n'ai jamais testé, je mets 100 par exemple
If Cells(I, 1) = "X" Then
    MailTo = MailTo & Cells(I, 3) & ";" ' 3 pour regarder _
  ta colonne C si c'est là où est l'adresse, à modifier pour ton cas
End If
If Cells(I, 1) = "C" Then
    MailCC = MailCC & Cells(I, 3) & ";"
End If
Next I
ObjetMessage = Cells(3, 10)
CorpsMessage = Cells(3, 11)

vPJ = Range("J6")


    With OLMail
          .To = MailTo ' Destinataire
          .CC = MailCC ' Copie
          .Importance = olImportanceNormal
          .Subject = ObjetMessage ' Sujet
          .Body = CorpsMessage ' Message
          .Attachments.Add vPJ  ' Pièce jointe
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
          .ReadReceiptRequested = True ' Accusé de lecture
'          .Send '<<<<<<<<<<<<<<<Pour envoyer directement
         .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
    End With
End Sub
Si une proposition je suis toujours preneur.

Bonne soirée
Cordialement
Christophe.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 458
dernier inscrit
Vulgaris workshop