Concatener les cellules visibles pour faire liste de diffusion pour outlook

Le
Alex
Bonjour à tous,

Actuellement, je procède manuellement mais je souhaiterai le faire en
macro dans une boucle, mais je n'y parviens pas, et viens vous
demander votre aide. Voici comment je procède :

J'ai une base de données de "contacts" avec des données de type Nom,
Prenom, Société, Adresse, Adresse mail et une colonne Sélection.

Avec la colonne sélection, je mets un caractere "X" pour marquer ma
sélection. J'utilise le filtre automatique sur cette colonne et
selectionne les "non vide", afin de ne trouver que les lignes qui
m'interesse.

Je me positionne après la dernière ligne de données "Selection" dans
la colonne adresse mail, et là j'applique la fonction concatener
chaque cellule avec l'adresse mail, en intercalant entre chaque
adresse mail les caractères suivants "; " pour obtenir une cellule
avec toutes mes adresses mails avec le séparateur "; " et ainsi
obtenir ma liste de diffusion, que je n'ai plus qu'à copie dans
outlook pour envoi.

Merci par avance de votre aide.
Bien cordialement.
Alex
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #23333081
Bonjour,
Donne-nous quelques précisions complémentaires : Quelle est la plage
filtrée, quelle est la colonne "Sélection" et la colonne "adresse
mail".
Cordialement.
Daniel


Bonjour à tous,

Actuellement, je procède manuellement mais je souhaiterai le faire en
macro dans une boucle, mais je n'y parviens pas, et viens vous
demander votre aide. Voici comment je procède :

J'ai une base de données de "contacts" avec des données de type Nom,
Prenom, Société, Adresse, Adresse mail... et une colonne Sélection.

Avec la colonne sélection, je mets un caractere "X" pour marquer ma
sélection. J'utilise le filtre automatique sur cette colonne et
selectionne les "non vide", afin de ne trouver que les lignes qui
m'interesse.

Je me positionne après la dernière ligne de données "Selection" dans
la colonne adresse mail, et là j'applique la fonction concatener
chaque cellule avec l'adresse mail, en intercalant entre chaque
adresse mail les caractères suivants "; " pour obtenir une cellule
avec toutes mes adresses mails avec le séparateur "; " et ainsi
obtenir ma liste de diffusion, que je n'ai plus qu'à copie dans
outlook pour envoi.

Merci par avance de votre aide.
Bien cordialement.
Alex
Alex
Le #23333181
Bonjour,

Merci pour votre réponse.
Pour répondre à voes interrogations :

Ma plage filtrée est variable en fonction du nombre de ligne
selectionné par un caractere. si j'ai sélectionné deux lignes, ma
plage après utilisation du filtre me présentatera que 2 lignes avec
l'ensemble de mes colonnnes. La sélection se fait toujours en manuel,
car la selection depend à qui on veut écrire et est variable en
fontion du mail. (La sélection se fera toujours en manuel même si
j'arrive à faire la macro de concatenation d'addresse mail).

Ma colonne "Sélection" est en C.

Ma colonne "Adresse Mail" est en E.

Espérant avoir bien répondu à votre attente.
Cordialement.
Alex
FFO
Le #23333301
On 4 mai, 10:43, Alex
Bonjour,

Merci pour votre réponse.
Pour répondre à voes interrogations :

Ma plage filtrée est variable en fonction du nombre de ligne
selectionné par un caractere. si j'ai sélectionné deux lignes, ma
plage après utilisation du filtre me présentatera que 2 lignes avec
l'ensemble de mes colonnnes. La sélection se fait toujours en manuel,
car la selection depend à qui on veut écrire et est variable en
fontion du mail. (La sélection se fera toujours en manuel même si
j'arrive à faire la macro de concatenation d'addresse mail).

Ma colonne "Sélection" est en C.

Ma colonne "Adresse Mail" est en E.

Espérant avoir bien répondu à votre attente.
Cordialement.
Alex



Salut à toi

Ce bout de code devrait faire

