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

XL 2013 Supprimer toutes les lignes tableau au dessous du total général

Chrystel01

XLDnaute Occasionnel
Bonjour,

J'utilise un modèle tableau alimenté par macro avec des enregistrements.
Les données de cette zone tableau sont effacées au départ puis la zone est alimentée par des nouveaux enregistrements.
La zone est donc flexible avec plus ou moins de lignes
Le format tableau va s'étendre si on a de nouveaux enregistrements mais il ne s'efface pas quand j'ai moins de lignes.
Je cherche comment adapter le format tableau sur les seules lignes alimentées par les données.
Une option pourrait être de supprimer les lignes au dessous du total général mais j'ai du mal à faire le code VBA.
Pourriez-vous m'aider svp ?
Merci d'avance

Chrystel
 

Pièces jointes

  • Doc1.xlsx
    9.7 KB · Affichages: 8

Staple1600

XLDnaute Barbatruc
Bonjour

Une façon de faire
VB:
Sub Supprimer_Lignes_Tableau()
With Application
.ScreenUpdating = False
Cells(2, 1).Resize(CLng(.Match("Total général", Columns(1), 0)) - 2).EntireRow.Delete
End With
End Sub
 

Chrystel01

XLDnaute Occasionnel
Merci pour vos réponses. C'est toujours aussi rapide Désolée du retard de réponse, je n'avais pas reçu de notification.
Merci Staple 1600 pour toutes tes propositions. Elles me seront utiles dans d'autres situations car ce que je cherche dans le cas présent, c'est à supprimer les lignes sous le total et pas au-dessus.
Je vais reprendre la poposition de Shinozak.
Bonne journée
 

Staple1600

XLDnaute Barbatruc
Re

Puisque tu utilises un Tableau (au sens de Tableau Excel)
Tu peux aussi cocher ceci: Ligne des totaux
En VBA, cela donne:
VB:
Sub Affiche_Totaux()
ActiveSheet.ListObjects("Tableau1").ShowTotals = True
End Sub
Ce qui simplifie les choses, non ?
 

Staple1600

XLDnaute Barbatruc
Re

Et donc pour effacer les lignes en dessous d'un Tableau
(avec l"option: Lignes des totaux cochée)
VB:
Sub Suppr_Lignes_LO()
Dim Dl&, xL As Range, LIGNES_A_EFFACER As Range
'ici le tableau s'appelle Tableau1 -< adapter si besoin
Set xL = ActiveSheet.ListObjects("Tableau1").TotalsRowRange
Dl = Cells(Rows.Count, 1).End(3).Row
If xL.Row = Dl Then
Set LIGNES_A_EFFACER = Range(xL.Offset(1), xL.Offset(1).End(xlDown))
Else
Set LIGNES_A_EFFACER = Range(xL.Offset(1), Cells(Rows.Count, 1).End(3))
End If
''NB: le tableau commence en colonne A
LIGNES_A_EFFACER.EntireRow.Clear
End Sub
 

Discussions similaires

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