Pb de chargement listview [Résolu]

audreyOM 35 Messages postés lundi 18 février 2008Date d'inscription 7 avril 2008 Dernière intervention - 13 mars 2008 à 14:06 - Dernière réponse : audreyOM 35 Messages postés lundi 18 février 2008Date d'inscription 7 avril 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 13 mars 2008 à 15:39
3
Merci
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")

Merci jimy neutron 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de jimy neutron
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 13 mars 2008 à 14:29
0
Merci
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é!
Commenter la réponse de jimy neutron
audreyOM 35 Messages postés lundi 18 février 2008Date d'inscription 7 avril 2008 Dernière intervention - 13 mars 2008 à 14:38
0
Merci
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 !
Commenter la réponse de audreyOM
audreyOM 35 Messages postés lundi 18 février 2008Date d'inscription 7 avril 2008 Dernière intervention - 13 mars 2008 à 14:50
0
Merci
j'ai adapter le code mais une erreur " objet requis" vient au niveau de

ListView.Sorted = False

sais tu d'où ca peut venir ?
Commenter la réponse de audreyOM
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 13 mars 2008 à 15:06
0
Merci
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?

@+
Commenter la réponse de jimy neutron
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 13 mars 2008 à 15:15
0
Merci
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.
Commenter la réponse de jimy neutron
audreyOM 35 Messages postés lundi 18 février 2008Date d'inscription 7 avril 2008 Dernière intervention - 13 mars 2008 à 15:21
0
Merci
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 ?
Commenter la réponse de audreyOM
audreyOM 35 Messages postés lundi 18 février 2008Date d'inscription 7 avril 2008 Dernière intervention - 13 mars 2008 à 16:06
0
Merci
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
Commenter la réponse de audreyOM

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.