Macro pour coller adresses mail dans outlook

CARIAT

XLDnaute Nouveau
Bonjour

Je cherche une macro pour :

1. Sélection d’une colonne filtrée dans laquelle figure des adresses mail

2. Copie cette colonne

3. Ouvre Outlook

4. Colle les adresses dans le cadre destinataire

Merci

Voir exemple joint
 

CARIAT

XLDnaute Nouveau
Re : Macro pour coller adresses mail dans outlook

OUPS j'avais oublié la pièce jointe
 

Pièces jointes

  • ESSAI pour forum excel.xls
    17.5 KB · Affichages: 246
  • ESSAI pour forum excel.xls
    17.5 KB · Affichages: 263
  • ESSAI pour forum excel.xls
    17.5 KB · Affichages: 275

CARIAT

XLDnaute Nouveau
Re : Macro pour coller adresses mail dans outlook

Bonjour,
Merci de ton conseil Hasco, j 'ai fait un long tour sur le forum et en effet il y a beaucoup de sujets sur l'envoi mail mais quand on est pas un expert c'est pas toujours facile.

En fait je souhaite copier tous mes mails d'une colonne filtrée.
(jusqu'à la je peux me debrouiller).

Je souhaite ensuite les coller dans une zone destinataire d'Outlook, Zone "A :" (destinataire) ou Zone "CC" (copie cachée).
Pas de problème sans macro et un simple copier coller fait merveille, toutes mes adresses s'inscrivent parfaitement.

Je souhaite automatiser ces actions (depuis excel) par macro et plus particulièrement connaître le codage pour selectionner depuis excel la zone destinataire outloook ("A" ou "CC") et coller mes adresses copiées.

Merci.
 

JNP

XLDnaute Barbatruc
Re : Macro pour coller adresses mail dans outlook

Bonjour le fil :),
Macro d'envoi via OutLook avec commentaires. D'autre propriétés sont accessibles (format HTML, etc.) en tapant simplement un . entre le With et le End With.
Code:
Sub EnvoyerMail()
' Envoi du BàT par mail
' Thierry (XLD) - complètée JNP
' La référence à OutLook (Outil -> Références... -> MicroSoft OutLook 12.0 Object Library)
' doit être activée (12.0 pour 2007, 11.0 pour 2003, etc.)
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
With OLMail
      .To = "[EMAIL="toto@toto.fr"]toto@toto.fr[/EMAIL]" ' Destinataire
      .CC = "[EMAIL="titi@titi.fr"]titi@titi.fr[/EMAIL]" ' Copie
      .BCC = "[EMAIL="tutu@tutu.fr"]tutu@tutu.fr[/EMAIL]" ' Copie invisible
      .Importance = olImportanceNormal
      .Subject = "Coucou" ' Sujet
      .Body = "Bonjour chez vous" & vbCrLf & "Tata" ' Message
      .Attachments.Add "C:\Pièce à joindre.pdf" ' Pièce jointe
      .Categories = "Daily"
      .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
      .ReadReceiptRequested = True ' Accusé de lecture
' Send et Display ne doivent pas être utiliser simultanément
'     .Send '<<<<<<<<<<<<<<<Pour envoyer directement
      .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
End With
Set OLApplication = Nothing
Set OLMail = Nothing
End Sub
Bon WE :cool:
 

CARIAT

XLDnaute Nouveau
Re : Macro pour coller adresses mail dans outlook

Merci

Mais la macro bloque à :
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem

J'ai essayé de suivre tes instructions
' La référence à OutLook (Outil -> Références... -> MicroSoft OutLook 12.0 Object Library)
' doit être activée (12.0 pour 2007, 11.0 pour 2003, etc.)

