Concatener les cellules visibles pour faire liste de diffusion pour outlook
8 réponses
Alex
Bonjour =E0 tous,
Actuellement, je proc=E8de 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=E8de :
J'ai une base de donn=E9es de "contacts" avec des donn=E9es de type Nom,
Prenom, Soci=E9t=E9, Adresse, Adresse mail... et une colonne S=E9lection.
Avec la colonne s=E9lection, je mets un caractere "X" pour marquer ma
s=E9lection. 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=E8s la derni=E8re ligne de donn=E9es "Selection" dans
la colonne adresse mail, et l=E0 j'applique la fonction concatener
chaque cellule avec l'adresse mail, en intercalant entre chaque
adresse mail les caract=E8res suivants "; " pour obtenir une cellule
avec toutes mes adresses mails avec le s=E9parateur "; " et ainsi
obtenir ma liste de diffusion, que je n'ai plus qu'=E0 copie dans
outlook pour envoi.
Merci par avance de votre aide.
Bien cordialement.
Alex
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DanielCo
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
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
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
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
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
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
On 4 mai, 10:43, Alex wrote:
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 !!!!!!
On 4 mai, 10:43, Alex <ale...@orange.fr> wrote:
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
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
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
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
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
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
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
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
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 ?
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 ?
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 ?
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.
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
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