Compiler des lignes en colonne

Bonjour,

Je suis débutante en vba et j'aimerai votre aide svp pour la réalisation d'une macro .

Dans une extraction j'ai une arborescence produit avec le montant du CA TTC, la Marge et l'année en colonne.

J'aimerai avec l'aide d'une macro supprimer les doublons de chaque arborescence produit ainsi que les colonnes (CA TTC & Marge& Année) en créant des colonnes CA TTC et Marge ainsi que rajouter colonne T% de marge (avec formule) par année.

J'ai que 2 année à chaque fois.

Je sais pas si c'est clair car c'est pas évident d'expliquer...

Ci-joint le fichier avec l'extraction actuelle (AVANT) et le résultat souhaité (APRES).

En vous remerciant

Mariana

Bonjour,

Voulez-vous vraiment supprimer des lignes? Ou avez-vous juste besoin de les synthétiser quelque part?

Il est possible de synthétiser les données très facilement via un tableau croisé dynamique, je vous joins un exemple, vous avez les ventes pour 2017 et 2018, les totaux des ventes toutes années confondues, la marge sur chaque années, la marge toutes années confondues, vous pouvez également voir par rayon etc...

Voici l'exemple :

Il est possible de faire de nombreuses choses avec, merci de me dire si ça vous convient

Bonjour,

Sub essai()
 Set f = Sheets("bd")
 TblBD = f.Range("A2:H" & f.[A65000].End(xlUp).Row).Value
 Dim TblRes(): ReDim TblRes(1 To UBound(TblBD) / 2, 1 To UBound(TblBD, 2) + 3)
 ligne = 0
 For i = 1 To UBound(TblBD) Step 2
   ligne = ligne + 1
   For k = 1 To 5: TblRes(ligne, k) = TblBD(i, k): Next k
   TblRes(ligne, 6) = TblBD(i + 1, 6):   TblRes(ligne, 7) = TblBD(i, 6)
   TblRes(ligne, 8) = TblBD(i + 1, 7):   TblRes(ligne, 9) = TblBD(i, 7)
   TblRes(ligne, 10) = TblRes(ligne, 8) / TblRes(ligne, 6): TblRes(ligne, 11) = TblRes(ligne, 9) / TblRes(ligne, 7)
 Next i
 Sheets("Resultat").[A2].Resize(ligne, UBound(TblRes, 2)) = TblRes
End Sub

Boisgontier

Bonjour,

Boisgontier

Wahou, bienvenue !!

Bonjour,

Sub essai()
 Set f = Sheets("bd")
 TblBD = f.Range("A2:H" & f.[A65000].End(xlUp).Row).Value
 Dim TblRes(): ReDim TblRes(1 To UBound(TblBD) / 2, 1 To UBound(TblBD, 2) + 3)
 ligne = 0
 For i = 1 To UBound(TblBD) Step 2
   ligne = ligne + 1
   For k = 1 To 5: TblRes(ligne, k) = TblBD(i, k): Next k
   TblRes(ligne, 6) = TblBD(i + 1, 6):   TblRes(ligne, 7) = TblBD(i, 6)
   TblRes(ligne, 8) = TblBD(i + 1, 7):   TblRes(ligne, 9) = TblBD(i, 7)
   TblRes(ligne, 10) = TblRes(ligne, 8) / TblRes(ligne, 6): TblRes(ligne, 11) = TblRes(ligne, 9) / TblRes(ligne, 7)
 Next i
 Sheets("Resultat").[A2].Resize(ligne, UBound(TblRes, 2)) = TblRes
End Sub

Boisgontier

Merci beaucoup!

T'as solution a marché:)

Mariana

Bonjour,

Voulez-vous vraiment supprimer des lignes? Ou avez-vous juste besoin de les synthétiser quelque part?

Il est possible de synthétiser les données très facilement via un tableau croisé dynamique, je vous joins un exemple, vous avez les ventes pour 2017 et 2018, les totaux des ventes toutes années confondues, la marge sur chaque années, la marge toutes années confondues, vous pouvez également voir par rayon etc...

Voici l'exemple :

Copie de Besoin_macro.xlsx

Il est possible de faire de nombreuses choses avec, merci de me dire si ça vous convient

Merci pour ton message!

Effectivement c'est une solution aussi. C'est juste que je volais faire des calcule d'évolution dans le TCD par la suite.

Si la data n'est pas correctement présenté j'ai malheureusement pas la possibilité d’insérer des champs calculé dans le TCD pour faire par exemple CA 2018- CA 2017 et avoir l’évolution du CA

Bonjour,

C'est tout à fait possible de représenter une évolution via un TCD, le seul détail, c'est qu'il y aura 2 TCD, un pour le CA, un pour les marges, et on peut tout à fait faire une évolution

J'ai fait un exemple où cette fois les rayons etc sont des filtres, voici le résultat que j'obtiens pour 2017 et 2018 :

Il est tout à fait possible de représenter ça différement, c'est dynamique

Rechercher des sujets similaires à "compiler lignes colonne"