selection listview + suppression d'une ligne dans une feuille

nina71287

XLDnaute Occasionnel
bonsoir,

j'aurais besoin d'un enorme coup de pouce pr m'aider à resoudre ce probleme svp,
j'ai une listview à 4 colonnes avec la date de l'absences, le type de l'absences, si c'est une demi journée ou non et l'etat (validé, demande...) et un textbox avec le nom de l'employé.

Mes données de la listview s'affiche en fonction de l'employé, ce que je souhaiterais faire c'est que l'on puisse supprimer une date en selectionnant dans la listview et qu'elle soit supprimée dans la feuille de l'employé.
Il faut donc prendre en compte le fait que pour une meme date il peut y avoir plusieurs types d'absences vu que je fonctionne en demi jr. dc voici mon code sur lequel j'etais parti je recherche la date puis je verifie que le type d'absences et le demi jr corespond bien a ceux selectionne dans mon listview mais ca ne marche pas il me met soit que la date ne peut pas etre suprimée soit il me supprime une ligne qui n'a rien à voir...:mad:

nom = Me.TextBox1
i = ListView1.SelectedItem.Index
'1 element de ma ligne selectionnee qui correspond à la date
Date = ListView1.ListItems(i).Text
type_abs = ListView1.ListItems(i).ListSubItems(1).Text
demi_jr = ListView1.ListItems(i).ListSubItems(2).Text

ThisWorkbook.Activate
Sheets(nom).Visible = True
With Worksheets(nom).Range("b1:b500")
Set c = .Find(Date, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
'j=numero de la ligne trouvée avec la date corespondante
j = c.Row
'si le type d'absences est le meme que ds la listview et idem pour le fait que ce qoit une demi journée alors la ligne est supprimée
If .Range("D" & j).Value = type_abs And .Range("E" & j).Value = demi_jr Then
'supprime la ligne
Rows(j & ":" & j).Delete
MsgBox ("la date a été trouvée")
else
msgbox("la date ne peut pas etre supprimée")
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

merci d'avance pr votre aide

bonne soirée
 

jp14

XLDnaute Barbatruc
Re : selection listview + suppression d'une ligne dans une feuille

Bonjour

Quand on travaille sur des bases de données, il est important de trouver le bon enregistrement pour faire les mises à jour.
Le plus simple est de mettre des informations cachées qui permettront de retrouver facilement l'enregistrement.
Avec une listview cette technique est très simple à mettre en oeuvre à l'aide des clefs.

Par exemple pour les dates mettre l'adresse de la date au niveau de la "KEY"

ListView1.ListItems(.ListItems.Count).ListSubItems.Add ,"D" & £Li , Sheets(£nomfeuil).Range("D" & £Li)

Les contrôles de données se faisant uniquement avec la listview,
la récupération de l'adresse permettra de mettre à jour la base.

ci dessous un code pour visualier les "key"

Code:
Private Sub ListView1_Click()
With ListView1.SelectedItem
MsgBox (.Key)
MsgBox (.ListSubItems(1).Key)
MsgBox (.ListSubItems(2).Key)
End With
end sub

JP
 

nina71287

XLDnaute Occasionnel
Re : selection listview + suppression d'une ligne dans une feuille

merci jp14 pr ta reponse je n'ai pas bien compris comment s'utiliser l'instruction key malgres quelque recherches peut tu me montrer ton exemple avec un fichier svp merci bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 526
dernier inscrit
HEC