XL 2016 Suppressions de lignes à partir d'une sélection listbox

Niko71

XLDnaute Nouveau
Bonjour cher forum :) ,

J'ai fait plus bas une petite macro qui me permet de supprimer des lignes d'un tableau (et plus par la suite) en fonction de mes sélections dans la listbox de mon formulaire. Seulement, quand je sélectionne tout dans ma listbox, seulement la dernière ligne est prise en compte.

Pouvez-vous me dire ce qui cloche?
VB:
Private Sub bouSupprimer_Click()
Dim Ligne As Byte

    For i = 0 To lbPrenom.ListCount - 1
        If lbPrenom.Selected(i) = True Then
        Sheets("Inscriptions").Activate
        Range("Cell_Inscriptions").Select
        Ligne = Application.WorksheetFunction.Match(lbPrenom.List(i), Range("L_Prenoms"), 0)
        Selection.ListObject.ListRows(Ligne).Delete
     
     
        End If
    Next i
   
    Unload Me
End Sub

Merci beaucoup !

Ps: mon code fonctionne très bien si je ne souhaite supprimer qu'une ligne.
 

frangy

XLDnaute Occasionnel
Bonsoir,

Une idée en passant ...
Si la ListBox est remplie avec une plage spécifiée par la propriété RowSource, et que la suppression de ligne s’applique sur cette même plage, la sélection sera effacée dès la première modification de la plage.

Cordialement.
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
réfléchi un peu
tu sélectionne x lignes dans ta listbox et tu boucle de 0 a listcount-1
quand tu va tomber sur la première occurrence ca va la supprimer
et donc tout le reste dans le sheets va (je te le donne dans le mille REMONTER) si bien que des la 1ere suppression les index de ligne sheets et listbox ne correspondent plus

si tu bouclait à l'envers a savoir de listcount-1 to 0 pour voir ;)
a savoir aussi que l'indexation sur sheets commence a 1 et dans listbox c'est zero

donc ta ligne sur sheets c'est talistbox.listindex+1

et pour finir tu a nullement besoin de matcher

en gros ca devrait ressembler tout simplement a ca
VB:
for i= malistbox.liscount-1 to 0
if malistbox.selected(i) then  range("montableau").ListObject.ListRows(i+1).Delete
next

;)
 
Dernière édition:

Niko71

XLDnaute Nouveau
Mince...

En fait je n'y arrive toujours pas. Cela ne fonctionne que si j'ai un seul objet dans ma liste, sinon mon code n'a aucun effet, il ne me supprime même pas une ligne...
Je crois que je commence à me perdre, il va falloir que je retourne voir des tuto listobject :rolleyes:

Je mets mon doc en pièce jointe si un courageux peut y jeter un œil.

Merci!
 

Pièces jointes

  • Version.xlsm
    212.8 KB · Affichages: 13

frangy

XLDnaute Occasionnel
Bonjour,

Ton fichier en retour …
J’ai déplacé les tableaux en bas de feuille Tdb dans une nouvelle feuille (Feuil1) car la suppression de ligne dans le Tableau10 (L_Prenoms_Tdb) provoquait un décalage dans ces tableaux et engendrait une erreur. Par contre, je n’ai pas regardé l’incidence de ce déplacement dans le reste du projet.

Cordialement.
 

Pièces jointes

  • Version.xlsm
    209.4 KB · Affichages: 38

Discussions similaires