Pb de chargement listview

Résolu
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 13 mars 2008 à 14:06
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 13 mars 2008 à 16:06
bonjour à tous,

voili voilou, j'ai un petit soucis pour charger mon listview à partir de ma BDD. je fais ma requête permettant de récupérer ce qu'il faut mais je n'arrive pas à trouver la bonne synthaxe pour l'associer à ma listview.
voici mon code :Function listview1_chargement()


Dim RSCONSO4 As Recordset
Dim Requete As String
Set BDDCONSO = OpenDatabase(Workbooks("AutoBEv2.xls").Path & "/BDD Access/BDD CONSO.mdb")

 Requete = "SELECT * FROM CONSO"
Set RSCONSO4 = BDDCONSO.OpenRecordset(Requete)
   
While Not RSCONSO4.EOF
    'récupération des valeurs
       'UserForm1.ListView1.Add (RSCONSO4!appareil ListItem(1) & RSCONSO4!Install ListItem(2) & RSCONSO4!Cal = ListItem(3))
    'UserForm1.ListView1.ListItems(1).ListSubItems.Add RSCONSO4!appareil
    'UserForm1.ListView1.ListItems(1).ListSubItems.Add ( 1,1,RSCONSO4!appareil,,,) As ListSubItem)
   
RSCONSO4.MoveNext


Wend


BDDCONSO.Close
End Function

mon problème vient donc au niveau de la récupération des valeurs. j'ai testé différent truc mais il me manque quelque chose pour avoir une bonne syntaxe et sur le net ca m'a pas trop trop éclairé.
si quelqu'un peut m'aider se sera avec grand plaisir que je continuerai mon initiation au VBA !

je vous remercie

8 réponses

jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
13 mars 2008 à 15:39
Index doit commencer à 1 et pas à 0
ListItems correspond à la ligne du listview
SubItems correspond  à la cellule de cette même ligne avec l'index de la colonne entre( ) en partant de zero: ListItems(3).SubItems(1)= cellule de la 3ieme ligne / 2ieme colonne.

Autres choses:
Dans ListView.ListItems(Index).SubItems(1) = Rs.Fields("Type") ,
 
Rs.Fields("Type")
, correspond à la colonnes ou champs de la table Access que tu lis, et qui s'appelle donc "Type",dans mon appli.
 
Si ta table Access a pour intitulés de champs (colonnes) :  Nom   Prénom   Age ...
Tu liras cette table avec:

ListView.ListItems(Index).SubItems(1) = Rs.Fields("Nom")
ListView.ListItems(Index).SubItems(2) = Rs.Fields("Prenom")
ListView.ListItems(Index).SubItems(3) = Rs.Fields("Age")
3
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
13 mars 2008 à 14:29
Salut
Voici un de mes code qui fonctionne bien, tu devra l'adapter, mais tu auras le principal. Dans ce cas precis, la base ACCESS est dèja ouverte, genre:

Set DBase = OpenDatabase(Path & "AccessBase.mdb")

Puis
Public Function Read_Access()



Dim Index As Integer



ListView.Sorted = False
ListView.ListItems.Clear
Index = 1

Set DBase = OpenDatabase(Path & "AccessBase.mdb")

Sql = "select * from Moteur"
Set Rs = DBase.OpenRecordset(Sql, dbOpenDynaset)



' Remplissage du listView
While Not Rs.EOF
' Ecriture dans le LV de la recherche
    
        ListView.ListItems.Add Index, , Rs.Fields("Cle")
        ListView.ListItems(Index).SubItems(1) = Rs.Fields("Type")
        ListView.ListItems(Index).SubItems(2) = Rs.Fields("Ref")
        ListView.ListItems(Index).SubItems(3) = Rs.Fields("Aff")
        ListView.ListItems(Index).SubItems(4) = Rs.Fields("NSerie")
        ListView.ListItems(Index).SubItems(5) = Rs.Fields("Puissance")
        ListView.ListItems(Index).SubItems(6) = Rs.Fields("Tension")
   
    Index = Index + 1
    
    Rs.MoveNext
Wend



Rs.Close     'Fermeture



'Rafraissement du listView
ListView.Refresh
ListView.Sorted = True



End Function


J'espere t'avoir aidé!
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 14:38
ah oui je vois !

carément !

ben je vais faire els modifs qui s'imposent sur mon code !! j'espère que ca marchera !

par contre j'ai une petite question ton listview pour nommer les colonne tu as été dans la propriété personnalisé et entré les valeurs? je te pose cette question car pour l'instant je n'ai aps encore vu de colonne à mon listview est ce parcequ'il était vide ?

merci  pour tes réponses !
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 14:50
j'ai adapter le code mais une erreur " objet requis" vient au niveau de

ListView.Sorted = False

sais tu d'où ca peut venir ?
0

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

Posez votre question
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
13 mars 2008 à 15:06
Par ce que tu dois notifier la Form sur laquelle est ton ListView:

Form1.ListView.Sorted = False

Pour la création du listview, je n'ai pas VB sous les yeux et de mémo, je nserais pas assez précis, si tu peux attendre ce soir?

@+
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
13 mars 2008 à 15:15
N'oubli pas non plus, si tu souhaite voir les intitulés de colonnes, de mettre la propriété 'View' du listView sur '3-LvWReport', ils ne seront visibles qu'en Run.
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 15:21
ok !!

ben c'est exacteemtn ce qui me manquais !!! pour la création du listview c'est bon il me manquait juste ce fameaux 3-LvWreport !!  merci !
parfois il manque vraiment aps grand chose et on passe des heures dessus lol !

par contre j'ai une autre erreur pour le chargement listview pour tout ce qui est récupération de valeur style :
ListView.ListItems(Index).SubItems(1) = Rs.Fields("Type")

le debeggeur me met : index out of bound , quel genre d'erreur cela signifie ?
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
13 mars 2008 à 16:06
vi   mais ca plante quand meme a ce niveau là :

UserForm1.ListView1.ListItems(Index).SubItems(1) = RSCONSO4.Fields("Hélico")
        UserForm1.ListView1.ListItems(Index).SubItems(2) = RSCONSO4.Fields("Install")
        UserForm1.ListView1.ListItems(Index).SubItems(3) = RSCONSO4.Fields("Cal")

désolée de t'embéter avec ca mais je débute avec VBA et j'ai parfois du mal à voir les erreurs , merci pour ta patience
0
Rejoignez-nous