Extraction-Mise en forme de données dans plusieurs cellules Le sujet est résolu

Forum pour toutes vos questions à propos d'Excel (avec ou sans macros) ...
Fabianos94
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 16 février 2015
Version d'Excel : 2013 FR

Message par Fabianos94 » 29 janvier 2016, 11:56

Bonjour à tous,

Là je fais face à un problème que je ne peux résoudre au vu de mes compétences actuelles, c'est pourquoi je me tourne vers vous.

J'ai un document Excell qui récupère des données de ventes réparties de la manière suivante (exemple pièce jointe):
- chaque ligne correspond à une vente
- Il y a 4 colonnes reprenant chacune une information précise :
- Nombre de produit
- Marque du produit
- Nom du produit
- Prix du produit

Il faut savoir que pour une vente, nous pouvons remonter plusieurs produits ( à date le maximum atteint est de 29 produits mais ça peut être plus). Pour récupérer les informations correspondant à chaque produit, les données au sein de chaque cellules sont séparées par le caractère "|".
Ce que j'aimerais c'est avoir une liste des produits vendus avec la quantités d'articles et le prix généré (cf exemple pièce jointe).
Dernière info, il y a plus d'une 10aine de marque et plus d'une 100aine de produits...

J'espère que vous pourrez m'aider.
Merci d'avance et bonne journée,
Fab

Pour info, pour l'instant je déconcatenne tous les cellules mais c'est une usine à gaz :(

Merci d'avance,
Fabien
Fichiers joints
Demo Split marque-produit-qte-prix.xlsx
(8.65 Kio) Téléchargé 9 fois
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 13319
Appréciations reçues : 294
Inscrit le : 27 août 2012
Version d'Excel : 2016 FR 32 bits

Message par Jean-Eric » 29 janvier 2016, 13:52

Bonjour et bonne année,
Une première proposition à étudier.
Cdlt.
Demo Split marque-produit-qte-prix.xlsm
(25.54 Kio) Téléchargé 17 fois

Code : Tout sélectionner

Option Explicit

Private Sub CommandButton1_Click()
Dim tbl As Variant, x As Variant
Dim lRow As Long
Dim I As Long, J As Long, K As Long

    Application.ScreenUpdating = False

    With Feuil2
        If Not .ListObjects(1).DataBodyRange Is Nothing Then
            .ListObjects(1).DataBodyRange.Delete
        End If
    End With

    With Feuil1
        tbl = .Cells(4, 1).CurrentRegion.Value
        For J = 1 To UBound(tbl, 2)
            lRow = 1
            For I = 1 To UBound(tbl, 1)
                x = Split(tbl(I, J), "|")
                For K = 0 To UBound(x)
                    Feuil2.Cells(lRow, J) = x(K)
                    lRow = lRow + 1
                Next K
            Next I
        Next J
    End With

    With Feuil2
        .Activate
        .PivotTables(1).PivotCache.Refresh
    End With

End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Fabianos94
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 16 février 2015
Version d'Excel : 2013 FR

Message par Fabianos94 » 29 janvier 2016, 14:48

Alors Là !!!
Je suis à moitié choqué mais ça colle avec ce que je veux, au moins sur l'exemple :)

Après j'aurai un petit travail à faire pour filtrer selon les produits qui m'intéressent et pour bien avoir le nombre de produits, et prix total mais ça me semble nickel, merci beaucoup !!!

Bon pour l'instant sur mon doc "réel" Excell plante, peut-être car il y a beaucoup de lignes...

Merci en tout cas, je reviendrai confirmer que ça marche définitivement dès que mon pc arrêtera de faire des siennes.
Merci !
Fab
Fabianos94
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 16 février 2015
Version d'Excel : 2013 FR

Message par Fabianos94 » 29 janvier 2016, 15:11

Jean Eric,

Un immense merci, le document répond parfaitement à mon besoin (même pas besoin de retouche en fait, j'avais mal vu la première fois) !
Apparemment ma source est un peu trop lourde et fait planter Excell mais en la splittant ça marche très bien :)

Encore fois merci, ce doc me sera hyper utile :)

Bonne fin de semaine,
Fab
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message