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

cedz_9441 Messages postés 3 Statut Membre -  
cedz_9441 Messages postés 3 Statut Membre -
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

1 réponse

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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?
    1
    1. cedz_9441 Messages postés 3 Statut Membre
       
      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 !
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > cedz_9441 Messages postés 3 Statut Membre
         
        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
        
        0
    2. cedz_9441 Messages postés 3 Statut Membre
       
      Top !!!! ça fonctionne nikel !!! Un énorme merci. J'espère que la fonction pourra servir à d'autres personnes.
      0