Modifier le contenu des lignes d'une listView [Résolu]

Signaler
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
-
lilmonie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
-
Bonjour,

Je souhaite modifier le contenu d'une listView. Plus précisément, je veux qu'après avoir sélectionné une ligne de la listView, la modifier ou l'effacer.

Comment pourrais je le faire?


Merci

Lil_monie

18 réponses

Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
salut,

plusieurs bouts de codes utiles :
http://www.codyx.org/recherche.aspx?r=listview

++

[hr]
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Oki merci
Vais voir tout ça!!

Merci

Lil_monie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Re,

ben avec les codes que tu m'as donné, j'y arrive pas. C'est pas pareil!!


Merci

Lil_monie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
"j'y arrive pas" c'est pas une question si?

montre ton code et précise ce qui ne fonctionne pas (erreur, pas de suppression, mauvaise ligne, etc)
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

c bon jy suis arrivé!

Parcontre j'aimerais savoir comment ajouter une ligne dans une listView sans que l'utulisateur ne passe par le code!!?

Merci

Lil_monie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Great, c bon. Me suis aidé des codes que tu m'as donné!!

Merci

Lil_monie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Parcontre au niveau de la modification d'une ligne sélectionné de ma listView, je ne peux modifier que la^première colonne de ma ligne.

En effet, quand je sélectionne une ligne et ke je clik sur modifier, j'arrive just à modifier ma première colle:


Private Sub CommandButton4_modifier_Click()
Call AppendLineToLV(Me.ListView2)
End Sub

Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
If (LV.ColumnHeaders.Count > 0) And (Not UBound(vasValues) = -1) Then
Dim LI As ListItem
Dim i As Integer
LV.ListItems.Add , , vasValues(0)
Set LI = LV.ListItems.Item(LV.ListItems.Count)
For i = 1 To UBound(vasValues)
If i = LV.ColumnHeaders.Count Then Exit For
LI.SubItems(i) = vasValues(i)
Next i
Set LI = Nothing
End If
End Sub




Merci

Lil_monie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
AppendLineToLV
Append ajoute
Line ligne
To vers
LV listview

ce code n'est pas celui d'une modification

regarde les liens....
http://www.codyx.org/snippet_modifier-facilement-contenu-cellule-listview_543.aspx#1707

++
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Je ne comprends pas bien ce code!!

Merci

Lil_monie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
montre le tien, complet

sans çà comment veux-tu que je t'aide à trouver tes erreurs...
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Enfin, je comprends bien le code mais comment l'appeler dans mon commandbouton_modifier?


Merci

Lil_monie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Voici comment se présente ma listView:

Private Sub CommandButton1_enregistrer_Click()
Call Enregistrer
Unload UserForm19
End Sub

Private Sub Enregistrer()
Dim i%, j%, k%, T$

i% = Sheets("rex_data").UsedRange.Rows.Count + 1

For i% = 1 To ListView2.ListItems.Count
For j% = 0 To ListView2.ColumnHeaders.Count - 1
If j% = 0 Then
T = ListView2.ListItems(i).Key
If Len(T) > 0 Then T = Right(T, Len(T) - 1)
k% = CInt(T)
Sheets("rex_data").Cells(k%, j% + 1).Value = ListView2.ListItems(i%).Text
Else
Sheets("rex_data").Cells(k%, j% + 1).Value = ListView2.ListItems(i%).ListSubItems(j%).Text
End If
Next j%
Next i%

End Sub

Private Sub CommandButton2_Effacer_Click()
ListView2.ListItems.Remove (ListView2.SelectedItem.Index)
End Sub

Private Sub UserForm_Initialize()
Dim i%, j%, T$, k%, Nb%

With ListView2
With .ColumnHeaders
.Clear 'Supprime les anciens entêtes
'Ajout des colonnes
.Add , , "N°", 20
.Add , , "N° Affaire", 45, lvwColumnCenter
.Add , , "Designation", 55, lvwColumnCenter
.Add , , "Client", 45, lvwColumnCenter
.Add , "MOE", 35, lvwColumnCenter
.Add , , "BE", 35, lvwColumnCenter
.Add , , "Montant Commande", 85, lvwColumnRight
.Add , , "Date", 60, lvwColumnCenter
.Add , , "Secteur d'activité du clien final", 89, lvwColumnCenter
.Add , , "Activité exercée par INEO", 80, lvwColumnCenter
.Add , , "Codification des métiers", 80, lvwColumnCenter
.Add , , "Heures chantier", 68, lvwColumnCenter
End With


.View = lvwReport 'affichage en mode Rapport
.Gridlines = True 'affichage d'un quadrillage
.FullRowSelect = True 'Sélection des lignes complètes
.HideSelection = False


With UserForm17.ListView1

For i = 1 To UserForm17.ListView1.ListItems.Count

ListView2.ListItems.Add , .ListItems(i).Key, .ListItems(i).Text ' pour la première ligne

For j = 1 To 11 ' pour les colonnes
' a modifier ou supprimer en fonction du nombre de colonnes

ListView2.ListItems(ListView2.ListItems.Count).ListSubItems.Add = .ListItems(i).ListSubItems(j).Text
Next j
Next i
End With

End With
End Sub




Merci

Lil_monie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
SetListViewValue nom_de_ta_liste, position_ligne, position_colonne, "nouvelle valeur"
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Mais si je fais ça, c coe si cétai moi mêm ki modifiait ma lisView. Mais ce que moi je veux, c que l'utilisateur puisse le faire directement sur le UserForm.

Merci

Lil_monie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
seule la première colonne est modifiable, en donnant la main à l'utilisateur
ce par .LabelEdit = lvwAutomatic

pour travailler avec les autres colonnes tu dois faire ton propre userform qui va avoir autant de cellules de saisie que ton nombre de colonne, et ensuite ajouter ou modifier, par code

[hr]
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Donc jne peux pas faire un code pour ke l'utilisateur ajoute ou modifie les données qui sont dans la listView?!!


Merci

Lil_monie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
ah c'est sûr que si tu ne lis même pas ce qu'on te répond l'utilisateur a intérêt d'être très patient

tu as 5 cases par exemple
la listview autorise SANS CODE a ne modifier que la première case

tu ne vas pas faire 5 INPUT
donc tu fais un userform avec 5 cases, l'utilisateur les remplit, tu récupères ces valeurs et les mets dans la ligne qu'il avait sélectionné, grâce au code indiqué précédemment
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010

Ok, donc pour modifier n'importe quel ligne sélectionné, faudrait créer un autre UserForm pour cela?!


Merci

Lil_monie