Dégroupement d'un échantillon

rusty2

XLDnaute Nouveau
Bonjour,

Quelqu'un aurait il la solution à mon besoin : j'ai un tableau de données regroupées, qui en Y comporte 98 références, en X comporte 19 références et pour chaque comporte des quantités (18 935 au total). Je souhaiterai pouvoir tout dégrouper justement (mais n'ai pas le fichier de base) ligne à ligne.

En PJ le fichier concerné, avec en onglet BASE le tableau regoupé et en RESULTAT la forme que je souhaiterai du dégroupage de ce fichier avec un exemple pour illustrer...

Si l'un de vous à une formule magique je prends tout de suite !

Merci par avance

Rusty
 

Pièces jointes

  • Echantillon.xlsx
    19.3 KB · Affichages: 50
  • Echantillon.xlsx
    19.3 KB · Affichages: 55
  • Echantillon.xlsx
    19.3 KB · Affichages: 52

sousou

XLDnaute Barbatruc
Re : Dégroupement d'un échantillon

Bonjour rusty2
Un peu bestiale ma solution, à aménager si l'opération doit être effectuée souvent sur des tableaux différents.
Résultat long pour obtenir le 18000 lignes.
sélection les colonnes des x de 5 à 950 ligne1 et lance la macro deb
 

Pièces jointes

  • deb et fin de semaine.xlsm
    217.8 KB · Affichages: 32

rusty2

XLDnaute Nouveau
Re : Dégroupement d'un échantillon

Bonjour rusty2
Un peu bestiale ma solution, à aménager si l'opération doit être effectuée souvent sur des tableaux différents.
Résultat long pour obtenir le 18000 lignes.
sélection les colonnes des x de 5 à 950 ligne1 et lance la macro deb

Bonjour Sousou,

Oui c'est exactement le résultat que je cherchais, c'est super merci beaucoup !!!!

Par contre en effet, je risque d'avoir besoin de réutiliser cette formule. Lorsque je regarde comment faire pour la reprendre, 1) je ne sais pas ou elle est ? 2) si j'exécute la macro par Exécuter, il ne se passe rien (j'ai ajouté au préalable des nombres dans le tableau d'origine....

Si tu peux m'aider ?

Merci

Rusty
 

mromain

XLDnaute Barbatruc
Re : Dégroupement d'un échantillon

Bonjour Rusty, sousou, le forum,

Une autre proposition ci-dessous à base de Ce lien n'existe plus :
VB:
Sub Degrouper()
Dim zoneBrute As Range, zoneDest As Range, tabBrut() As Variant, tabDest() As Variant
Dim x As Long, y As Long, nbVal As Long, iDest As Long, iVal As Long
    
    'défini ou sont les données sources et où écrire le résultat
     Set zoneBrute = ThisWorkbook.Sheets("BASE").Range("A1:T97")
    Set zoneDest = ThisWorkbook.Sheets("RESULTAT").Range("A4")
    
    
    With zoneBrute
        'compte le nombre de ligne qu'il y aura au total (18935 dans ce cas)
         nbVal = Application.WorksheetFunction.Sum(.Offset(1, 1).Resize(.Rows.Count - 1, .Columns.Count - 1))
        'récupère l'ensemble des données de la zone "A1:T97" dans un tableau
         tabBrut = .Value
    End With
    
    'prépare le tableau résultat (18935 lignes et 2 colonnes)
     ReDim tabDest(1 To nbVal, 1 To 2)
    iDest = 0
    
    'boucle sur chaque y (du 2ème élément du tableau au dernier)
     For y = LBound(tabBrut, 1) + 1 To UBound(tabBrut, 1)
        'boucle sur chaque x (du 2ème élément du tableau au dernier)
         For x = LBound(tabBrut, 2) + 1 To UBound(tabBrut, 2)
            's'il y a de la donnée sur le couple (y, x)
             If tabBrut(y, x) <> Empty Then
                'boucler le nombre de fois
                 For iVal = 1 To tabBrut(y, x)
                    'incrémenter le compteur et écrire y et x dans le tableau résultat
                     iDest = iDest + 1
                    tabDest(iDest, 1) = tabBrut(y, LBound(tabBrut, 2))
                    tabDest(iDest, 2) = tabBrut(LBound(tabBrut, 1), x)
                Next iVal
            End If
        Next x
    Next y
    
    'écrire le tableau résultat sur le classeur
     zoneDest.Resize(nbVal, 2).Value = tabDest
    
End Sub

A+
 

sousou

XLDnaute Barbatruc
Re : Dégroupement d'un échantillon

re
La macro se trouve dans module1 de l'éditeur VB
Pour qu'il se passe quelque chose tu dois sélectionner la première ligne colonnes b à t dans le cas présent.
C'est à dire la première ligne de toutes les colonnes de ton tableau
Si tu veux réutiliser cette macro dans un autre classeur copie la dans ce classeur .
Mais tout cela peut être modifié, il faut voir tes tableaux
 

rusty2

XLDnaute Nouveau
Re : Dégroupement d'un échantillon

Bonjour

Alors merci du tuyau, que j'ai testé, c'est effectivement super simple et cela me servira surement...Mais, ce n'est pas tout à fait ce que je voulais, dans la mesure et souhaitait dégrouper justement les quantités par entrée. Dans l'exemple "Janvier / 1 =4 c'est ces 4 que je voulais justement dégrouper : exemple Janvier / 1 =1 en dessous Janvier /1 = 1 et cela 4 fois...

En tout cas merci du tuyau

Rusty
 

Discussions similaires

Réponses
15
Affichages
642

Statistiques des forums

Discussions
312 779
Messages
2 092 045
Membres
105 167
dernier inscrit
JulJon2004