Sous totaux en VB

Résolu/Fermé
ab90 Messages postés 13 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 18 janvier 2006 - 6 mars 2005 à 18:44
 tallix - 27 févr. 2012 à 16:11
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
A voir également:

2 réponses

Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
7 mars 2005 à 10:35
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 :

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.
0
merci à vous pour cette solution qui m'a rendu un grand service
0
merci pour ton aide c'est ok
A+Alain
0