Sous totaux en VB

Résolu
ab90 Messages postés 13 Statut Membre -  
 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
--
A+ et merci d'avance
Alain

2 réponses

  1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    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
    1. tallix
       
      merci à vous pour cette solution qui m'a rendu un grand service
      0
  2. ab90
     
    merci pour ton aide c'est ok
    A+Alain
    0