Autres Sous-total et array

michel1941

XLDnaute Nouveau
Bonjour à tous,

J'ai une partie de code VBA qui fonctionne pour créer les sous-totaux des colonnes 2 à 122.
Est-il possible de simplifier la liste en donnant le limites de celle.çi . Içi 3 et 122.
C'est juste pour simplifier l'écriture, sans changer la formule.
Merci d'avance de votre aide.
 

Pièces jointes

  • Exemple.txt
    675 bytes · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Michel,
Un fichier texte ! Pourquoi pas le fichier XL directement avec une petite explication ?
Si c'est pour faire des sous totaux en passant par du VBA, pourquoi ne pas faire faire au VBA directement les calculs ?
Evidemment cela dépend du contexte, mais souvent c'est faisable facilement.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pas vexé, mais stupéfait.
A tester :
VB:
    Dim Tablo(1 To 120)
    For i = 1 To 120
        Tablo(i) = i + 2
    Next i
et ensuite :
Code:
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(Tablo), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
ou
Code:
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Tablo, Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Pas pu tester hors contexte du fichier.
 

michel1941

XLDnaute Nouveau
Pas vexé, mais stupéfait.
A tester :
VB:
    Dim Tablo(1 To 120)
    For i = 1 To 120
        Tablo(i) = i + 2
    Next i
et ensuite :
Code:
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(Tablo), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
ou
Code:
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Tablo, Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Pas pu tester hors contexte du fichier.
J'ai testé mais l'erreur suivante apparaît à l'exécution
la méthode subtotal de la classe range a échoué.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Comme de toute façon on n'aura aucun fichier test puisqu'à priori "Vous pensiez avoir été clair."
Un dernier essai en PJ pour clore mon intervention.
La macro proposée marche, à vous de mettre au point dans votre contexte.
VB:
Worksheets("Feuil1").Activate
Dim tablo(1 To 9)
For i = 1 To 9: tablo(i) = i: Next i
Range("1:10").Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=tablo, Replace:=True, PageBreaks:=False, SummaryBelowData:=True
20230614_165105.gif
 

Pièces jointes

  • Grouper.xlsm
    18.3 KB · Affichages: 4

michel1941

XLDnaute Nouveau
Comme de toute façon on n'aura aucun fichier test puisqu'à priori "Vous pensiez avoir été clair."
Un dernier essai en PJ pour clore mon intervention.
La macro proposée marche, à vous de mettre au point dans votre contexte.
VB:
Worksheets("Feuil1").Activate
Dim tablo(1 To 9)
For i = 1 To 9: tablo(i) = i: Next i
Range("1:10").Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=tablo, Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Regarde la pièce jointe 1172444
 

Discussions similaires

Statistiques des forums

Discussions
314 629
Messages
2 111 349
Membres
111 110
dernier inscrit
chergui