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 dans 1 seule cellule en fonction d'une condition [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    décembre 2009
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 264
    Points : 124
    Points
    124
    Par défaut Concatener dans 1 seule cellule en fonction d'une condition
    Bonjour,

    Je sèche avec les boucles en VBA

    Je cherche a concatener dans une seule cellule toutes les adresses mails d'une colonne si dans une autre colonne une condition est remplie
    Exemple:
    Si dans la colonne Sélection il y a un "x" alors je concatène le mail en c1

    A B C
    Sélection Mail a@a.com;b@b.com;d@d.com
    x a@a.com
    x b@b.com
    c@c.com
    x d@d.com

    Merci de votre aide
    Cdt

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    18 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 18 263
    Points : 52 842
    Points
    52 842
    Billets dans le blog
    118
    Par défaut
    Salut.

    Dommage que tu n'as pas Excel365, JOINDRE.TEXTE aurait été la solution sans VBA(*), mon billet de blog du 03/02/2020 en parlait justement

    Sans VBA, tu pourrais passer par POWER QUERY en suivant les explications que je donne dans ce billet tout frais que ta question m'a donné envie de rédiger .


    Je te propose ici la fonction perso suivante, basée bien entendu sur un tableau structuré, même si elle fonctionne sur des plages classiques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function EmailsSelectionnes(Emails As Range, Choix As Range)
      Dim i As Long
     
      For i = 1 To Choix.Rows.Count
        If UCase(Choix(i).Value) = "X" Then EmailsSelectionnes = EmailsSelectionnes & Emails(i).Value & ";"
      Next
      If EmailsSelectionnes <> "" Then EmailsSelectionnes = Left(EmailsSelectionnes, Len(EmailsSelectionnes) - 1)
    End Function
    Tu l'utilises dans une formule Excel comme une fonction native

    Nom : 2021-09-27_082918.png
Affichages : 36
Taille : 9,1 Ko



    * Solution 365

    Nom : 2021-09-27_083833.png
Affichages : 32
Taille : 9,7 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre confirmé
    Homme Profil pro
    ingénieur
    Inscrit en
    mars 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : mars 2015
    Messages : 155
    Points : 454
    Points
    454
    Par défaut
    Bonjour

    Une autre possibilité en passant par le modèle de données Power Pivot

    Une mesure DAX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste_Mail:=CONCATENATEX(FILTER(Tableau1;Tableau1[Sélection]="x");Tableau1[Mail];";")

    et dans une cellule une formule CUBE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VALEURCUBE("ThisWorkbookDataModel";"[Measures].[Liste_Mail]")

    Nom : 2021_09_27 Mesure CONCATENATEX.JPG
Affichages : 27
Taille : 96,4 Ko

    Stéphane

  4. #4
    Membre régulier
    Inscrit en
    décembre 2009
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 264
    Points : 124
    Points
    124
    Par défaut
    Bonjour Messieurs,

    et merci pour vos solutions
    J'ai utilisé la fonction de Pierre sur un tableau classique et le résultat est bien là : merci !

    Je n'ai jamais utilisé Power Pivot et je vais approfondir cette solution : merci RACCOURCIX

    Bonne journée
    Cdt

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/07/2018, 18h23
  2. Réponses: 3
    Dernier message: 01/06/2018, 13h54
  3. [XL-2007] Format Cellule en fonction d'une valeur dans une autre cellule
    Par crissud dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 20/11/2013, 12h46
  4. [XL-2003] Calcul dans une cellule en fonction d'une date
    Par olivier777 dans le forum Excel
    Réponses: 6
    Dernier message: 11/09/2012, 15h55
  5. Comment insérer un JComboBox dans un seul cellule
    Par Master.Mohammed dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 16/03/2011, 19h47

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