Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 
Réactions: cp4

michel1941

XLDnaute Nouveau
Je pensais avoir été clair. Remplacer l'énumération des 120 colonnes avec quelque chose comme (3 to 122) dans mon exemple. Je ne veux rien changer d'autre dans ce qui fonctionne, juste simplifier l'écriture.
 

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
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
 

Pièces jointes

  • Grouper.xlsm
    18.3 KB · Affichages: 4

michel1941

XLDnaute Nouveau
 

Discussions similaires

Réponses
6
Affichages
373
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…