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

[RESOLU] - Re-Construction table de données en fonction de valeurs multiples

  • Initiateur de la discussion Initiateur de la discussion Akortys
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Akortys

XLDnaute Occasionnel
Bonjour à tout le monde,

Bon le titre n'est pas très compréhensible même pour moi.

Code en vba :

J'ai une table de données (feuille Donnees) dans laquelle j'ai des données avec des valeurs multiples (colonne "Commentaires").
Je souhaite grâce à une macro reconstruire cette table de donner en différenciant chaque valeur de la colonne commentaire pour obtenir le résultat de la feuille ("Restitution").
Copie la ligne contenant une valeur multiple séparée par un ";".

Je mets en PJ un fichier qui sera tellement plus parlant que mon charabia.

En vous remerciant d'avance.
 

Pièces jointes

Dernière édition:
Re : Re-Construction table de données en fonction de valeurs multiples

Bonjour,

Pour info j'ai fait le code suivant et cela à l'air de fonctionner donc si cela peut aider qlq'un :


Au plaisir
 
Re : [RESOLU] - Re-Construction table de données en fonction de valeurs multiples

Bonjour Akortys

Une proposition
(A noter que la première boucle n'est là que pour évitzer un transpose en fin de code)
VB:
Private Sub CommandButton1_Click()
Dim i&, J&, K&, L&, x&
Dim TData As Variant, TReport As Variant

With Sheets("Donnees")
    TData = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(3).Row, 4))
End With

For i = LBound(TData, 1) To UBound(TData, 1)
    TData(i, 4) = Split(TData(i, 4), ";")
    x = x + 1 + UBound(TData(i, 4))
Next i

ReDim TReport(1 To x, 1 To 4)

For i = LBound(TData, 1) To UBound(TData, 1)
    For L = LBound(TData(i, 4)) To UBound(TData(i, 4))
        J = J + 1
        For K = LBound(TData, 2) To UBound(TData, 2) - 1
            TReport(J, K) = TData(i, K)
        Next K
        TReport(J, 4) = TData(i, 4)(L)
    Next L
Next i

With Sheets("Restitution")
    .Cells(2, 1).Resize(UBound(TReport, 1), UBound(TReport, 2)) = TReport
    .Columns.AutoFit
    .Activate
End With

    
End Sub

Cordialement
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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