Fusionner les cellules de plusieurs lignes ayant le même index

Messages postés
3
Date d'inscription
vendredi 16 août 2019
Statut
Membre
Dernière intervention
16 août 2019
-
Bonjour,

Voici résumé mon problème : Je cherche à concatener les contenus textes (sur plusieurs lignes) de cellules se trouvant sur des lignes différentes, mais ayant le même index.

En d'autres termes, j'ai dans mon fichier de départ deux colonnes comme ça :

et je voudrais arriver à ça :

Questions subsidiaire, dans quel ordre les textes seront-ils concaténés ?
Vous l'aurez deviné, j'ai plusieurs centaines d'index et plusieurs milliers de lignes...
L'un(e) d'entre vous aurait-il un idée, sachant que je ne maîtrise ni les macros ni le VBA.
Par avance merci pour votre aide
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
8783
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 octobre 2019
436
1
Merci
bonjour,
as-tu l'intention d'apprendre le VBA?
dans quel ordre les textes doivent-ils être concaténés?
les lignes à concaténer se suivent-elles toujours?

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 66153 internautes nous ont dit merci ce mois-ci

cedz_9441
Messages postés
3
Date d'inscription
vendredi 16 août 2019
Statut
Membre
Dernière intervention
16 août 2019
-
Bonjour ! je n'ai aucune connaissance et pas vraiment le temps d'apprendre le VBA.
- En l'état actuel du tableau, les textes peuvent être concaténés dans leur ordre d'apparition dans le fichier.
- Donc oui, pour un même index, les lignes à concaténer se suivent dans le tableau
Merci pour votre aide !
yg_be
Messages postés
8783
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 octobre 2019
436 > cedz_9441
Messages postés
3
Date d'inscription
vendredi 16 août 2019
Statut
Membre
Dernière intervention
16 août 2019
-
voici un exemple, qui suppose que le tableau de départ commence en A1 de la feuille appelée cedz, et qui crée le tableau de destination en C1.
Option Explicit
Private Sub cedz()
Dim fl As Worksheet, source As Range, texte As String, destination As Range, index As String
Set fl = ThisWorkbook.Sheets("cedz")
Set source = fl.[A1]
Set destination = fl.[C1]
index = ""
Do While source <> ""
    If source <> index Then
        If index <> "" Then
            destination = index
            destination.Offset(0, 1) = texte
            Set destination = destination.Offset(1, 0)
        End If
        index = source
        texte = source.Offset(0, 1)
    Else
        texte = texte + vbCrLf + CStr(source.Offset(0, 1))
    End If
    index = source
    Set source = source.Offset(1, 0)
Loop
If index <> "" Then
    destination = index
    destination.Offset(0, 1) = texte
End If
End Sub
cedz_9441
Messages postés
3
Date d'inscription
vendredi 16 août 2019
Statut
Membre
Dernière intervention
16 août 2019
-
Top !!!! ça fonctionne nikel !!! Un énorme merci. J'espère que la fonction pourra servir à d'autres personnes.
Commenter la réponse de yg_be