Supprimer d'une liste un item sélectionné vba

Fermé
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 - 16 mars 2016 à 10:36
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 16 mars 2016 à 14:10
Bonjour à tous,
comme dans le titre, j'ai une erreur, j'ai dans un userform un textbox (liste) qui me permet lorsque je clique sur un bouton ajouter des items dans cette liste. A présent je voudrai donner a l'utilisateur de pouvoir supprimer un item dans cette liste. lorsque je clique dessus je voudrai le sélectionner (surbrillance) puis après je clique sur un bouton supprimer qui l’enlèverai de cette liste.

j’espère avoir était assez clair, je vous remercie par avance de votre aide !!!


3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 mars 2016 à 10:43
0
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 6
16 mars 2016 à 11:14
merci de votre réponse, j'avais déjà lu ce tuto.
je vous remercie de votre réponse !
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié par cs_Le Pivert le 16/03/2016 à 13:43
Donc si tu as lu ce tuto jusqu'au bout tu as la solution!

Option Explicit
Private Sub CommandButton1_Click()
Dim index As Integer
ListBox1.RemoveItem (ListBox1.ListIndex)
index = ListBox1.ListIndex + 1
Rows(index & ":" & index).Delete Shift:=xlUp'supprime la ligne
End Sub

Private Sub UserForm_Initialize()
 Dim Cell As Range
    Dim Unique As New Collection
    Dim Valeur As Range
    Dim i As Integer
    
    'Récupère la derniere ligne non vide dans la colonne A
    i = Range("A65536").End(xlUp).Row
    
    On Error Resume Next
    'boucle sur les cellules de la colonne A
    For Each Cell In Range("A1:A" & i)
        'Stocke les données dans une collection
        '(La collection n'accepte que des données uniques et permet donc
        ' de filtrer facilement les doublons).
        Unique.Add Cell, CStr(Cell)
    Next Cell
    On Error GoTo 0
    
    'Boucle sur le contenu de la collection pour alimenter la ListBox
    For Each Valeur In Unique
        Me.ListBox1.AddItem Valeur
    Next Valeur
End Sub




@+ Le Pivert
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
16 mars 2016 à 14:10
Bonjour le fil, bonjour le forum,

À adapter... Une Userform avec une Combobox1, un CommandButton1 / Ajouter, un CommandButton2 / Supprimer. La liste des items se trouve dans la colonne A à partir de la ligne 2. A1 contient une étiquette... Code commenté.

Private DL As Integer 'décalre la variable DL (Dernière Ligne)

Private Sub UserForm_Initialize()
DL = Cells(Application.Rows.Count, 1).End(xlUp).Row
Me.ComboBox1.List = Range("A2:A" & DL).Value
End Sub

Private Sub CommandButton1_Click() 'bouton "Ajouter"
Cells(DL + 1, 1).Value = Me.ComboBox1.Value 'rajoute la données de la combobox dans la liste de la colonne A

'à supprimer si non nécéssaire
'*****************************
'tri par ordre alphabétique de la liste contenant une étiquette en ligne 1
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1") _
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
    .SetRange Range("A:A")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
'*****************************

End Sub

Private Sub CommandButton2_Click() 'bouton "Supprimer"
With Me.ComboBox1 'prend en compte la ComboBox1
    .RemoveItem (.ListIndex) 'supprime de la ComboBox1 l'Item sélectionné
    For I = DL To 2 Step -1 'boucle inversée sur le ligne Dl à 2
        'si la cellule en colonne 1 (=A) est égale à la valeur de la ComboBox1, supprime la ligne
        If Cells(I, 1).Value = Me.ComboBox1.Value Then Rows(I).Delete: Exit For
    Next I 'prochaine ligne de la boucle
End With 'fin de la prise en compte de la ComboBox1
Unload Me 'vide et ferme l'UserForm
UserForm1.Show 'affiche l'UserForm1
End Sub

0