Sous totaux en VB
Résolu
ab90
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
tallix -
tallix -
Bonjour
je suis en train de travailler pour faire des sous totaux dans une applications sous VB
mon ^problème, j'utilise la syntaxe ci desoous qui marche bien quand le nombre de colonne reste fixe, cependant comme toujours le nbr de colonne peut être différents entre deux exécutions
quelles solutions pouvez vous me proposer
Sub Macro1()
Rows("4:10").Select
'Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4, 5, 6, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, _
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, _
60, 61, 62, 63, 64), Replace:=True, PageBreaks:=True, SummaryBelowData:=True
end sub
je suis en train de travailler pour faire des sous totaux dans une applications sous VB
mon ^problème, j'utilise la syntaxe ci desoous qui marche bien quand le nombre de colonne reste fixe, cependant comme toujours le nbr de colonne peut être différents entre deux exécutions
quelles solutions pouvez vous me proposer
Sub Macro1()
Rows("4:10").Select
'Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4, 5, 6, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, _
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, _
60, 61, 62, 63, 64), Replace:=True, PageBreaks:=True, SummaryBelowData:=True
end sub
A voir également:
- Sous totaux en VB
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Vb express - Télécharger - Langages
2 réponses
Bonjour ab90,
Je te propose la solution ci-dessous. Adapte-la à ton cas précis.
Elle suppose que ta zone de données ne comporte aucune ligne ou colonne entièrement vide.
Ma feuille de test comporte une ligne d'entête de colonnes.
J'ai supposé, comme j'ai cru le voir chez toi, que les sous-totaux ne commencent qu'à partir de la colonne 3.
Dans la commande TotalListe, je remplace Array(...) par un tableau défini sans dimension par Dim en début de procédure.
Ensuite, après avoir calculé le nombre de colonnes, je lui donne sa dimension définitive avec Redim.
Mettre en début de module "Option Base 1".
Voici le code :
En espérant que ça réponde à ton PB.
Armojax.
Je te propose la solution ci-dessous. Adapte-la à ton cas précis.
Elle suppose que ta zone de données ne comporte aucune ligne ou colonne entièrement vide.
Ma feuille de test comporte une ligne d'entête de colonnes.
J'ai supposé, comme j'ai cru le voir chez toi, que les sous-totaux ne commencent qu'à partir de la colonne 3.
Dans la commande TotalListe, je remplace Array(...) par un tableau défini sans dimension par Dim en début de procédure.
Ensuite, après avoir calculé le nombre de colonnes, je lui donne sa dimension définitive avec Redim.
Mettre en début de module "Option Base 1".
Voici le code :
Option Base 1 Sub SousTotaux() Dim I As Integer Dim NbLig As Integer Dim NbCol As Integer Dim Tablo() As Variant Worksheet("Nom-de-ta-feuille").Activate NbLig = Cells(1, 1).CurrentRegion.Rows.Count NbCol = Cells(1, 1).CurrentRegion.Columns.Count ReDim Tablo(NbCol - 2) For I = 1 To NbCol - 2 Tablo(I) = I + 2 Next Range(Cells(1, 1), Cells(NbLig, 1)).EntireRow.Select Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Tablo _ , Replace:=True, PageBreaks:=False, SummaryBelowData:=True End Sub
En espérant que ça réponde à ton PB.
Armojax.
tallix
merci à vous pour cette solution qui m'a rendu un grand service