Mais je ne vois pas dans le menu outil le sous menu Références (Outlook que j'utilise est outlook 2003)

Merci
 

CARIAT

XLDnaute Nouveau
Re : Macro pour coller adresses mail dans outlook

Merci pour la macro qui est claire.

Et après le Test tout se passe bien

Outlook est activé et les champs destinataires sont complétés par les exemples (toto etc..) inclus dans la macro :

.To = "toto@toto.fr" ' Destinataire
.CC = "titi@titi.fr" ' Copie
.BCC = "tutu@tutu.fr" ' Copie invisible

Mais pour revenir à ma question initiale :

Comment faire, par macro, pour qu'à la place de ces exemples se collent les mails copiés au prealable dans une colonne

Merci
 

JNP

XLDnaute Barbatruc
Re : Macro pour coller adresses mail dans outlook

Re :)
Comment faire, par macro, pour qu'à la place de ces exemples se collent les mails copiés au prealable dans une colonne
Tu ne nous a donné aucun code, aucun fichier, difficile de t"éclairer :confused:...
Mais si je comprends bien, tu as une colonne d'adresses email, il te suffit de la concaténer avec ";" comme séparateur pour l'affecter à .To
Entre nous, la rage ne sert à rien, surtout si tu attends quelque chose des autres...
Bon courage :cool:
 

CARIAT

XLDnaute Nouveau
Re : Macro pour coller adresses mail dans outlook

Bonsoir JNP
Merci encore de prende le temps de bien vouloir me répondre.

En effet dans mon message initial j'avais oublié le fichier joint.
Mais ce qui fut rectifié dès mon 2è message après constat de mon oubli.

Je remet donc ce fichier une 2è fois en y ajoutant ta macro et quelques éléments d'explication.

Je reprends car sans doute je n'ai pas été clair :

Je réalise sans macro un "copier" de ma colonne adresse mail dans excel et un "coller" dans la zone destinataire Outlook. Celà est parfait car mes adresses s'affichent parfaitement avec le point virgule de séparation qui s'ajoute automatiquement sans avoir à concatener.

Je souhaite automatiser cette action de copier coller avec une macro.

Ce que je n'arrive pas à faire par macro c'est reproduire l'action de "coller" dans lune des zones destinataires de Outlook (avec les adresses qui se concatènent automatiquement)

Merci.
 

Pièces jointes

  • ESSAI pour forum excel.xls
    31.5 KB · Affichages: 255
  • ESSAI pour forum excel.xls
    31.5 KB · Affichages: 313
  • ESSAI pour forum excel.xls
    31.5 KB · Affichages: 314

JNP

XLDnaute Barbatruc
Re : Macro pour coller adresses mail dans outlook

Re :),
Oui, effectivement, je ne me rappelais plus que tu avais mis le fichier en retard :p...
Modifie ton code comme suit
Code:
Sub EnvoyerMail(Destinataires As String)
' Envoi du BàT par mail
' Thierry (XLD) - complètée JNP
' Dans VBA La référence à OutLook (Outil -> Références... -> MicroSoft OutLook 12.0 Object Library)
' doit être activée (12.0 pour 2007, 11.0 pour 2003, etc.)
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
With OLMail
      .To = Destinataires ' Destinataire
'      .CC = "[EMAIL="titi@titi.fr"]titi@titi.fr[/EMAIL]" ' Copie
'      .BCC = "[EMAIL="tutu@tutu.fr"]tutu@tutu.fr[/EMAIL]" ' Copie invisible
      .Importance = olImportanceNormal
      .Subject = "Coucou" ' Sujet
      .Body = "Bonjour chez vous" & vbCrLf & "Tata" ' Message
      '.Attachments.Add "C:\Pièce à joindre.pdf" ' Pièce jointe
      .Categories = "Daily"
      .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
      .ReadReceiptRequested = True ' Accusé de lecture
' Send et Display ne doivent pas être utiliser simultanément
'     .Send '<<<<<<<<<<<<<<<Pour envoyer directement
      .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
