Sous totaux en VB

Résolu
ab90 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
 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 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

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