Enregistrer les données d'une listView [Résolu]

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

Votre réponse

34 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2009 à 17:07
3
Merci
Et ça te surprend, hein .....!
Regarde deux parties de con code... regarde-les bien ;
Ton 1er message :

i% = Sheets("rex_data").UsedRange.Rows.Count + 1  ' (dont se demande d'ailleurs à quoi ça sert puisque tu débutes de toutes manières à 1 ensuite !!!)

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) 

et voilà que maintenant :


For i% = 2 To Nb 
  ListView2.ListItems(i% - 1).Key = "L" & CStr(i%) 
Next i 


Et rien ne te chiffonne, bien sûr !
Allez ! repose-toi 15 minutes, puis reviens vers ta machine et exécute ceci, qui devrait te bpermettre de te réveiller un peu :


For i% = 1 To ListView2.ListItems.Count 
  msgbox listview2.listitems(i).key
next


Moi, à ce niveau, j'ai décidé d'aller me reposer également ...
Bonne chance


________________
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.

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de ucfoutu
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 21 déc. 2009 à 14:16
0
Merci
c'est pas du .NET, mauvaise section....

quand tu as ton erreur, presse le bouton debogage.

que vaut T quand l'erreur se produit ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 14:20
0
Merci
Pour la section, dsl!!

T="" quand je fais un débogage!!

Merci

Lil_monie
Commenter la réponse de lilmonie
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 21 déc. 2009 à 14:22
0
Merci
tu as donc ta réponse...

"" n'est pas une donnée numérique.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 14:31
0
Merci
Normal puisque je l'ai déclaré en string. Mais ce que je ne comprends pas c pourquoi la conversion en Int ne marche pas puisque j'ai écrit le même code pour un autre UserForm et ça a marché!!


Merci

Lil_monie
Commenter la réponse de lilmonie
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2009 à 14:34
0
Merci
parce que la chaîne "2" peut être traduite en numérique, pas pas la chaîne "" ou "b", tout simplement et que Cint ne peut transformer en integer que ce qui représente un numérique. Voilà pourquoi !

____________________
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.
Commenter la réponse de ucfoutu
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 14:43
0
Merci
Dans ce cas là, quel solution me proposerais tu?

Merci

Lil_monie
Commenter la réponse de lilmonie
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 21 déc. 2009 à 14:53
0
Merci
ben tout dépend de ce que tu souhaites faire...

tu demande a récupérer un nombre de la donnée exemple "#"

que veux tu faire, de la divination ?


soit tu utilises Val, qui renverra 0 dans de tels cas
soit tu t'arranges pour ne pas avoir de Key vides

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 15:07
0
Merci
Oki je vois!!

Vais voir ça!

Merci

Lil_monie
Commenter la réponse de lilmonie
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 15:25
0
Merci
Sorry mais jy arrive pas!!


Merci

Lil_monie
Commenter la réponse de lilmonie
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 15:26
0
Merci
Je me demande si c pas parce que ma listeView n'a pas été rempli manuellement. Au fait, cette listView n'est qu'un copier collé d'une autre listView.


Merci

Lil_monie
Commenter la réponse de lilmonie
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 21 déc. 2009 à 15:28
0
Merci
c'est une question ?

je veux dire, nous ignorons tout du contenu de ta listview


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 15:52
0
Merci
Ok, i see.
Donc voili:

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

Nb% = Sheets("rex_data").Range("A65536").End(xlUp).Row

With .ListItems

.Clear
If Nb > 1 Then
T$ = ""
For i% = 2 To Nb
If T$ <> Sheets("rex_data").Cells(i%, 1).Value Then
T$ = Sheets("rex_data").Cells(i%, 1).Value
.Add , , T$
Else
.Add , , T$ '"" A suivre
End If
Next i%
End If
End With


If Nb > 1 Then
For i% = 2 To Nb
For j% = 2 To 12
.ListItems(i% - 1).ListSubItems.Add , , Sheets("rex_data").Cells(i%, j%).Value
Next j%
Next i%
End If

.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

For j = 1 To 10 ' pour les 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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2009 à 16:01
0
Merci
Tu me praias fort naviguer un peu au hasard ....
Je ne sais pas si la première ListView était dotée de Keys, mais ce qui me parait évident, c'est que (dans tous les cas de figure) ta seconde listview n'en a pas (ou alors : dis-nous où tu penses les avoir définies) !



____________________
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.
Commenter la réponse de ucfoutu
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 16:11
0
Merci
Je ne les ai pas defini dans ma listView2.


Merci

Lil_monie
Commenter la réponse de lilmonie
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 16:14
0
Merci
Mais, sauf erreur de ma part, on n'est pas obligé de défnir les clés à part si on veut les utiliser non?!



Merci

Lil_monie
Commenter la réponse de lilmonie
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2009 à 16:15
0
Merci
Cà, nous le voyons bien !
Mais apparemment pas toi, puisque tu les invoques ! (en plus avec Cint, alors qu'elles sont vides !)

____________________
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.
Commenter la réponse de ucfoutu
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 21 déc. 2009 à 16:16
0
Merci
"a part si on veux les utiliser"

oui, mais c'est bien ce que tu souhaites faire dans le premier code, avec le CInt....

tu cherches a exploiter le code.

maintenant, plutot que de chercher a corriger un code bancal, explique nous plutot les tenant et le abouttissants.....



que souhaites tu faire, au final ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
lilmonie 51 Messages postés lundi 7 décembre 2009Date d'inscription 18 janvier 2010 Dernière intervention - 21 déc. 2009 à 16:21
0
Merci
Puis je attribuer les clés comme ceci:
For i% = 2 To Nb
ListView2.ListItems(i% - 1).Key = "L" & CStr(i%)
Next i


Merci

Lil_monie
Commenter la réponse de lilmonie
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2009 à 16:43
0
Merci
Essaye (ça ne mange jamais de pain, d'essayer) !



____________________
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.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.