Enregistrer les données d'une listView

Résolu
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010 - 21 déc. 2009 à 14:07
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010 - 22 déc. 2009 à 16:36
Hello,

je voudrais enregistrer toutes les données entrées ou modifiés d'une listView. Pour cela, j'ai écris ce code qui émet une erreur au niveau du CInt (erreur: variable incompatible):

Citation:

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


J'ai bien l'impression que la conversion ne se fait pas mais jne sais pas pourquoi!!!

Help me please

Merci

Lil_monie

34 réponses

lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
21 déc. 2009 à 16:48
ben g encore la mêm erreur!!

Merci

Lil_monie
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 déc. 2009 à 17:28
Bon (reposé)...

Je ne sais pas comment tu t'y es pris pour copier ta 1ère listview vers la seconde...
Je jurerais que tu l'as fait item par item (laissant bien évidemment certaines petites choses, dont les clés, derrière).
Il y a quand-même d'autres méthodes.... et les collections d'items existent.
Alors :
1) tu vas lire ceci très attentivement (et surtout, essayer de comprendre, y compris en ce qui concerne les items sélectionnés)
http://www.codeguru.com/forum/showthread.php?t=79
2) tu vas te reposer encore un peu et t'y mettre.
Voilà pour moi.


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 09:21
Re,

Merci du conseil. La preuve me suis très bien reposé et là j'attaque.
Te tiens au courant.

Merci pour la piste!!


Merci

Lil_monie
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 14:33
J'ai bien examiné mon code et le lien que tu m'as donné mais j'ai fait des modifications qui n'ont pas encore abouti au résultat souhaité!!


Merci

Lil_monie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 14:44
J'ai pas tout lu vos échanges.
Je réitère ma question.

Que souhaites tu faire, au final ?

dépatouiller le code, c'est bien, mais s'il est mal concu, pas adapté ou qu'il existe unn autre moyen de faire .... c'est mieux.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 15:28
Ben je veux juste enregistrer les données qui seront modifiés ou non dans ma listView. Donc à partir de mon CommandBouton, que toutes mes données soient enregistrer.




Merci

Lil_monie
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 15:33
soit précises, s'il te plait, pour que nos réponses puissent l'être.


enregistrer où
sous quelle forme ?
enregistrer le contenu de ton listview afin de le reconstituer plus tard ?

Comment est rempli ce ListView actuellement ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 15:40
Ben il sera enregistrer sous un fichier excel qui existe déjà. Ces données doivent être enregistrer pour par exemple le consulter plus tard ou l'imprimer.
Et comme je l'ai dit au départ, cette listView est rempli à partir d'une autre listView.


Merci

Lil_monie
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 16:02
ok...

un simple export de mon listview vers un fichier excel !

du coup, PAS BESOIN du tout d'exploiter la propriété Key de tes Items...
c'est assez simple en définitive.

Dim oXL As Excel.Application
Dim oXls As Workbook
Dim oItem As ListItem
Dim oHeader As ColumnHeader
Dim oSubItem As ListSubItem
Dim nRow As Long
    Set oXL = New Excel.Application
    Set oXls = oXL.Workbooks.Add
    nRow = 1
    For Each oHeader In CcLst.ColumnHeaders
        oXls.ActiveSheet.cells(nRow, oHeader.Index).Value = oHeader.Text
    Next
    nRow = nRow + 1
    For Each oItem In CcLst.ListItems
        oXls.ActiveSheet.cells(nRow, 1).Value = oItem.Text
        For Each oSubItem In oItem.ListSubItems
            oXls.ActiveSheet.cells(nRow, 1 + oSubItem.Index).Value = oSubItem.Text
        Next
        nRow = nRow + 1
    Next
    oXls.SaveAs "c:\export.xls"
    oXls.Close
    oXL.Quit


En gros, on parcoure toutes les entetes, on ajoute leur titre.
On parcoure tous les items, leur sous-elements (colonnes)
et on ajoute tout ce petit monde dans l'excel.


au final, peu importe le contenu, la Key, etc...

Pardon si nous t'avons induit en erreur à ce sujet.



Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 16:11
Non mais t'inkiètes pas, vous ne m'avez pas induit en erreur. Parcontre si je comprends bien ton code, j'exporte la première listView dans l'autre et jenregistre en même temps c ça?

Parce que peut être que je ne me suis pas bien expliqué. Au fait, je voudrais copié la listView1 du UserForm1 dans ma listView2 du UserForm2. Puis sur le UserForm2, supprimer ou ajouter des données dans la listView2. Après modification, je veux donc enregistrer les données dans un fichier excel existant sachant que la listView1 a été rempli à partir de ce dernier.


Merci

Lil_monie
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 16:20
Mon code ne s'occupe que d'un seul listview.
On fais simplement deux boucles distinctes: une pour l'entete, et une pour les items.

quand je t'ai demandé ce que tu souhaites faire, tu m'a juste parler de l'export...
pour la recopie, cela n'a strictement rien de compliqué.

tu as su remplir la listview1, pourquoi vouloir en faire une copie ?

- tu peux exploiter cette liste
ou
- tu peux remplir l'autre liste par le meme procédé.

sans effectuer au final de copie directe d'un listview a l'autre.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 16:26
Ben jne epus pas remplir la listView2 par le mêm procédé car le UserForm2 auquel il appartient n'est pas fait de la même façon que le UserForm1. En gros franchement je ne peux pas faire juste un copier coller de l'autre code car dans ce dernier, il y a des comboBox qui sont inclus mais qui n'existent pas sur le UserForm2.

Je ne sais pas si tu m'as compri!
C'est un schéma qu'on m'a demandé de suivre et de respecter donc jne peux que le faire de cette façon. EN gros, je veux de la modification de données au niveau du UserForm2 dans la ListView2 puis enregistrer


Merci

Lil_monie
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 16:30
a part l'export excel, la UserForm2 n'affecte rien physiquement, les chnagements que tu compte y faire sont 'pour de faux' juste en mémoire, non ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
lilmonie Messages postés 51 Date d'inscription lundi 7 décembre 2009 Statut Membre Dernière intervention 18 janvier 2010
22 déc. 2009 à 16:36
Non, les changemnts doivent être pour de vrai!!
Ca va permettre à l'utilisateur de modifier les données ou d'en ajouter sachant qu'il ne doit pas dépasser 5 données.


Merci

Lil_monie
0
Rejoignez-nous