i = 2
Do While i < Range("C65535").End(xlUp).Row + 1
If Range("C" & i) = "X" Then
Liste = Liste & Range("E" & i) & ";"
End If
i = i + 1
Loop
Range("E" & i + 1) = Mid(Liste, 1, Len(Liste) - 1)

Traitement à partir de la ligne 2
Résultat première cellule libre colonne E

Fais des essais et dis moi !!!!!!
DanielCo
Le #23333361
La macro suivante crée et affiche un message avec les destinataires. Tu
n'as plus qu'à compléter ce message et l'envoyer.

Sub EnvoiMail()
Dim Rg As Range, c As Range
Dim OlApp As Object, M As Object
With Sheets("Feuil1")
Set Rg = .Range(.[C1], .Cells(Rows.Count, 3).End(xlUp))
End With
Rg.AutoFilter
Rg.AutoFilter Field:=1, Criteria1:="X"
Set Rg = Rg.SpecialCells(xlCellTypeVisible)
If Rg.Count > 1 Then
Set OlApp = CreateObject("Outlook.application")
Set M = OlApp.CreateItem(olMailItem)
With M
For Each c In Rg
If c.Row > 1 Then
.Recipients.Add c.Offset(, 2)
End If
Next c
.display
End With
Else
Exit Sub
End If
End Sub

Daniel


Bonjour,

Merci pour votre réponse.
Pour répondre à voes interrogations :

Ma plage filtrée est variable en fonction du nombre de ligne
selectionné par un caractere. si j'ai sélectionné deux lignes, ma
plage après utilisation du filtre me présentatera que 2 lignes avec
l'ensemble de mes colonnnes. La sélection se fait toujours en manuel,
car la selection depend à qui on veut écrire et est variable en
fontion du mail. (La sélection se fera toujours en manuel même si
j'arrive à faire la macro de concatenation d'addresse mail).

Ma colonne "Sélection" est en C.

Ma colonne "Adresse Mail" est en E.

Espérant avoir bien répondu à votre attente.
Cordialement.
Alex
Alex
Le #23333671
Bonjour à tous,

Merci pour vos réponses.
La solution proposée par FFO, foncitonne bien, j'ai juste modifié en
fixe la cellule de concatenation pour ne pas la chercher.
La solution de Daniel bloque sur .Recipients.Add c.offset(,2), mais je
ne sais pas à quoi cela est du ? mais cela ne fait pas de mail
brouillon, sans doute car cela bloque avant ?
Merci par avance de vos réponses.
Bien cordialement.
Alex
DanielCo
Le #23333721
La solution de Daniel bloque sur .Recipients.Add c.offset(,2), mais je
ne sais pas à quoi cela est du ? mais cela ne fait pas de mail
brouillon, sans doute car cela bloque avant ?



Ca fonctionne pour moi, mais peut-être pas avec une version antérieure
à Outlook 2007; laquelle as-tu ?
Alex
Le #23333971
Re :
Oui je travaille sur la 2003.
Cdt.
DanielCo
Le #23333961
Essaie (sans garantie) :

Sub EnvoiMail2()
Dim Rg As Range, c As Range
Dim OlApp As Object, M As Object
With Sheets("Feuil1")
Set Rg = .Range(.[C1], .Cells(Rows.Count, 3).End(xlUp))
End With
Rg.AutoFilter
Rg.AutoFilter Field:=1, Criteria1:="X"
Set Rg = Rg.SpecialCells(xlCellTypeVisible)
If Rg.Count > 1 Then
Set OlApp = CreateObject("Outlook.application")
Set M = OlApp.CreateItem(olMailItem)
With M
For Each c In Rg
If c.Row > 1 Then
txt = txt & c.Offset(, 2).Value & ";"
End If
Next c
txt = Left(txt, Len(txt) - 1)
.to = txt
.display
End With
Else
Exit Sub
End If
End Sub

Daniel


Re :
Oui je travaille sur la 2003.
Cdt.
Publicité
Poster une réponse
Anonyme