USF: slection d'une ligne dans Listbox pour suppression

  • Initiateur de la discussion Initiateur de la discussion Jean P.
  • Date de début Date de début

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 !

J

Jean P.

Guest
Bonjour à tous

Grâce à l'aide des gens du forum j'ai appris plusieurs choses mais j'ai encore une fois besoin de votre aide.


Situation:
A) J'utilise Windows XP Professionnel
B) J'utilise Excel 2003 SP1
C) J'ai un classeur qui contient 5 feuilles.
D) J'ai fais un USF avec un ListBox qui me permet de visualiser les données d'un tableau (Feuille 5)

Question:
Est-il possible de sélectionner une ligne dans le ListBox pour la supprimer (et ce faisant la supprimer aussi dans le tableau de la feuille 5) ?

Voici ce que j'avais trouvé comme code:

Private Sub CommandButton2_Click()
If ListBox1.ListCount >= 1 Then
If ListBox1.ListIndex = -1 Then
ListBox1.ListIndex = ListBox1.ListCount - 1
End If
ListBox1.RemoveItem (ListBox1.ListIndex)
End If
End Sub

Mais cela ne fonctionne pas ...

Je vous remercie pour votre aide et vos commentaires.


Jean P.
 
bonsoir Jean P

la macro ci-dessous permet de supprimer la ligne sélectionnée dans la ListBox


Private Sub CommandButton2_Click()
If ListBox1.ListIndex <> -1 Then ListBox1.RemoveItem ListBox1.ListIndex
End Sub


pour ce qui est de la suppression des données dans la feuille 5 , il faudrait que tu donnes plus d'informations pour t'aider
par exemple si les données sont dans la colonne A (de A1 à Ax ) cela pourrait donner :

Sheets("Feuil5").Cells(ListBox1.ListIndex + 1, 1).Delete Shift:=xlUp

pour info , lors de la selection de la premiere ligne d'une ListBox , ListBox1.ListIndex=0
s'il n'y a aucune selection dans la ListBox , ListBox1.ListIndex= -1


bonne soirée
MichelXld
 
Re-bonjour Michel et aux lecteurs du forum

J'ai regardé ton code pour bien le comprendre.

Le résultat fonctionne bien sauf dans un seul cas (dommage).

Lorsque je choisi un item de la liste et que je clique sur le bouton 2, l'item est supprimé de la ListBox1 et aussi de la Feuille5.

Problème:
Sauf que je lorsque je choisi le dernier item de la liste et que je clique sur le bouton 2, l'item est supprimé de la ListBox1 mais c'est l'item précédent qui est supprimé de la Feuille5.

Code:
Private Sub UserForm_Initialize()
CommandButton1.Caption = "Add Item"
CommandButton2.Caption = "Remove Item"
End Sub

Private Sub CommandButton1_Click()
Dim EntryCount As Single
EntryCount = 0
Dim L As Integer
L = Worksheets("Feuil5").Range("A65536").End(xlUp).Row
For L = 1 To L
EntryCount = EntryCount + 1
ListBox1.AddItem (EntryCount & Range("a" & L))
Next L
End Sub

Private Sub CommandButton2_Click()
Dim L As Integer
Dim EntryCount As Single
EntryCount = 0
If ListBox1.ListIndex <> -1 Then ListBox1.RemoveItem ListBox1.ListIndex
Worksheets("Feuil5").Cells(ListBox1.ListIndex + 1, 1).Delete Shift:=xlUp
ListBox1.Clear
L = Worksheets("Feuil5").Range("A65536").End(xlUp).Row
For L = 1 To L
EntryCount = EntryCount + 1
ListBox1.AddItem (EntryCount & Range("a" & L))
Next L
End Sub


Je vous remercie pour vos commentaires et votre aide.


Jean P.
 
Oups ... désolé

J'ai fais une petite erreur dans la description de mon problème.

Problème:
Sauf que je lorsque je choisi le dernier item de la liste et que je clique sur le bouton 2, c'est l'item précédent (le choix précédent dans la liste) qui est supprimé de la ListBox1 et de la Feuille5.


Désolé ...

Jean P.
 
bonjour Jean P.

tu peux tester cette adaptation


Private Sub CommandButton2_Click()
Dim L As Integer
Dim EntryCount As Integer
Dim NumLigne As Integer

EntryCount = 0
NumLigne = ListBox1.ListIndex
If NumLigne <> -1 Then
ListBox1.RemoveItem NumLigne
Worksheets("Feuil1").Cells(NumLigne + 1, 1).Delete Shift:=xlUp

ListBox1.Clear
L = Worksheets("Feuil5").Range("A65536").End(xlUp).Row

For L = 1 To L
EntryCount = EntryCount + 1
ListBox1.AddItem (EntryCount & Range("a" & L))
Next L

End If

End Sub


bon apres midi
MichelXld
 
Bonjour Michel

C'est parfait, le problème me semble bel et bien règlé.

Si j'ai bien compris tu as ajouté une variable (NumLigne) pour remplacer la valeur de ListBox1.ListIndex.

Mais je ne comprends pas pourquoi cela fonctionne maintenant !!!

Pourquoi le fait remplacer la valeur de ListBox1.ListIndex par la variable NumLigne règle le problème ???

J'aimerais bien comprendre.


Encore une fois merci pour ton aide.


Jean P.
 
Re-bonjour Michel

Encore une question, est-ce possible d'adapter le code pour faire afficher plusieurs colones dans la ListBox tout en conservant la possibilité de supprimer une ligne dans la ListBox et aussi dans la Feuille5.

Je te remercie encore mille fois pour tes commentaires.


Jean P.
 
Rebonjour Jean P.

effectivement j'ai été un peu trop succint dans ma réponse

la ligne dans la ListBox etait supprimée en premier (ListBox1.RemoveItem ListBox1.ListIndex).
comme la reference de la cellule(Cells(ListBox1.ListIndex + 1, 1)) était défini par l'index de la ListBox qui venait de perdre une unité , il y avait un décalage au moment de la suppression .

le fait d'ajouter une variable en début de macro "NumLigne = ListBox1.ListIndex" , permet de "figer" la valeur avant d'effectuer les suppressions


sinon pour ta derniere question :

'initialisation de l'USF en alimentant une listbox milticolonne
Private Sub UserForm_Initialize()
Dim Tableau As Variant

Tableau = Worksheets("Feuil5").Range("A1😀10") 'plage de cellules à inserer
ListBox1.ColumnCount = 4 'nb de colonnes dans la ListBox
ListBox1.List() = Tableau 'insertion dans la ListBox
End Sub

Private Sub CommandButton2_Click()
Dim NumLigne As Integer

NumLigne = ListBox1.ListIndex
If NumLigne <> -1 Then
ListBox1.RemoveItem NumLigne
Worksheets("Feuil5").Range(Cells(NumLigne + 1, 1), Cells(NumLigne + 1, 4)).Delete Shift:=xlUp
'Worksheets("Feuil5").Rows(NumLigne + 1).Delete 'pour supprimer la ligne complete
End If

End Sub



j'espere que j'ai répondu à ta question

bonne soirée
MichelXld
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
533
Réponses
3
Affichages
834
Retour