ListBox.delete.selection

T

Temjeh

Guest
Bon dimanche à tous

Juste un ptit code:

J'ai un listBox1 (Qui me montre les valeurs de A1 à A6)et un bouton

Je voudrait mettre sous le bouton un code qui delete la valeur sélectionné

Genre:

Private Sub CommandButton1_Click()
If ListBox1.Value = ?????? Then
select range .delete
End If

End Sub

Merci à tous

Temjeh
 
@

@+Thierry

Guest
Salut Temjeh, le Forum

Voici une démo, avec comme matériel :

1 WorkSheet nommée "Feuil1" avec des "Toto1", "Toto2", "Toto3", "Toto4", "Toto5", "Toto5" de A1 à A6

1 UserForm avec une ListBox nommée ListBox1, un CommandButton nommé CommandButton1...

Voici le Code :
Option Explicit

Private Sub UserForm_Initialize()
Dim i As Byte

For i = 1 To 6

With Me.ListBox1
.AddItem Sheets("FeuiL1").Range("A" & i)
End With
Next
End Sub


Private Sub CommandButton1_Click()
Dim i As Byte

'Ici je test si la Lisbox n'a pas de sélection, si pas de sélection on sort!
If Me.ListBox1.ListIndex = -1 Then Exit Sub

'Si il y en une sélection, je détruit la ligne (NB décalage de 1, l'indexation commence à zéro)
Sheets("Feuil1").Rows(Me.ListBox1.ListIndex + 1).Delete

'Et dans la foulée je vide l'item de la ListBox
Me.ListBox1.RemoveItem (Me.ListBox1.ListIndex)

End Sub


Voilà c'est tout simple.
Bonne Soirée
@+Thierry
 
O

omicron

Guest
Bonsoir Temjeh,


Tu trouveras en piéce jointe un exemple qui devrait t'aider à résoudre ton problème.

Aperçu du code :

=====================================================
Private Sub CommandButton1_Click()
ActiveSheet.Rows(ListBox1.ListIndex + 1).Cells(1).ClearContents
ListBox1_Update
End Sub

Private Sub CommandButton2_Click()
ActiveSheet.Rows(ListBox1.ListIndex + 1).Delete
ListBox1_Update
End Sub

Private Sub ListBox1_Change()
If ListBox1.ListIndex = -1 Then
CommandButton1.Enabled = False
CommandButton2.Enabled = False
Else
CommandButton1.Enabled = True
CommandButton2.Enabled = True
End If
End Sub

Public Sub ListBox1_Update()
UserForm1.ListBox1.Clear
For Each Cel In Range("A1:A6")
If Cel <> "" Then UserForm1.ListBox1.AddItem Cel
Next Cel
End Sub
====================================================

Cordialement.

Omicron.
 

Pièces jointes

  • DeleteFromListBox.zip
    10.7 KB · Affichages: 61
T

Temjeh

Guest
Merci à vous deux
Pour le code de Thierry j'ai une erreur d'exécution...accès refusé'70';

Pour Omicron ca marche mais quand je recopie ce code il me met aussi une erreur adns le module ligne:

UserForm1.ListBox1.Clear


merci
 
@

@+Thierry

Guest
Re Temjeh, Omicron, le Forum

Tu n'as pas copié mon exemple mais essayé de l'intégrer directement dans ton UserForm... (Idem pour celui d'Omicron)... Tu es un chenappan !!! lol


Car tu dois utiliser la méthode "RowSource" pour alimenter ta ListBox et nous on t'a bien proposé "AddItem" !!! (marchera pas avec RowSource !! nah !!! lol)

Bonne Soirée
@+Thierry
 
@

@+Thierry

Guest
Re Bonsoir TemJeh, Omicron

Sorry entre le Film et les autres Posts, je n'ai pas vu que tu étais revenu à la charge... Mais je constate à nouveau cet éternel fossé entre les utilisateurs et les développeurs...

Tu as bien écrit aujourd'hui à 18:45 "J'ai un listBox1 (Qui me montre les valeurs de A1 à A6)et un bouton...

C'est très différent que d'écrire j'ai une ListBox1 qui me montre les Valeurs de A1 à D6...

Enfin tu as de la chance... VBA dans toute sa splendeur a prévu des revirements de situations tel que celui là !!!

Change mon Initialization par celle-ci alors :
Private Sub UserForm_Initialize()
Dim i As Byte
Dim WS As Worksheet

Set WS = ThisWorkbook.Worksheets("Feuil1")

For i = 0 To 5
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = "40;40;40;40"
.AddItem WS.Range("A" & i + 1)
.Column(1, i) = WS.Range("B" & i + 1)
.Column(2, i) = WS.Range("C" & i + 1)
.Column(3, i) = WS.Range("D" & i + 1)
End With
Next
End Sub

Tu noteras qu'une ListBox s'indexe autant en dimension Verticale qu'en Horizontale à partir de zéro.... (avant, avec le AddtItem en une dimension uniquement, ce n'était pas grave on n'avait pas besoin de s'en soucier... Mais attention maintenant oui ! et donc le "i" est en décalage avec les Row de la Feuille)

Bonne Nuit
@+Thierry
 

Discussions similaires

Réponses
4
Affichages
232