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

Fermé
cedz_9441 Messages postés 3 Date d'inscription vendredi 16 août 2019 Statut Membre Dernière intervention 16 août 2019 - Modifié le 16 août 2019 à 12:30
cedz_9441 Messages postés 3 Date d'inscription vendredi 16 août 2019 Statut Membre Dernière intervention 16 août 2019 - 16 août 2019 à 14:53
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 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
16 août 2019 à 12:37
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 vendredi 16 août 2019 Statut Membre Dernière intervention 16 août 2019
16 août 2019 à 13:38
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 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476 > cedz_9441 Messages postés 3 Date d'inscription vendredi 16 août 2019 Statut Membre Dernière intervention 16 août 2019
16 août 2019 à 14:18
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 vendredi 16 août 2019 Statut Membre Dernière intervention 16 août 2019
16 août 2019 à 14:53
Top !!!! ça fonctionne nikel !!! Un énorme merci. J'espère que la fonction pourra servir à d'autres personnes.
0