VBA : Suppressions lignes d'une sélection multiple listbox

Mgn_91

XLDnaute Nouveau
Bonjour à tous,

Je débute en VBA et me retrouve bloqué sur un formulaire.

J'ai construit un formulaire contenant :
1) une ComboBox contenant une liste de formations
2) une ListBox référençant tous les doublons des formations en fonction de la sélection faite dans la ComboBox
Dans cette ListBox, la sélection multiple de formation est possible (frmMultiSelectMulti)

Et je souhaite supprimer les lignes sélectionnées dans la listbox grâce à un bouton "supprimer".

Cela fait plusieurs jours que je bloque sur ce dernier point.

Quelqu'un aurait-il une solution à mon problème ?

Merci d'avance !
 

Pièces jointes

  • Test.xlsm
    37.6 KB · Affichages: 88
  • Test.xlsm
    37.6 KB · Affichages: 63

Papou-net

XLDnaute Barbatruc
Re : VBA : Suppressions lignes d'une sélection multiple listbox

Bonjour Mgn_91, et bienvenue sur XLD,

Voici le code à écrire danss ton bouton Supprimer:

Code:
Private Sub B_supp_Click()
For ind = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(ind) = True Then
    Feuil2.Rows(CInt(ListBox1.List(ind, 4))).EntireRow.Delete
  End If
Next
End Sub
Bonne journée.

Cordialement.
 

Mgn_91

XLDnaute Nouveau
Re : VBA : Suppressions lignes d'une sélection multiple listbox

Merci Papou-net pour ce retour rapide et efficace !

Le code fonctionne parfaitement lorsque je sélectionne une ligne à supprimer.

En revanche lorsque je sélectionne plusieurs lignes dans la Listbox et lance la macro pour supprimer ces lignes dans la feuille "Planning" cela supprime une seule ligne et non toute la sélection faite dans la Listbox.

Encore un grand merci pour cette réponse rapide !
 

Paf

XLDnaute Barbatruc
Re : VBA : Suppressions lignes d'une sélection multiple listbox

Bonjour Mgn_91, Papou-net,

Une autre version, qui supprime depuis la fin vers le début, pour éviter le décalage de ligne en cas de sélection multiple.

Code:
Private Sub B_supp_Click()
    For i = ListBox1.ListCount - 1 To 0 Step -1
        If ListBox1.Selected(i) = True Then
            f.Rows(ListBox1.List(i, 4)).Delete
        End If
    Next i
    listeExistants 'rafraichir listbox1
End Sub

A+
 

Papou-net

XLDnaute Barbatruc
Re : VBA : Suppressions lignes d'une sélection multiple listbox

RE

Bonjour Paf,

Et paf, tu as raison. J'oublie souvent de traiter les lignes par le bas en cas de suppression.

Alors, pour le fun, voici ma version corrigée par sélection des lignes et suppression en fin de macro:

Code:
Private Sub B_supp_Click()
Dim Plage As Range
For ind = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(ind) = True Then
    If Plage Is Nothing Then
      Set Plage = Feuil2.Rows(CInt(ListBox1.List(ind, 4))).EntireRow
      Else
      Set Plage = Application.Union(Plage, Feuil2.Rows(CInt(ListBox1.List(ind, 4))).EntireRow)
    End If
  End If
Next
For i = 1 To Plage.Rows.Count
  Plage.Rows(i).EntireRow.Delete
Next
End Sub
C'est un peu plus long comme code mais ça fonctionne.

A +

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972