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

Uniformiser sous tota VBA

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 !

Hoareau

XLDnaute Occasionnel
bonjour

J'essaie d'uniformiser un sous total
A chaque changement de col_concat, rajouter le sous total à NB_2


Trois tableaux qui proviennent d'une boucle
la colonne Nb_1 du 1 er tableau au maximum de 0 à 3
la colonne Nb_1 du 2 ème tableau au maximum de 0 à 4
la colonne Nb_1 du 3 ème tableau au maximum de 0 à 5

Je souhaiterai ramener la colonne NB_1 pour chacun des tableaux de 0 à 5,

avec des valeurs à 0 pour les données manquantes.

Pour résumer, pour chaque valeur de col_cat, il doit y avoir 5 lignes de 0

à 5

Dans la colonne à côté de NB_2, le % que représente chaque valeur par

rapport à son sous total



merci
 

Pièces jointes

Re : Uniformiser sous tota VBA

Re,

Ce qui en VBA donnerait
(code initial issu de l'enregistreur de macros)
VB:
Sub Macro1()
'Macro enregistrée le 24/11/2012 par Staple1600
'version classique et orthodoxe
Range("A2:C23").Subtotal _
                    GroupBy:=1, _
                    Function:=xlCount, _
                    TotalList:=Array(2, 3), _
                    Replace:=True, _
                    PageBreaks:=False, _
                    SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
End Sub
VB:
Sub Macro1b()
'Macro enregistrée le 24/11/2012 par Staple1600
'version "à ma sauce" et hérétique pour certains
'(mais comme j'ai un faible pour l'hérésie.. et ce en tout ;o)
[A2:C23].Subtotal 1, -4112, Array(2, 3), -1, 0, -1: ActiveSheet.Outline.ShowLevels 2
End Sub

EDITION: ->Hoareau:
Après mon premier café et relecture de ta question, je crois ne pas avoir bien compris celle-ci, n'est-ce pas ? 😛
 
Dernière édition:
Re : Uniformiser sous tota VBA

Merci pour la réponse, mais l'enregistreur ne peur rien dans ce cas,

puisqu'il faut insérer des lignes.

J'avais pensé à quelque chose de ce style

le fichier joint, donne une explication plus complète



Sub test()

Set B = [B2:B25]
i = 2
Do While Cells(i, 2).Row < B.Rows.Count

If Cells(i, 2) < 5 Then



'Je défini toute la plage en dessous de la cellule active
Set Transfert = Range(Cells(i, 2).Offset(0, -1), Cells(i, 2).Offset(0,

1).End(xlDown))
'Je copie la plage transfert, une cellule en dessous
Transfert.Copy Destination:=Cells(i, 2).Offset(-1, -1)

'J'ajoute 1, à la cellule active, par rapport à la cellule juste en dessus
Cells(i, 2) = Cells(i, 2).Offset(-1, 0) + 1



End If


i = i + 1
Loop

End Sub
 

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

Réponses
22
Affichages
2 K
Réponses
0
Affichages
887
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…