Microsoft 365 Suppression données dans feuille de calcul depuis Listbox

Blaster

XLDnaute Nouveau
Bonjour à tous,

Je supprime depuis une listbox des données contenues dans une feuille de calcul.

Pour cela, je stock le numéro de la ligne en question directement dans la listbox que
je récupère au moment de la suppression via un double click.

Les données dans la listbox sont filtrées donc le numéro de ligne de la feuille de calcul ne correspond pas à celui de la listbox.

Cela fonctionne pour le moment, mais je ne suis pas sûr que cela soit la meilleure méthode.
Je suis preneur de tout conseil sur le sujet.

Stockage :
VB:
 .List(y, 5) = i  'Stockage du numéro de ligne pour fonction suppression

Lecture et suppression
Code:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

On Error GoTo errorhandler

Ligne = ListBox1.List(ListBox1.ListIndex, 5)

If MsgBox("Êtes-vous sûr de vouloir supprimer cette ligne ?", vbYesNo, "Confirmation suppression") = vbYes Then

Feuil1.Rows(Ligne).Delete

Load_Listbox1
Else
End If

errorhandler: MsgBox ("Suite à une erreur, merci de réessayer")



End Sub


Merci pour votre aide.
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re bonjour,

Euh... Si vous pouviez rééditer votre demande et enlever les MAJUSCULES de votre titre, qui dans un forum est comme un cri dans un couloir.

Pour répondre à votre question :

Vous supprimez la ligne 16 stockée dans un item.
Celles qui était dessous, remontent...
Les numéros stockés dans la listbox ne correspondent plus..
Sauf à recharger votre listebox les numéros ne seront plus les bons.

Le mieux (à mon sens) est de donner un identifiant unique à vos lignes.
Cet identifiant peut être construit avec l'année, le mois, le jour et l'index ordinal de création dans la journée
Par exemple 202204140004
ce qui permet 9999 ligne par jour.
L'identifiant peut également être Max(de la colonne) +1

Ensuite dans votre programme vous pourrez stocker cet identifiant et faire une recherche sur lui :
IDX = Application.Match(identifiant, PlageDesItentifiants,0)
If Not isError(idx) then MaPlage.Rows(idx).EntireRow.Delete


Cordialement
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
311

Statistiques des forums

Discussions
312 046
Messages
2 084 854
Membres
102 688
dernier inscrit
Biquet78