OVH Cloud OVH Cloud

USF : problème de suppression du dernier item dans un ListBox

3 réponses
Avatar
jean plante
Bonjour

J'ai fais un USF dans lequel j'ai un ListBox1, un CommandButton1 pour
ajouter les items dans la ListBox1, un CommandButton2 pour supprimer un
items dans la ListBox1. Les données de la ListBox1 sont dans la Feuille5 de
mon classeur.

Tout va bien, lorsque je choisi un item de la liste et que je clique sur le
CommandButton2, 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 CommandButton2, 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 au lieu du dernier
!!! ???

Je vous remercie pour vos commentaires et votre aide.

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

3 réponses

Avatar
PMO
Bonjour,

Au lieu d'écrire
Worksheets("Feuil5").Cells(ListBox1.ListIndex + 1, 1).Delete Shift:=xlUp

écrivez
Dim i&
i& = ListBox1.ListIndex + 1
If i& = 0 Then i& = 1
Worksheets("Feuil5").Cells(i&, 1).Delete Shift:=xlUp

Est-ce mieux ?

PMO
Patrick Morange





Bonjour

J'ai fais un USF dans lequel j'ai un ListBox1, un CommandButton1 pour
ajouter les items dans la ListBox1, un CommandButton2 pour supprimer un
items dans la ListBox1. Les données de la ListBox1 sont dans la Feuille5 de
mon classeur.

Tout va bien, lorsque je choisi un item de la liste et que je clique sur le
CommandButton2, 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 CommandButton2, 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 au lieu du dernier
!!! ???

Je vous remercie pour vos commentaires et votre aide.

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





Avatar
jean plante
Bonjour,

Malheureusement non, le problème st encore présent, mais j'ai reçue une
autre solution.

La voici:

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("Feuil5").Cells(NumLigne + 1, 1).EntireRow.Delete
Shift:=xlUp
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

Il s'agit de l'ajout d'une variable (NumLigne) pour remplacer la valeur de
la ListBox1.ListIndex

Mais j'ai encore une question, est-ce possible de faire la même chose avec
une ListBox ayant plusieurs colones ?

Je te remercie pour tes commentaires.

Jean


"PMO" a écrit dans le message de
news:
Bonjour,

Au lieu d'écrire
Worksheets("Feuil5").Cells(ListBox1.ListIndex + 1, 1).Delete Shift:=xlUp

écrivez
Dim i&
i& = ListBox1.ListIndex + 1
If i& = 0 Then i& = 1
Worksheets("Feuil5").Cells(i&, 1).Delete Shift:=xlUp

Est-ce mieux ?

PMO
Patrick Morange





Bonjour

J'ai fais un USF dans lequel j'ai un ListBox1, un CommandButton1 pour
ajouter les items dans la ListBox1, un CommandButton2 pour supprimer un
items dans la ListBox1. Les données de la ListBox1 sont dans la
Feuille5 de


mon classeur.

Tout va bien, lorsque je choisi un item de la liste et que je clique sur
le


CommandButton2, 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 CommandButton2, 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 au lieu du
dernier


!!! ???

Je vous remercie pour vos commentaires et votre aide.

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







Avatar
michdenis
Bonjour Jean,

Essaie ceci, tu places tout le code dans ton module formulaire :

'Dans le haut de ton formulaire, déclaration d'une variable Public
Public Rg As Range

EffacerUnItem = Nom d'un bouton de commande du formulaire
'---------------------------------
Private Sub EffacerUnItem_Click()

With Me.ComboBox1
Rg.Rows(.ListIndex + 1).Delete (xlUp)
End With
RemplirCombobox
End Sub
'---------------------------------


à l'ouverture de ton formulaire :
'---------------------------------
Private Sub UserForm_Initialize()

Me.ComboBox1.ColumnCount = 3
Me.ComboBox1.BoundColumn = 1
Me.ComboBox1.ColumnWidths = "30 pt;30 pt;30 pt"
RemplirCombobox

End Sub
'----------------------------------------


'Procédure pour initialer ton formulaire,
'Tu dois adapter le nom de la feuille, ainsi que
'la plage de cellules selon ton application
'----------------------------------------
Sub RemplirCombobox()

Dim Tblo As Variant

With Worksheets("Feuil1")
Set Rg = .Range("A1:C" & .Range("A65536").End(xlUp).Row)
Tblo = Rg
End With

With Me.ComboBox1
.Clear
.List = Tblo
End With

End Sub
'----------------------------------------


Salutations!




"jean plante" a écrit dans le message de news:lZ9gd.22676$
Bonjour,

Malheureusement non, le problème st encore présent, mais j'ai reçue une
autre solution.

La voici:

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("Feuil5").Cells(NumLigne + 1, 1).EntireRow.Delete
Shift:=xlUp
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

Il s'agit de l'ajout d'une variable (NumLigne) pour remplacer la valeur de
la ListBox1.ListIndex

Mais j'ai encore une question, est-ce possible de faire la même chose avec
une ListBox ayant plusieurs colones ?

Je te remercie pour tes commentaires.

Jean


"PMO" a écrit dans le message de
news:
Bonjour,

Au lieu d'écrire
Worksheets("Feuil5").Cells(ListBox1.ListIndex + 1, 1).Delete Shift:=xlUp

écrivez
Dim i&
i& = ListBox1.ListIndex + 1
If i& = 0 Then i& = 1
Worksheets("Feuil5").Cells(i&, 1).Delete Shift:=xlUp

Est-ce mieux ?

PMO
Patrick Morange





Bonjour

J'ai fais un USF dans lequel j'ai un ListBox1, un CommandButton1 pour
ajouter les items dans la ListBox1, un CommandButton2 pour supprimer un
items dans la ListBox1. Les données de la ListBox1 sont dans la
Feuille5 de


mon classeur.

Tout va bien, lorsque je choisi un item de la liste et que je clique sur
le


CommandButton2, 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 CommandButton2, 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 au lieu du
dernier


!!! ???

Je vous remercie pour vos commentaires et votre aide.

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