Boucle dans macro Visual Basic (Excel)
charlie27
-
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Boucle dans macro Visual Basic (Excel)
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Visual basic - Télécharger - Langages
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Microsoft 365 basic - Accueil - Microsoft Office
1 réponse
Bonjour,
voici ta solution :
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)
i=2
a=1
do while cells(i,1)<>""
Liste.DLName = "Mailing" & a
b=1
do while b <=80
if cells(i,1)<>"" then
Set Desti = OutlookApp.Session.CreateRecipient(cells(i,1).Value)
Desti.Resolve
Liste.AddMember Desti
end if
i=i+1
b=b+1
loop
Liste.save
a=a+1
loop
Attention, ca va te créer à chaque fois une liste Mailing 1, Mailing 2... Donc si elles existent déjà, ca va bugger. Soit tu les renommes une fois créées soit tu ajoutes un bout de code qui supprime le mailing existant pour la recréer.
voici ta solution :
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)
i=2
a=1
do while cells(i,1)<>""
Liste.DLName = "Mailing" & a
b=1
do while b <=80
if cells(i,1)<>"" then
Set Desti = OutlookApp.Session.CreateRecipient(cells(i,1).Value)
Desti.Resolve
Liste.AddMember Desti
end if
i=i+1
b=b+1
loop
Liste.save
a=a+1
loop
Attention, ca va te créer à chaque fois une liste Mailing 1, Mailing 2... Donc si elles existent déjà, ca va bugger. Soit tu les renommes une fois créées soit tu ajoutes un bout de code qui supprime le mailing existant pour la recréer.