Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Réorganiser des données d'une même cellule en colonne, sous une dénominateur commun

Iridium95

XLDnaute Nouveau
Bonjour,

je pense que mon titre est flou donc voici des précisions:

j'ai dans ma cellule A1 une référence R et dans ma cellule B1, j'ai un ou plusieurs codes C1, C2, C3,... associés à cette référence.
Dans ma cellule B1 j'ai une référence R2 et dans ma cellule B2, j'ai un ou plusieurs codes C1, C2, C3,... associés à cette référence.
Dans mon exemple je n'ai mis que 2 références (cf PJ onglet BASE), mais ce schéma peut se reproduire jusqu'à environ 800 références par tableau pour info
je précise que les codes sont "séparés" par des sauts de lignes.

Je souhaiterai avoir un tableau dans lequel j'aurais, pour chaque référence, une ligne par code (cf PJ onglet RESULTAT)

J'ai essayer de coupler diverses fonctions :
-substitue pour transformer les sauts de lignes de ma cellule B en virgule
-convertir pour séparer ma cellule B en plusieurs lignes
-collage spécial transposé pour passer ces lignes en colonne

Mais je n'arrive jamais au résultat escompté.

j'ai essayé le VBA, mais mes connaissances sont trop limitées.
Auriez-vous une idée pour cette problématique?

merci de votre aide
 

Pièces jointes

  • VARIATIONS.xlsx
    9.3 KB · Affichages: 18

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Iridium, Phil,
En PJ un essai avec du VBA ...
Code:
Sub Translate()
' Effacement matrice résultat
Sheets("RESULTAT").Range("A2:A" & Sheets("Resultat").Range("A65500").End(xlUp).Row).ClearContents
' Init pointeur d'ecriture
IndexW = 2
With Sheets("Base")
    ' Pour toutes les lignes du tableau d'entrée
    For L = 2 To .Range("A65500").End(xlUp).Row
        ' on crée un tableau avec comme séparateur chr(10)
        tablo = Split(.Cells(L, "B"), Chr(10))
        ' on stocke les résultats
        For i = 0 To UBound(tablo)
            ' colonne A : Ref
            Sheets("Resultat").Cells(IndexW, "A") = .Cells(L, "A")
            ' colonne B : Code
            Sheets("Resultat").Cells(IndexW, "B") = tablo(i)
            IndexW = IndexW + 1
        Next i
    Next L
End With
End Sub
A adapter en fonction de votre fichier final.
 

Pièces jointes

  • VARIATIONS.xlsm
    17.4 KB · Affichages: 7

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…