XL 2010 Créer ListObject + Ligne Total

cathodique

XLDnaute Barbatruc
Bonjour,

Je transforme une plage en tableau structuré en utilisant le bout de code ci-dessous.
Mais je rencontre une difficulté (en fait 2):
1- Pourquoi lors de l'activation de la ligne 'Totals', le mot 'Total' ne s'affiche pas en 1ère colonne
2- Aucun résultat ne s'affiche dans la ligne total
VB:
With ShBilan
' Définir la plage pour le ListObject
      Set Rng = .Range("A" & dl + 1).Resize(UBound(Tall), UBound(Tall, 2))
      ' Créer le ListObject
      .ListObjects.Add(xlSrcRange, Rng, , xlYes).Name = "Tall"
      .ListObjects("Tall").TableStyle = "TableStyleLight16"
      .ListObjects("Tall").ShowAutoFilter = False
      ' Activer la ligne Totaux
      .ListObjects("Tall").ShowTotals = True
      ' Ajouter des formules de somme dans la ligne Totaux pour chaque colonne
      For i = 2 To .ListObjects("Tall").ListColumns.Count
         .ListObjects("Tall").ListColumns(i).TotalsCalculation = xlTotalsSum
      Next i
End With

En vous remerciant par avance.

Bon week-end.
 
Solution
Ah oui dans ton fichier il y a des apostrophes dans les titres, il faut les doubler :
VB:
      With .ListObjects("Tall").Range
         For i = 2 To .Columns.Count
            .Cells(.Rows.Count, i) = "=SUBTOTAL(109," & "[" & Replace(.Cells(1, i), "'", "''") & "])"
         Next i
      End With

patricktoulon

XLDnaute Barbatruc
Bonjour toofatboy
sauf si cathodique veux le total entre partout c'est pas bon
demo1.gif



avec la mienne

demo1.gif

on peut même faire encore plus simple
VB:
Sub MonTbS()
    With ShBilan
        ' Définir la plage pour le ListObject
        Set Rng = .Range("A3:J6")
        ' Créer le ListObject
        .ListObjects.Add(xlSrcRange, Rng, , xlYes).Name = "Tall"
        .ListObjects("Tall").TableStyle = "TableStyleLight16"
        .ListObjects("Tall").ShowAutoFilter = False
        ' Activer la ligne Totaux
        .ListObjects("Tall").ShowTotals = True

        'Ajouter des formules de somme dans la ligne Totaux pour chaque colonne
        Range("Tall[[#Totals],[Entrée]:[Décès]]").FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
    End With

End Sub
et si on devait faire du genrique (pas de noms connus)
Code:
Sub MonTbS()
    With ShBilan
        ' Définir la plage pour le ListObject
        Set Rng = .Range("A3:J6")
        ' Créer le ListObject
        .ListObjects.Add(xlSrcRange, Rng, , xlYes).Name = "Tall"
        .ListObjects("Tall").TableStyle = "TableStyleLight16"
        .ListObjects("Tall").ShowAutoFilter = False
        ' Activer la ligne Totaux
        .ListObjects("Tall").ShowTotals = True

        With Range("Tall[#all]")
            nom1 = .Cells(1, 2)
            nom2 = .Cells(1, .Columns.Count)
            nbrows = .Rows.Count - 2
        End With

        'Ajouter des formules de somme dans la ligne Totaux pour chaque colonne
        Range("Tall[[#Totals],[" & nom1 & "]:[" & nom2 & "]]").FormulaR1C1 = "=SUM(R[-" & nbrows & "]C:R[-1]C)"
    End With

l'explication est simple
tu met la même formule en r1c1 dans toute les cellule de la ligne total puisque qu'elle est valable pour toute les cellule

ou bien tu prends ce qu'il te faut au départ
VB:
Sub MonTbS()
   Dim Nom1, Nom2, Nbrows&
   With ShBilan
        ' Définir la plage pour le ListObject
        Set Rng = .Range("A3:J6")
          Nom1 = Rng.Cells(1, 2)
            Nom2 = Rng.Cells(1, Rng.Columns.Count)
            Nbrows = Rng.Rows.Count
         ' Créer le ListObject
        .ListObjects.Add(xlSrcRange, Rng, , xlYes).Name = "Tall"
        .ListObjects("Tall").TableStyle = "TableStyleLight16"
        .ListObjects("Tall").ShowAutoFilter = False
        ' Activer la ligne Totaux
        .ListObjects("Tall").ShowTotals = True
     
        'Ajouter des formules de somme dans la ligne Totaux pour chaque colonne
        Range("Tall[[#Totals],[" & Nom1 & "]:[" & Nom2 & "]]").FormulaR1C1 = "=SUM(R[-" & Nbrows & "]C:R[-1]C)"
    End With

End Sub
 

Pièces jointes

  • ajoute la ligne total V patricktoulon.xlsm
    18.7 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 678
dernier inscrit
arno12345678