XL 2016 Supprimer une ou plusieurs lignes sélectionnées dans un tableau

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 !

badraaliou4

XLDnaute Occasionnel
Bonsoir ici,

Je cherche un code qui me permet de supprimer une ou plusieurs lignes sélectionnées dans un tableau.
le code que j'ai me permet de supprimer uniquement une ligne sélectionnée.
merci pour votre aide..
ci-joint mon ficher.
VB:
Sub SuprimerLigneVente()
If ActiveCell.Row <= 28 Then
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
Else
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        Set lot = ActiveCell.ListObject
        If lot Is Nothing Then Exit Sub
        l = ActiveCell.Row - lot.HeaderRowRange.Row
        lot.ListRows(l).delete
    End If
End If
End Sub
 

Pièces jointes

Re,

Une version v3 qui devrait être plus rapide s'il y a un grand nombre de lignes dans le tableau (on évite les "Intersect(...) qui sont chronophages).

EDIT : la première version v3 déposé ici n'était pas la bonne. Je viens de la remplacer par la bonne
 

Pièces jointes

Dernière édition:
Bonsoir le fil

Si je me base sur le message#1
(et en me basant sur le fichier de mapomme - oui je peux l'ouvrir 😉)
Et puisque que nous sommes en présence d'un ListObject
VB:
Sub SupprimerLignes()
Dim lObj As ListObject
Set lObj = ActiveSheet.ListObjects("Tableau1")
If Not Intersect(ActiveCell, lObj.DataBodyRange) Is Nothing Then
If Selection.Rows.Count > 1 Then
lObj.DataBodyRange.Delete
Else
lObj.ListRows(Selection.Row - 3).Delete
'adapter le -3 selon la disposition du tableau sur la feuille
End If
End If
End Sub
 
Bonsoir @Staple1600,

J'ai l'impression :
  • que ta macro n'efface qu'une seule ligne même si plusieurs cellules sont sélectionnées. Me trompette-je ?
  • qu'elle peut effacer (le cas échéant) une des trois lignes sous la ligne d'en-tête. Ce qui n'est pas désiré par le demandeur
 
Bonsoir mapomme

Comme je l'ai dit, je me suis basé sur le message#1
Je cherche un code qui me permet de supprimer une ou plusieurs lignes sélectionnées dans un tableau.
J'ai testé sur ta PJ (demande à ma poire 😉)
Si je sélectionne une cellule sur une seule ligne
(cette ligne est supprimée)
Si je sélectionne plusieurs lignes, c'est le DataBodyRange qui est supprimé.
Si je suis hors du tableau ou sur la ligne d'entête, le code beugue.

NB: En tout cas, tu remarqueras que 2^8 n'est plus qu'un souvenir 😉
 
Re

Une version moins radicale (et qui masque vilainement l'erreur potentielle)
VB:
Sub EffacerTaBleau_ou_Supprimer_Ligne()
Dim lObj As ListObject
Set lObj = ActiveSheet.ListObjects("Tableau1")
On Error Resume Next
If Not Intersect(ActiveCell, lObj.DataBodyRange) Is Nothing Then
If Selection.Rows.Count > 1 Then
lObj.DataBodyRange.ClearContents
Else
lObj.ListRows(Selection.Row - 3).Delete
'adapter le -3 selon la disposition du tableau sur la feuille
End If
End If
End Sub
 
Re,

=>mapomme
C'était la bonne, non? 😉
Il y avait juste un petit ' de trop
Range(Cells(t(i), col1), Cells(t(i), col2)).Select '.Delete xlShiftUp
NB: Pourquoi tu n'utilises pas la syntaxe VBA qu'offre le ListObject?
(Ce n'est qu'une question, et non point une critique)
 
NB: Pourquoi tu n'utilises pas la syntaxe VBA qu'offre le ListObject?
  • je n'en ai pas besoin
  • ça rajoute du verbiage inutile (selon ma pomme)
  • pour la méthode employée, il faut absolument supprimer les lignes à partir du bas vers le haut, la méthode par numéro de ligne me semble la plus appropriée et surtout la plus simple
  • la méthode sans listobject est aussi adaptée à n'importe quelle plage de cellule même non "structurée" (il doit suffire de nommer cette plage "tableau1")
C'est peut-être rétrograde mais tant pis...

👉 Ça m'intéresserait de savoir comment faire en utilisant les méthodes et propriétés de ListObject.
 
Dernière édition:
Bonsoir mapomme

Virons le verbiage, virons l'inutile
Faisons tabula rasa
On parle ici de lignes sélectionnées, non ?
Alors si elles sont sélectionnées, clic-droit et Supprimer
(Si je sélectionne strictement des cellules du tableau, le menu contextuel offre plus de choix)
Quel est le bénéfice de passer ici par VBA?
On est des bonhommes ou pas ?!?
On supprime les lignes à la main (et sans gants même l'hiver)
 
- 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
5
Affichages
410
Réponses
7
Affichages
518
Retour