IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Concatener des cellules non vides pour faire liste d'envoi mail [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 10
    Points
    10
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    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 : 196
    Points : 159
    Points
    159
    Par défaut sdispro
    Salut tchoutchou69,

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





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu...!!!
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    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

  5. #5
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 665
    Points : 929
    Points
    929
    Par défaut
    Ceci devrait faire l'affaire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    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 : 196
    Points : 159
    Points
    159
    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é.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par issoram Voir le message
    Ceci devrait faire l'affaire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:

  8. #8
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    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 : 196
    Points : 159
    Points
    159
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Aurais tu la meme chose mais pour ootlouk 2003?

  10. #10
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    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 : 196
    Points : 159
    Points
    159
    Par défaut sdispro
    Re,

    cela marche très bien pour outlook 2003.

    Tu rencontres des problèmes avec ce code?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Super ca marche merci à vous deux. Je laisse le code de la macro pour ceux qui veulent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OpenOffice][Tableur] Comment compter des cellules non vides
    Par BizutAccess dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 14/02/2012, 09h18
  2. [XL-2010] Sélection cellules non vides pour création d'un graphique
    Par seboboch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2011, 16h12
  3. [XL-2003] action sur des cellules non vides
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/05/2009, 15h33
  4. Somme des cellules non vides en VBA
    Par baldg dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/03/2008, 00h44
  5. Obtenir la lettre de la derniere colonne non vide pour faire un tri.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2007, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo