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

Excel Discussion :

concaténer des cellules d'une colonne avec un séparateur [XL-2016]


Sujet :

Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut concaténer des cellules d'une colonne avec un séparateur
    Bonjour à tous , je reviens vers vous pour vous demander de l'aide .
    Alors je souhaite concaténer des numéros qui se trouvent dans des cellules d'une colonne et les stocker dans un objet " liste_cli ".
    je vous donne l'exemple de la concaténation ="'"&A42&",'"&A43&"'" mais je ne sais pas comment l'automatiser pour qu'il me concatène toutes les cellule jusqu’à la dernière ligne.
    voic un apércu de mon code :

    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
    Function flux()
    Dim str As String
    Dim liste_cli As String
    Dim liste_abo As String
    Dim i, Dl As Long
     
    liste_cli = ""
    liste_abo = ""
     
    str = ThisWorkbook.Sheets("ALVINA").Range("A")
    Dl = ThisWorkbook.Sheets("ALVINA").Range("A" & Rows.Count).End(xlUp).Row
     
    For cpt = Dl To 2 Step -1
     
    liste_cli = ("'" & Cell.Offset(0, 1) & "'" & "," & "'" & Cell.Offset(0, -1) & "'" & cpt)
     
    Next cpt
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par slakhdine Voir le message
    Bonjour à tous , je reviens vers vous pour vous demander de l'aide .
    Alors je souhaite concaténer des numéros qui se trouvent dans des cellules d'une colonne et les stocker dans un objet " liste_cli ".
    je vous donne l'exemple de la concaténation ="'"&A42&",'"&A43&"'" mais je ne sais pas comment l'automatiser pour qu'il me concatène toutes les cellule jusqu’à la dernière ligne.
    J'ai peut-être pas compris ce que tu souhaites mais si tu veux reproduire une formule pour toutes les lignes il suffit de faire un double clic sur la poignée (croix pleine noire).


    maintenant si c'est pas ça merci de donner plus de détail

    A bientôt

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    J'ai peut-être pas compris ce que tu souhaites mais si tu veux reproduire une formule pour toutes les lignes il suffit de faire un double clic sur la poignée (croix pleine noire).


    maintenant si c'est pas ça merci de donner plus de détail

    A bientôt
    Merci pour ta réactivité.
    je veux bien que ça soit en vba et finalement j'ai pu améliorer mon code mais il marche pas encore il me dit " incompatibilité de type "
    et le deuxième soucis c'est que j'arrive pas à mettre des crochets au début de la première cellule et à la fin de la dernière cellule.

    pour info : je souhaite mettre le contenu de chaque cellule entre des crochets 'DH25669' et après les séparer avec des virgules 'DH25669','DH25670'....

    voici mon code
    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
     
    Sub Concat()
     Dim tbl()
     Dim cpt, Dl As Long
     
     Dl = ThisWorkbook.Sheets("ALVINA").Range("A" & Rows.Count).End(xlUp).Row
     
    For cpt = Dl To 2 Step -1
     
     With ThisWorkbook.Worksheets("ALVINA")
     
      tbl = .Range("A" & cpt).Value
      .Range("M2") = Join(Application.Transpose(tbl), "','")
     
     End With
     Next cpt
    End Sub

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 151
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    pour info : je souhaite mettre le contenu de chaque cellule entre des crochets 'DH25669' et après les séparer avec des virgules 'DH25669','DH25670'.
    Ai-je une mauvaise vue ?
    Tu parles de crochet et moi dans ton exemple, je vois des apostrophes
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Ai-je une mauvaise vue ?
    Tu parles de crochet et moi dans ton exemple, je vois des apostrophes
    Désolé c'est des apostrophes.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 151
    Billets dans le blog
    53
    Par défaut
    Bonjour;

    Voici une fonction qui permet de concaténer une suite de "mot" à l'aide d'une chaîne de séparation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function PutJoinCells(ByVal oRange As Range, Optional Separator As String = ";") As String
      If oRange.Columns.Count = 1 Then
         PutJoinCells = Join(Application.Transpose(oRange.Value), Separator)
      End If
    End Function
    Je l'ai écrite dans le but de concaténer avec un seul caractère de séparation
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print  PutJoinCells(Range("L5:L10"), "';'")
    renverra d01';'d02';'d03';'d04';'d05';'d06

    Il reste donc à ajouter une apostrophe avant et après l'ensemble de la chaîne ce que fera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "'" & PutJoinCells(Range("L5:L10"), "';'") & "'"
    soit 'd01';'d02';'d03';'d04';'d05';'d06'
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut
    Nickel ton code me fait exactement ce que je voulais merci infiniment.

    il me reste juste une petite question, vue que les données ça se mettent à jour du coup j'ai pensée à faire une boucle qui parcourt la plage a concaténer jusqu’à la dernière ligne sans les compter comme ce-ci "L5:L10"

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 151
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Et qu'ai je fait ?
    Il n'y a pas de boucle que je sache dans ma procédure

    Petite remarque. Il est inutile de reproduire chaque fois le message précédent. Cela alourdi la lecture de la discussion.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    Bonjour,

    Sans VBA ca ne serait pas plus simple ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =A1&" ; "&A2&" ; "&A3&" ; "&A4&" ; "&A5(...)

  10. #10
    Nouveau candidat au Club

    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut
    Bonsoir,

    Au hasard d'une recherche sur un sujet connexe, je suis tombé sur cet ancien post.

    Si cela peut aider quelqu'un, voici une version sans VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE("'"&CONCAT(L5:L10&"';'");NBCAR("'"&CONCAT(L5:L10&"';'"))-2)
    Qui renvoie 'd01';'d02';'d03';'d04';'d05';'d06'

    Belle soirée et bon codage

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 151
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est un vieux post.
    Aujourd'hui avec les tableaux structurés et les nouvelles fonctions d'excel, il y a plus simple et surtout plus flexible
    Voici sans VBA, la concaténation du contenu de la colonne Code du tableau structuré nommé t_Stock avec comme une apostrophe comme séparateur ="'" & JOINDRE.TEXTE("'";VRAI;t_Stock[Code]) & "'"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 276
    Par défaut
    Bonjour
    En effet, JOINDRE.TEXTE est à privilégier depuis au moins Excel 2019 (même s'il me semble me souvenir que je l'utilisais en 2017 ou 2018)

    les ' au début et à la fin peuvent être intégrés directement dans la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =JOINDRE.TEXTE(";";;"'"&une_plage&"'")
    Notez que dans les dernières versions d'Excel nous disposons de la fonction "inverse" : FRACTIONNER.TEXTE


    Attention Philippe à tes balises.

    Stéphane

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 151
    Billets dans le blog
    53
    Par défaut
    Bonjour Stéphane,
    Attention Philippe à tes balises.
    Merci pour ton message.
    Mes balises étaient bien placées. C'est bizarre. Du coup, j'ai mis la balise plus courte
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  14. #14
    Nouveau candidat au Club

    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut
    Bonjour Philippe (dont j'avoue être lecteur régulier et fan inconditionnel ), bonjour Stéphane,

    Voilà qu'en voulant aider, je me trouve aidé en retour, ce qui correspond bien à l'esprit de cette plateforme.
    J'ignorais totalement l'objet de cette fonction JOINDRE.TEXTE et elle va vite devenir une copine.

    Merci donc à vous deux de m'avoir tout à la fois corrigé et éclairé.

    Belle journée,
    Thierry

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

Discussions similaires

  1. [XL-2003] Supprimer les minuscules des cellules d'une colonne
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/04/2012, 13h24
  2. Réponses: 1
    Dernier message: 05/03/2012, 15h04
  3. Réponses: 3
    Dernier message: 06/06/2011, 12h56
  4. Réponses: 2
    Dernier message: 09/09/2009, 14h08
  5. VBA EXCEL : Concaténation des cellules d'une colonne
    Par kikaillo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2007, 17h37

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