Boucle à faire dans macro VBA (Excel) - VB/VBA/VBS - Programmation
MarshPosté le 04-06-2011 à 16:30:38
Bonjour, voici ma macro pour créer des listes de diffusion Outlook à partir d'une liste de mails sous Excel : Sub CreerListeDiffusion() 'Création de liste de diffusion Dim OutlookApp As New Outlook.Application Dim Liste As Outlook.DistListItem Dim Desti As Outlook.Recipient Set Liste = OutlookApp.CreateItem(olDistributionListItem) Liste.DLName = "Mailing 1" For Each c In Range("A2:A80" ) Set Desti = OutlookApp.Session.CreateRecipient(c.Value) Desti.Resolve Liste.AddMember Desti Next c Liste.Save 'Création de liste de diffusion2 Set Liste = OutlookApp.CreateItem(olDistributionListItem) Liste.DLName = "Mailing 2" For Each c In Range("A81:A160" ) Set Desti = OutlookApp.Session.CreateRecipient(c.Value) Desti.Resolve Liste.AddMember Desti Next c Liste.Save 'Création de liste de diffusion3 Set Liste = OutlookApp.CreateItem(olDistributionListItem) Liste.DLName = "Mailing 3" For Each c In Range("A161:A240" ) Set Desti = OutlookApp.Session.CreateRecipient(c.Value) Desti.Resolve Liste.AddMember Desti Next c Liste.Save ça marche très bien, mais voila que maintenant j'ai 12000 adresses, et je veux faire des listes de 80 noms. partant comme ça, ça va ma faire 150 fois la même chose a taper. j'ai essayé de faire une boucle (pour n de 1 à 150, avec n comme variable utilisée dans les adresses, mais à ma grande honte, j'ai toujours des erreurs, ça ne marche pas. je suis sur que c'est simple pour vous, non? merci de m'aider[#46FF00][#FFFF00][/#46FF00][/#FFE200]
--------------- Néophyte complet, vous moquez pas !
Sub CreerListeDiffusion() 'Création de liste de diffusion Dim OutlookApp As New Outlook.Application Dim Liste As Outlook.DistListItem Dim Desti As Outlook.Recipient dim i as integer for i = 0 to 149 Set Liste = OutlookApp.CreateItem(olDistributionListItem) Liste.DLName = "Mailing 1" Liste.DLName = "Mailing " & cstr(i) For Each c In Range("A2:A80" ) For Each c In Range(cells(i*80+2,1),cells((i+1)*80+1,1)) Set Desti = OutlookApp.Session.CreateRecipient(c.Value) Desti.Resolve Liste.AddMember Desti Next c Liste.Save set Liste=nothing next i end sub
Message édité par tarteflambee le 05-06-2011 à 15:58:49
Marsh Posté le 04-06-2011 à 16:30:38
Bonjour,
voici ma macro pour créer des listes de diffusion Outlook à partir d'une liste de mails sous Excel :
Sub CreerListeDiffusion()
'Création de liste de diffusion
Dim OutlookApp As New Outlook.Application
Dim Liste As Outlook.DistListItem
Dim Desti As Outlook.Recipient
Set Liste = OutlookApp.CreateItem(olDistributionListItem)
Liste.DLName = "Mailing 1"
For Each c In Range("A2:A80" )
Set Desti = OutlookApp.Session.CreateRecipient(c.Value)
Desti.Resolve
Liste.AddMember Desti
Next c
Liste.Save
'Création de liste de diffusion2
Set Liste = OutlookApp.CreateItem(olDistributionListItem)
Liste.DLName = "Mailing 2"
For Each c In Range("A81:A160" )
Set Desti = OutlookApp.Session.CreateRecipient(c.Value)
Desti.Resolve
Liste.AddMember Desti
Next c
Liste.Save
'Création de liste de diffusion3
Set Liste = OutlookApp.CreateItem(olDistributionListItem)
Liste.DLName = "Mailing 3"
For Each c In Range("A161:A240" )
Set Desti = OutlookApp.Session.CreateRecipient(c.Value)
Desti.Resolve
Liste.AddMember Desti
Next c
Liste.Save
ça marche très bien, mais voila que maintenant j'ai 12000 adresses, et je veux faire des listes de 80 noms. partant comme ça, ça va ma faire 150 fois la même chose a taper.
j'ai essayé de faire une boucle (pour n de 1 à 150, avec n comme variable utilisée dans les adresses, mais à ma grande honte, j'ai toujours des erreurs, ça ne marche pas. je suis sur que c'est simple pour vous, non?
merci de m'aider[#46FF00][#FFFF00][/#46FF00][/#FFE200]
---------------
Néophyte complet, vous moquez pas !