3 réponses
Donc si tu as lu ce tuto jusqu'au bout tu as la solution!
@+ Le Pivert
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
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é.
À 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
je vous remercie de votre réponse !