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

Microsoft 365 Commande VBA pour supprimer plusieurs lignes d'un tableau structuré

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BenHarber

XLDnaute Occasionnel
Bonjour Le Forum,
Une petite demande (de confirmation) SVP.

Je souhaite supprimer par macro les lignes 16 à 19 d'un tableau structuré "Tableau1".
La seule solution que j'ai trouvée est de boucler à l'envers sur les lignes à supprimer de mon TS du type :
For i = 19 to 16 Step -1
Feuil1.ListObjects("Tableau1").ListRows(i).Delete
Next i

Et a priori, je NE PEUX PAS exécuter cette commande en une seule ligne (du type "Feuil1.ListObjects("Tableau1").ListRows("16:19").Delete).

Vous confirmez ? 🤔

Merci d'avance pour vos retours...
 
bonjour

essaie en passant par le resize
Feuil1.ListObjects("Tableau1").ListRows(16).range.resize(4).Delete
Bonjour @vgendron ,
Merci pour ta réponse.
Tu as raison : il faut bien passer par la commande "Resize". 👍🏻
J'ai simplement ajusté la ligne de départ (je suppose qu'il ne faut pas compter l'entête de mon TS donc partir de la 15è ligne (données)).
Ce qui donne : Feuil1.ListObjects("Tableau1").ListRows(15).Range.Resize(4).Delete

Merci beaucoup : je vais conserver cette astuce dans ma musette !
 
Dernière édition:
Re,

Une procédure générique : LstoSupprLigne TS , NumLigDeb , NumLigFin
qui, je pense, effectue toutes les vérifications nécessaires et qui permet de supprimer par exemple :

les lignes entre 16 et 19LstoSupprLigne Sheets("Feuil1").ListObjects("Tableau1"), 16, 19
les lignes depuis la 1ère jusqu'à 19LstoSupprLigne Sheets("Feuil1").ListObjects("Tableau1"), , 19
les lignes depuis 16 jusqu'à la dernière ligneLstoSupprLigne Sheets("Feuil1").ListObjects("Tableau1"), 16
toutes les lignesLstoSupprLigne Sheets("Feuil1").ListObjects("Tableau1")

nota 1 : TS est le tableau structuré, NumLigDeb est la ligne de début, NumLigFin est la ligne de fin. Dans certains cas, NumLigDeb et/ou NumLigDeb peuvent être omis.

nota 2 : les lignes sont comptées à partir de la première ligne des données


Le code à mettre dans un module ordinaire :
VB:
Sub LstoSupprLigne(TS As ListObject, Optional NumLigDeb& = 1, Optional NumLigFin& = 999999999)
Dim n&
   If TS.ListRows.Count = 0 Then Exit Sub
   If NumLigDeb > NumLigFin Then n = NumLigDeb: NumLigDeb = NumLigFin: NumLigFin = n
   If NumLigDeb < 1 Then NumLigDeb = 1
   If NumLigDeb > TS.ListRows.Count Then Exit Sub
   If NumLigFin > TS.ListRows.Count Then NumLigFin = TS.ListRows.Count
   TS.DataBodyRange.Rows(NumLigDeb & ":" & NumLigFin).Delete
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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