Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer des Item dans une listbox a choix multiple

3 réponses
Avatar
Bob
Bonjour à toutes et tous,

J'affiche un userform avec une listbox multiselect, et un bouton supprimer
Cette listbox a comme rowsource une plage d'une feuille de calcul.
Je selectionne un item dans la liste, je clique sur supprimer et ma macro va
supprimer la bonne ligne sur ma feuille de calcul. Ca fonctionne bien.

Mon Pb est le suivant :

Je ne peut pas supprimer plusieurs Items à la fois, car dés que le premier
Item est supprimé ma listebox raffraichit et les autres sélections
disparaissent.

Je vous met le code ci-dessous.

Private Sub Btn_Sup_Click()
Dim i As Integer
Dim sht As Worksheet
Application.ScreenUpdating = False
'--------------->Je fais une sélection multiple.
Sheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN",
"JUILLET", "AOUT", _
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")).Select
'-------------->Le classeur janvier est actif
Sheets("JANVIER").Activate
i = 0
'------------->Avec ma listbox
With Me.lstbx_agt
'------------->Pour chaque Item de ma listbox jusqu'au nombre total d'item
je test si l'item est sélectionné. Si oui j'efface sinon suivant
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Rows(i + 10 & ":" & i + 10).Select
'MsgBox (i)
Selection.Delete Shift:=xlUp
i = -1
End If
Next i
End With
Application.ScreenUpdating = True

End Sub

Cordialement

3 réponses

Avatar
Youky
Bonsoir, essaie ceci qui fait un tablo en 1ere boucle ensuite en 2eme
boucle on supprime
Youky

Dim lig(1000) As Boolean
For i = 0 To .ListCount - 1
If .Selected(i) = True Then lig(k + 1) = True
Next i
For i = .ListCount To 1 Step -1
If lig(i) = True Then Rows(i + 10).Delete
Next
End With

"Bob" a écrit dans le message de news:

Bonjour à toutes et tous,

J'affiche un userform avec une listbox multiselect, et un bouton supprimer
Cette listbox a comme rowsource une plage d'une feuille de calcul.
Je selectionne un item dans la liste, je clique sur supprimer et ma macro
va supprimer la bonne ligne sur ma feuille de calcul. Ca fonctionne bien.

Mon Pb est le suivant :

Je ne peut pas supprimer plusieurs Items à la fois, car dés que le premier
Item est supprimé ma listebox raffraichit et les autres sélections
disparaissent.

Je vous met le code ci-dessous.

Private Sub Btn_Sup_Click()
Dim i As Integer
Dim sht As Worksheet
Application.ScreenUpdating = False
'--------------->Je fais une sélection multiple.
Sheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN",
"JUILLET", "AOUT", _
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE",
"DECEMBRE")).Select
'-------------->Le classeur janvier est actif
Sheets("JANVIER").Activate
i = 0
'------------->Avec ma listbox
With Me.lstbx_agt
'------------->Pour chaque Item de ma listbox jusqu'au nombre total d'item
je test si l'item est sélectionné. Si oui j'efface sinon suivant
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Rows(i + 10 & ":" & i + 10).Select
'MsgBox (i)
Selection.Delete Shift:=xlUp
i = -1
End If
Next i
End With
Application.ScreenUpdating = True

End Sub

Cordialement



Avatar
Youky
Rectif........(message précédant)
Dim lig(1000) As Boolean
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then lig(i + 1) = True
Next i
For i = .ListCount To 1 Step -1
If lig(i) = True Then Rows(i).Delete
Next
.ListFillRange = "A1:A" & [A65536].End(3).Row' selon la page et la colonne
End With
"Youky" a écrit dans le message de news:

Bonsoir, essaie ceci qui fait un tablo en 1ere boucle ensuite en 2eme
boucle on supprime
Youky

Dim lig(1000) As Boolean
For i = 0 To .ListCount - 1
If .Selected(i) = True Then lig(k + 1) = True
Next i
For i = .ListCount To 1 Step -1
If lig(i) = True Then Rows(i + 10).Delete
Next
End With

"Bob" a écrit dans le message de news:

Bonjour à toutes et tous,

J'affiche un userform avec une listbox multiselect, et un bouton
supprimer
Cette listbox a comme rowsource une plage d'une feuille de calcul.
Je selectionne un item dans la liste, je clique sur supprimer et ma macro
va supprimer la bonne ligne sur ma feuille de calcul. Ca fonctionne bien.

Mon Pb est le suivant :

Je ne peut pas supprimer plusieurs Items à la fois, car dés que le
premier Item est supprimé ma listebox raffraichit et les autres
sélections disparaissent.

Je vous met le code ci-dessous.

Private Sub Btn_Sup_Click()
Dim i As Integer
Dim sht As Worksheet
Application.ScreenUpdating = False
'--------------->Je fais une sélection multiple.
Sheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN",
"JUILLET", "AOUT", _
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE",
"DECEMBRE")).Select
'-------------->Le classeur janvier est actif
Sheets("JANVIER").Activate
i = 0
'------------->Avec ma listbox
With Me.lstbx_agt
'------------->Pour chaque Item de ma listbox jusqu'au nombre total
d'item je test si l'item est sélectionné. Si oui j'efface sinon suivant
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Rows(i + 10 & ":" & i + 10).Select
'MsgBox (i)
Selection.Delete Shift:=xlUp
i = -1
End If
Next i
End With
Application.ScreenUpdating = True

End Sub

Cordialement







Avatar
Bob
Merci pour le tuyau, avec quelques modifs ça marche du tonnerre.
"Bob" a écrit dans le message de news:

Bonjour à toutes et tous,

J'affiche un userform avec une listbox multiselect, et un bouton supprimer
Cette listbox a comme rowsource une plage d'une feuille de calcul.
Je selectionne un item dans la liste, je clique sur supprimer et ma macro
va supprimer la bonne ligne sur ma feuille de calcul. Ca fonctionne bien.

Mon Pb est le suivant :

Je ne peut pas supprimer plusieurs Items à la fois, car dés que le premier
Item est supprimé ma listebox raffraichit et les autres sélections
disparaissent.

Je vous met le code ci-dessous.

Private Sub Btn_Sup_Click()
Dim i As Integer
Dim sht As Worksheet
Application.ScreenUpdating = False
'--------------->Je fais une sélection multiple.
Sheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN",
"JUILLET", "AOUT", _
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE",
"DECEMBRE")).Select
'-------------->Le classeur janvier est actif
Sheets("JANVIER").Activate
i = 0
'------------->Avec ma listbox
With Me.lstbx_agt
'------------->Pour chaque Item de ma listbox jusqu'au nombre total d'item
je test si l'item est sélectionné. Si oui j'efface sinon suivant
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Rows(i + 10 & ":" & i + 10).Select
'MsgBox (i)
Selection.Delete Shift:=xlUp
i = -1
End If
Next i
End With
Application.ScreenUpdating = True

End Sub

Cordialement