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

Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
- - Dernière réponse : lilmonie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
- 29 déc. 2009 à 16:41
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
Afficher la suite 

18 réponses

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

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

++

[hr]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Oki merci
Vais voir tout ça!!

Merci

Lil_monie
Commenter la réponse de lilmonie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Re,

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


Merci

Lil_monie
Commenter la réponse de lilmonie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
"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)
Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
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
Commenter la réponse de lilmonie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Great, c bon. Me suis aidé des codes que tu m'as donné!!

Merci

Lil_monie
Commenter la réponse de lilmonie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
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
Commenter la réponse de lilmonie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
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

++
Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Je ne comprends pas bien ce code!!

Merci

Lil_monie
Commenter la réponse de lilmonie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
montre le tien, complet

sans çà comment veux-tu que je t'aide à trouver tes erreurs...
Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Enfin, je comprends bien le code mais comment l'appeler dans mon commandbouton_modifier?


Merci

Lil_monie
Commenter la réponse de lilmonie
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
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
Commenter la réponse de lilmonie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
SetListViewValue nom_de_ta_liste, position_ligne, position_colonne, "nouvelle valeur"
Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
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
Commenter la réponse de lilmonie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
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]
Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
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
Commenter la réponse de lilmonie
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
0
Merci
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
Commenter la réponse de PCPT
Messages postés
51
Date d'inscription
lundi 7 décembre 2009
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Ok, donc pour modifier n'importe quel ligne sélectionné, faudrait créer un autre UserForm pour cela?!


Merci

Lil_monie
Commenter la réponse de lilmonie