End With
Set OLApplication = Nothing
Set OLMail = Nothing
End Sub
Sub test()
Dim I As Integer, ListeMail As String
I = 8
While Cells(I, 4) <> ""
If Not Intersect(Cells(I, 4).SpecialCells(xlCellTypeVisible), Cells(I, 4)) Is Nothing Then
ListeMail = ListeMail & ";" & Cells(I, 4)
End If
I = I + 1
Wend
EnvoyerMail (ListeMail)
End Sub
et déclenche la sub test, ça devrait te convenir. Par contre, il me semble que ça plafonne à 50 destinataires, et si tu envoie avec 200 destinataires, tu va faire réagir les anti spams... Si c'est des classes que tu gères, le mieux serait de scinder chaque classe, le nombre de destinataires devrait être correct.
Bon dimanche :cool:
 

CARIAT

XLDnaute Nouveau
Re : Macro pour coller adresses mail dans outlook

Merci JNP

Désolé, mais je ne comprends pas très bien la procédure.

De mon coté, voilà tout simplement ce que j'ai fait :

J'ai ajouté en début de code de ta macro "Sub Envoyermail ()" un copier de la colonne adresse de mon exemple, soit :

Range("D10:D150").Select
Selection.Copy

Ce qui donne :

________________________________________________________

Sub EnvoyerMail ()

Range("D10:D150").Select
Selection.Copy


Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
With OLMail
.To = Destinataires ' Destinataire
' .CC = "titi@titi.fr" ' Copie
' .BCC = "tutu@tutu.fr" ' Copie invisible
.Importance = olImportanceNormal
.Subject = "Coucou" ' Sujet
.Body = "Bonjour chez vous" & vbCrLf & "Tata" ' Message
'.Attachments.Add "C:\Pièce à joindre.pdf" ' Pièce jointe
.Categories = "Daily"
.OriginatorDeliveryReportRequested = True ' Accusé de dépôt
.ReadReceiptRequested = True ' Accusé de lecture
' Send et Display ne doivent pas être utiliser simultanément
' .Send '<<<<<<<<<<<<<<<Pour envoyer directement
.Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
End With
Set OLApplication = Nothing
Set OLMail = Nothing
End Sub

____________________________________________________

Cette macro ouvre Outlook et active la zone destinataire Outlook.
Parfait.

Il me manque juste le code pour coller dans cette zone ce que j'ai copié.

Je peux évidemment effectuer ce "coller" sans macro (Ctrl + V) mais j'aurai voulu l'automatiser et l'intégrer à la macro pour d'autres utilisateurs non avertis.

Quand à ta macro Sub test () que tu me propose, je ne comprends pas de quoi il s'agit et quand elle intervient.

Merci
 

JNP

XLDnaute Barbatruc
Re : Macro pour coller adresses mail dans outlook

Re :),
La sub test scanne ta feuille pour ne copier que les addresses filtrées et les stockent dans une variable, puis elle appelle la sub envoyermail en lui passant via la variable destinataires la liste des mail à coller dans le champ To. Donc strictement ce que tu souhaites. Mais évidement, le balayage de la sub test se base sur ton fichier fourni, alors que les adresses ne sont peut-être pas au même endroit sur ton vrai fichier, il faut donc adapter
Code:
Sub test()
Dim I As Integer, ListeMail As String
I = 8 ' ligne de la première adresse
While Cells(I, 4) <> "" ' tant que l'addresse en colonne 4 et sur la ligne I n'est pas vide
If Not Intersect(Cells(I, 4).SpecialCells(xlCellTypeVisible), Cells(I, 4)) Is Nothing Then ' si la cellule précitée est visible
ListeMail = ListeMail & ";" & Cells(I, 4) ' je l'ajoute à la liste
End If
I = I + 1 ' je regarde la ligne suivante
Wend
EnvoyerMail (ListeMail) ' j'envoie la liste à la sub d'envoi
End Sub
Voilà, c'est peut-être plus clair ?
Bon dimanche :cool:
 

Discussions similaires

Réponses
2
Affichages
280
Réponses
12
Affichages
585

Statistiques des forums

Discussions
312 367
Messages
2 087 651
Membres
103 628
dernier inscrit
rou37x