XL 2013 Récapitulatif tableaux (objets)

maan

XLDnaute Nouveau
Bonjour et merci d'avance pour votre aide !

J'ai un fichier avec un nombre variable d'onglet et dans chaque onglet j'ai un tableau (sous forme d'objet Excel), je dois créer un nouvel onglet pour afficher le récapitulatif des onglets, le problème c'est pour faire une somme j'utilise SOUS.TOTAL(109;Tableau1[Entete]) mais je pourrais faire un For pour effectuer un recap en incrémentant le nom Tableau mais mes entêtes sont différents pour chaque tableau. Du coup je n'arrive pas à trouver une solution.

N'est-il pas possible de remplacer cet entête dans la formule par l'index de la colonne (A ou bien via son numéro?)

Je vous joins mon fichier pour que vous puissiez mieux comprendre ma situation
Encore merci d'avance !
 

Pièces jointes

  • forum_recap.xlsx
    66.8 KB · Affichages: 39

Iznogood1

XLDnaute Impliqué
Re : Récapitulatif tableaux (objets)

Bonjour,

une petite fonction perso :
Code:
Function Cumul(c As Integer) As Double
  Dim ws As Worksheet
  Dim lo As ListObject
  For Each ws In ThisWorkbook.Worksheets
    For Each lo In ws.ListObjects
      Cumul = Cumul + Intersect(lo.TotalsRowRange, ws.Cells(1, c).EntireColumn)
    Next lo
  Next ws
End Function

qui s'utilise comme suit :
Dans une autre feuille : =Cumul(2) totalise les totaux des deuxièmes colonnes de tous les tableaux, quelque soit leur intitulé
 

maan

XLDnaute Nouveau
Re : Récapitulatif tableaux (objets)

Merci pour ta réponse !

le souci je pense c'est que j'ai dans chaque onglet, une ligne de somme, donc avec ta fonction ça va me prendre la somme de la colonne + la ligne de somme non ?

Est-il possible de faire cela mais juste d'un tableau ? car ce qui m'intéresse c'est d'avoir la somme de la colonne C par exemple du tableau 1, mais avec la fonction SOUS.TOTAL je suis obligé d'utiliser l'entête (sauf que ce ne sont pas les mêmes entre les différents tableaux)

Mon onglet recap ça serait simplement d'afficher la ligne des sommes de tous les tableaux (mais ligne par ligne)
Par exemple, sur la ligne 1, j'ai les sommes des différentes colonnes du tableau 1
Ligne 2, la même chose mais du tableau 2.

Les soucis sont : les entetes fixes, que je ne sais pas combien j'ai de tableaux dans mon fichier (car cela changera)
 

Iznogood1

XLDnaute Impliqué
Re : Récapitulatif tableaux (objets)

Alors c'est encore plus simple :

Function Cumul(feuille As Integer) As Variant
Cumul = ThisWorkbook.Worksheets(feuille).ListObjects(1).TotalsRowRange
End Function

Sélectionne une plage et valide par ctrl+maj+entrée
 

Pièces jointes

  • Copie de forum_recap.xlsm
    74.6 KB · Affichages: 32

maan

XLDnaute Nouveau
Re : Récapitulatif tableaux (objets)

Bonjour,

Voici la solution que j'ai adoptée pour ceux que ça intéresse (mieux vaut tard que jamais ;)


Code:
Sheets(1).Select

WS_Count = ActiveWorkbook.Worksheets.Count
WS_Count = WS_Count - 1
For Y = 1 To WS_Count

Sheets(Y).Select
Sheets(Y).ListObjects("Tableau" & Y).ShowTotals = True
Tableau = "Tableau" & Y
Nom = Sheets(Y).Name
Entete = Range("C1").Value

Sheets("Recap").Select

 

Entete = Split(Entete, "_")(1)

A = A + 1
Range("C" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Lignfac_" + Entete + "_201510])"
Range("D" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201511]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201511])"
Range("E" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201512]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201601])"
Range("F" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201601]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201602])"
Range("G" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201602]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201603])"
Range("H" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201603]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201604])"
Range("I" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201604]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201605])"
Range("J" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201605]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201606])"
Range("K" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201606]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201607])"
Range("L" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201607]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201608])"
Range("M" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201608]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201609])"
Range("N" & A).FormulaR1C1 = _
"=SUBTOTAL(109," + Tableau + "[Hono_" + Entete + "_201609]) + SUBTOTAL(109," + Tableau + "[Nonabo_" + Entete + "_201609])"
Range("O" & A).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"


Range("B" & A).FormulaR1C1 = Nom

Sheets(Y).Select


Next Y
 

Discussions similaires

Réponses
4
Affichages
225

Statistiques des forums

Discussions
312 484
Messages
2 088 796
Membres
103 970
dernier inscrit
pepito59