Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 14h32   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 19
Points : 1
Points : 1
Par défaut Concatener des cellules non vides pour faire liste d'envoi mail

Bonjour,

Malgré mes progrès en vba j ai toujours autant besoin de vous.
Voici le problème du jour.
J'ai un tableau qui a des adresses mail dans la colonne D. Sur la colonne F je met un x pour sélection tel ou tel personne.

Ensuite je fais une routine VBA pour ne sortir que les lignes avec des x:

Code :
1
2
3
4
5
Dim i As Long
For i = 0 To 20
   If Cells(i + 1, 6).Value = "x" Then _
      Cells(i + 1, 9).Value = Cells(i + 1, 4).Value
Next i
Jusque là ca va mais après j aimerai concaténer le résultat des cellules I non vide dans une cellules H15 avec une séparation ";" pour avoir une liste d'envoi par mail.

Help et merci d'avance
tchoutchou69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h08   #2
Membre régulier
 
Homme
Developpeur
Inscription : novembre 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 83
Points : 87
Points : 87
Par défaut sdispro

Salut tchoutchou69,

ci un code maccro a essayer et qui fait ton besoin:





Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Range("D1:E1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$D$1:$E$21").AutoFilter Field:=2, Criteria1:="<>"
    Range("D2:D21").Select
    Selection.Copy
    Sheets("SELECTION").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=CONCATENATE(RC[-2],R[1]C[-2],R[2]C[-2],R[3]C[-2],R[4]C[-2],R[5]C[-2],R[6]C[-2],R[7]C[-2],R[8]C[-2],R[9]C[-2],R[10]C[-2],R[11]C[-2],R[12]C[-2])"
    Range("C2").Select


A+ et bon courage
sdispro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h11   #3
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour

Code :
1
2
3
4
5
Dim i As Long
For i = 0 To 20
If Cells(i + 1, 6).Value = "x" Then _
Cells(i + 1, 9).Value = Cells(15, 9).Value  &";" & Cells(i + 1, 4).Value
Next i
au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/11/2011, 15h17   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 19
Points : 1
Points : 1
Pour Sdisro : j ai un peu de mal à comprendre.

Pour patricktoulon : je suis arrivé à ce resultat mais apres j aimerais concatener les resultats des cellules non vides de la colonne H dans une cellule I
tchoutchou69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h21   #5
Membre habitué
 
Avatar de issoram
 
Homme Zeco
Développeur informatique
Inscription : janvier 2009
Messages : 219
Détails du profil
Informations personnelles :
Nom : Homme Zeco
Localisation : France, Saône et Loire (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 219
Points : 121
Points : 121
Envoyer un message via MSN à issoram
Ceci devrait faire l'affaire,

Code :
1
2
3
4
5
6
7
8
9
Dim i As Long
 
Cells(15, 8).Value = ""  'Ta cellule H15
For i = 0 To 20
    If Cells(i + 1, 6).Value = "x" Then
        Cells(i + 1, 9).Value = Cells(i + 1, 4).Value
        Cells(15, 8) = Cells(15, 8) & ";" & Cells(i + 1, 4).Value
    End If
Next i
Mais pourquoi ne pas utiliser plus simplement une formule en H15? Une piste pour cela ici: http://www.developpez.net/forums/d89...atener-a1-a23/

Cordialement.
issoram est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h25   #6
Membre régulier
 
Homme
Developpeur
Inscription : novembre 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 83
Points : 87
Points : 87
Par défaut sdispro

Re,

désolé, je suis nouveau et je ne sais pas trop comment utiliser les outils proposer par le forum.

utilise la fonction "do until" afin de boucler tous tes mails ressortis en colonne i.
Tu précède ta boucle par un tri et le tour est joué.
sdispro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h31   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 19
Points : 1
Points : 1
Citation:
Envoyé par issoram Voir le message
Ceci devrait faire l'affaire,

Code :
1
2
3
4
5
6
7
8
9
Dim i As Long
 
Cells(15, 8).Value = ""  'Ta cellule H15
For i = 0 To 20
    If Cells(i + 1, 6).Value = "x" Then
        Cells(i + 1, 9).Value = Cells(i + 1, 4).Value
        Cells(15, 8) = Cells(15, 8) & ";" & Cells(i + 1, 4).Value
    End If
Next i
Mais pourquoi ne pas utiliser plus simplement une formule en H15? Une piste pour cela ici: http://www.developpez.net/forums/d89...atener-a1-a23/

Cordialement.
Merci c est exactement ca, ensuite comment faire un copier coller pour le mettre dans un mail? j'arrive a faire une macro avec mailto mais apres je n arrive pas a copier dans to:
tchoutchou69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 16h10   #8
Membre régulier
 
Homme
Developpeur
Inscription : novembre 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 83
Points : 87
Points : 87
Par défaut sdispro

re,

Envoi un Mail: l'adresse est dans la cellule D1, le sujet dans la D2 et le texte dans la D3.

Voilà, tu as tout d'expliquer et tu devrais pouvoir avancer dans ton projet.

'Tester avec Outlook Express 5.
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub EnvoiUnMail()
Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String
MailAd = Range("d1")
Subj = Range("d2")
Msg = Msg & Range("d3")
URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub

Bonne fin d'AM
sdispro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 07h56   #9
Invité de passage
 
Inscription : janvier 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 19
Points : 1
Points : 1
Aurais tu la meme chose mais pour ootlouk 2003?
tchoutchou69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 09h55   #10
Membre régulier
 
Homme
Developpeur
Inscription : novembre 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 83
Points : 87
Points : 87
Par défaut sdispro

Re,

cela marche très bien pour outlook 2003.

Tu rencontres des problèmes avec ce code?
sdispro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 10h38   #11
Invité de passage
 
Inscription : janvier 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 19
Points : 1
Points : 1
Super ca marche merci à vous deux. Je laisse le code de la macro pour ceux qui veulent.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub CommandButton1_Click()
 
Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String
 
Range("H2:H16,H25").Select
    Range("H25").Activate
    Application.CutCopyMode = False
    Selection.ClearContents
'
Dim i As Long
For i = 0 To 20
   If Cells(i + 1, 6).Value = "x" Then _
      Cells(i + 1, 8).Value = Cells(i + 1, 4).Value
Next i
 
    Range("H21").Select
    Selection.Copy
    Range("H25").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
MailAd = Range("H25")
Subj = Range("H26")
Msg = Msg & Range("H27")
URLto = "mailto:" & MailAd & "?subject=" & Subj & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto
 
End Sub
tchoutchou69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h41.


 
 
 
 
Partenaires

Hébergement Web