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

bithack Messages postés 143 Statut Membre -  
ThauTheme Messages postés 1564 Statut Membre -
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

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    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