suppression d'une ligne de feuille excel a partir d'une ListBox

ciree

XLDnaute Nouveau
Bonjour,

Je souhaite pouvoir supprimer des lignes de ma feuille excel (et de la ListBox) avec une Listbox
J'ai récupéré un code mais cela fonctionne assez mal .
je vous remercie par avance pour votre aide.
 

Pièces jointes

  • fichier de travail.xls
    118 KB · Affichages: 54
  • fichier de travail.xls
    118 KB · Affichages: 71
  • fichier de travail.xls
    118 KB · Affichages: 64

Modeste

XLDnaute Barbatruc
Re : suppression d'une ligne de feuille excel a partir d'une ListBox

Bonjour ciree,

Dans le code que tu as "récupéré", l'instruction suivante
Code:
d = .Column(0, .ListIndex)
récupère dans la ListBox et pour l'élément sélectionné (à condition qu'il y en ait un!!) le contenu de la première colonne de ta ListBox.
Or, dans l'exemple que tu as déposé, il y a un '1' dans la première colonne pour chaque ligne! Quand tu fais ton Find, un peu plus bas, Excel repère le premier '1' dans la colonne A de la feuille "Sérothèque" et supprime cette ligne-là ... ça ne risque effectivement pas de faire ton bonheur!!
Je ne sais pas non plus ce que fait la boucle For x = 2 To 3 :confused:

Par contre, comme tu garnis ta ListBox avec le contenu des cellules de la feuille en un "bloc", le ListIndex peut servir de point de repère pour déterminer quelle ligne il faut supprimer, dans la feuille (ce sera ListIndex + 2)

Essaye avec
VB:
Private Sub Suppression_Click()
Dim d
Dim r As Range
Dim x As Byte

With Me.ListBox1
    d = .ListIndex
    If Not d = -1 Then 'on vérifie qu'un élément est bien sélectionné!
        Sheets("Sérothèque").Rows(d + 2).Delete
        .RemoveItem ListBox1.ListIndex
    End If
End With

End Sub
 

ciree

XLDnaute Nouveau
Re : suppression d'une ligne de feuille excel a partir d'une ListBox

C 'est parfait. Merci beaucoup.
Et encore merci pour les explications qui me font progresser.



Bonjour ciree,

Dans le code que tu as "récupéré", l'instruction suivante
Code:
d = .Column(0, .ListIndex)
récupère dans la ListBox et pour l'élément sélectionné (à condition qu'il y en ait un!!) le contenu de la première colonne de ta ListBox.
Or, dans l'exemple que tu as déposé, il y a un '1' dans la première colonne pour chaque ligne! Quand tu fais ton Find, un peu plus bas, Excel repère le premier '1' dans la colonne A de la feuille "Sérothèque" et supprime cette ligne-là ... ça ne risque effectivement pas de faire ton bonheur!!
Je ne sais pas non plus ce que fait la boucle For x = 2 To 3 :confused:

Par contre, comme tu garnis ta ListBox avec le contenu des cellules de la feuille en un "bloc", le ListIndex peut servir de point de repère pour déterminer quelle ligne il faut supprimer, dans la feuille (ce sera ListIndex + 2)

Essaye avec
VB:
Private Sub Suppression_Click()
Dim d
Dim r As Range
Dim x As Byte

With Me.ListBox1
    d = .ListIndex
    If Not d = -1 Then 'on vérifie qu'un élément est bien sélectionné!
        Sheets("Sérothèque").Rows(d + 2).Delete
        .RemoveItem ListBox1.ListIndex
    End If
End With

End Sub
 

Discussions similaires