Alimentation d'une cellule par concatenation des valeurs

Bonjour à tous,

Je sais, le sujet n'est pas très parlant. Encore une fois j'ai besoin de vous pour relever le défis. Je ne sais si celui-ci et relevable mais je pense que je suis au bon endroit pour le découvrir.

Mon besoin est le suivant:

Imaginons une fichier Excel composé de milliers de lignes et de 2 colonnes. Le fichier est en fait une sorte listing de médiathèque avec en colonne A, le titre des chansons et en colonne B le nom de l'interprète.

Une chanson pouvant avoir été interprétée par plusieurs chanteurs ou groupes, je souhaiterais dans la colonne C retrouver la liste de tous les interprètes de la même chanson séparés par un caractère comme une virgule.

Je pourrais utiliser un tableau croisé mais, je souhaiterais vraiment ne pas modifier la structure et l'ordre actuel du fichier source.

Un exemple très sommaire de ce que je cherche à faire

10chanson.xlsx (9.16 Ko)

Merci de votre aide

Salut Ventura,

quelque chose comme ça?

  • clic en [C1] : ta liste se compose ;
  • changement en [A:B] : si les deux cellules sont complètes -> mise à jour
  • si tu insères une ligne, la macro t'écrit le nom de la chanson de la cellule du dessus et t'apprête la [B] pour compléter le nom de l'interprète ;
  • si tu élimines une ligne, c'est pareil : mise à jour.

Si tu rencontres un problème, tu sais où sonner...

A+

7singerslist.xlsm (19.30 Ko)

En plein çà !!!

Un énorme merci, je vais essayer de décoder ça pour me sentir moins c...

Salut Ventura,

rien de sorcier... 8)

iRow = Range("A" & Rows.Count).End(xlUp).Row + 1            'limite inférieure de ta colonne "Chanson"... +1, histoire de ne pas louper un titre solo en fin de tableau
tSong = Range("A2:C" & iRow).Value                          'mise en tableau TSONG des 3 colonnes [ABC]
'
For x = 1 To UBound(tSong, 1)                               'on parcourt le tableau TSONG
    x = IIf(sSong = "" And x = 1, 1, x - 1)                 'valeur du n° d'ordre en fonction des circonstances (fin de tableau (Row + 1) = vide / nouveau titre)
    iLig = x                                                'mémorisation de la ligne
    sSong = tSong(x, 1)                                     'mémorisation du titre en cours
    Do While tSong(x, 1) = sSong                            '...tant que le titre = sSong
        tSong(x, 3) = ""                                    'effacement des données de la colonne [C]
        tSong(iLig, 3) = IIf(tSong(iLig, 3) = "", tSong(x, 2), tSong(iLig, 3) & " ," & tSong(x, 2))     'écriture en TSONG(iLig,3) de la liste des interprètes
        x = x + 1                                           'on passe au suivant
        If x > UBound(tSong, 1) Then Exit For               'si dépassement de TSONG, on sort de la boucle FOR...NEXT
    Loop
Next
Range("A2:C" & iRow) = tSong                                'écriture de TSONG mis à jour sur la feuille
Columns(3).AutoFit                                          'adaptation de la largeur de la colonne [C]

Bonne lecture!

A+

Rechercher des sujets similaires à "alimentation concatenation valeurs"