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

cedz_9441 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
cedz_9441 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

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