[vba excel 2003] - probleme de mise a jour données listview

fabian123

XLDnaute Occasionnel
Bonjour à toutes et tous!


voici le problème que je rencontre:

Je souhaite modifier une listview et enregistrer les modifications dans une feuille excel.

Les données modifiées sont encodées dans des textbox, puis transférée dans la listview et enfin enregistrée dans la feuil excel.

Tout se passe nickel, sauf pour la première colonne (Colonne A) Qui décale les lignes vers le haut.

Je m'explique j'ai en première ligne les intitulés du tableau qui me servent également pour les entêtes de la listview.

quand j'enregistre mes modifications tout se passe bien pour les colonnes B a M, mais pour la colonne A, il "supprime" mon entête et décale les cellules vers le haut.

voici le code utilisé (repris du site Utiliser le contrle ListView en VBA Excel)

Code:
Private Sub cmdValider_Click()
For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems(i).Selected = True Then
     ListView1.ListItems(i).Text = txtID
     ListView1.ListItems(i).ListSubItems(2).Text = txtPRENOMAGENT
     ListView1.ListItems(i).ListSubItems(1).Text = txtNOMAGENT
     ListView1.ListItems(i).ListSubItems(3).Text = txtADRESSEAGENT
     ListView1.ListItems(i).ListSubItems(4).Text = txtCPAGENT
     ListView1.ListItems(i).ListSubItems(5).Text = txtLOCALITEAGENT
     ListView1.ListItems(i).ListSubItems(6).Text = txtGSMTRAVAILAGENT
     ListView1.ListItems(i).ListSubItems(7).Text = txtGSMPRIVEAGENT
     ListView1.ListItems(i).ListSubItems(8).Text = txtMAILPROAGENT
     ListView1.ListItems(i).ListSubItems(9).Text = txtMAILPRIVEAGENT
     ListView1.ListItems(i).ListSubItems(10).Text = txtDATENAISSANCEAGENT
     ListView1.ListItems(i).ListSubItems(11).Text = txtDATEENTREESERVICEAGENT
     ListView1.ListItems(i).ListSubItems(12).Text = txtNUMNATAGENT
     ListView1.ListItems(i).ListSubItems(13).Text = txtNUMMATAGENT
    End If
Next

Dim K As Integer, j As Integer
    
    'Boucle sur toutes les lignes
    For K = 1 To ListView1.ListItems.Count
        Feuil1.Cells(K, 1) = ListView1.ListItems(K).Text
        
        'Boucle sur les colonnes
        For j = 1 To ListView1.ColumnHeaders.Count - 1
            Feuil1.Cells(K + 1, j + 1) = ListView1.ListItems(K).ListSubItems(j).Text
        Next j
    Next K

End Sub
 

jp14

XLDnaute Barbatruc
Re : [vba excel 2003] - probleme de mise a jour données listview

Bonjour

Une piste, il faudrait vérifier l'évolution de la variable K
Feuil1.Cells(K, 1) si K= 1 on a la cellule "A1"
Feuil1.Cells(K + 1, j + 1) on a la cellule "B2"

JP
 

fabian123

XLDnaute Occasionnel
Re : [vba excel 2003] - probleme de mise a jour données listview

bonjour!

merci beaucoup pour la rapidité de réponse!

alors, si je comprend bien, si je retire le "+1" qui suit le k, je devrais avoir la cellule a2...

mais quand je retire ce +1, tout l'enregistrement se fait, correctement, mais a partir de A1, donc je perd mes entêtes...

je viens de voir la réponse de paf, si je comprend bien je dois également jouer sur les indices de ligne et colonne de la listview...

je continue à chercher, en tout cas, merci pour les pistes!
 

fabian123

XLDnaute Occasionnel
Re : [vba excel 2003] - probleme de mise a jour données listview

re!
ok, un tout grand merci à vous!!!

je viens de trouver (en tout cas ça a l'air de fonctionner!)

Feuil1.Cells(K + 1, 1) si K= 1 on a la cellule "A1" -> il fallait rajouter +1.
Feuil1.Cells(K + 1, j + 1) on a la cellule "B2"

en faisant cela, tout fonctionne apparemment!
un tout grand merci pour votre aide!!
 

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 925
Membres
103 043
dernier inscrit
nouha nj