Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplir un ListView et moi ne sommes pas copains.cc

1 réponse
Avatar
Guy FALESSE
Bonjour à tous,

J'avais développé une petit programme en Accès et il fonctionne très
bien...suaf qu'il faut ouvrir Access.
J'ai donc décidé de me mettre à Visual Basic.
Tout allait bien jusqu'à...
J'ai un formulaire qui contient 2 contrôles un ListBox et un contrôle texte,
le contrôle texte sert à filtrer les données de ma base Access et le ListBox
contient ces données.
Le problèmes est que je n'ai pas droit à 2 colonnes, je veus dire que je ne
sais pas mettre 2 champs côte à côte, apparemment ce contrôle ne l'accepte
pas..
Voici donc ce code qui fonctionne:
Private Sub txtProposition_Change()
Dim monSQL As String, Critère As String, rst As Recordset, leNbre As
Integer
Dim maBD As Database, strConnection As String
strConnection = "c:\BaseAccess\CodesPostaux_97.mdb"
Critère = txtProposition.Text
monSQL = "SELECT tblCodes.code, tblCodes.localité FROM tblCodes " _
& "WHERE tblCodes.Localité Like '" & Critère & "*'" _
& "ORDER BY tblCodes.Localité;"
Set maBD = OpenDatabase(strConnection)
Set rst = maBD.OpenRecordset(monSQL)
lstCodes.Clear
If rst.RecordCount Then
rst.MoveFirst
Do While Not rst.EOF
'==============================
lstCodes.AddItem rst.Fields("Code").Value
lstCodes.AddItem rst.Fields("Localité").Value
'==============================
rst.MoveNext
Loop
End If
Set rst = Nothing
Set maBD = Nothing
End Sub

J'ai donc voulu utiliser un ListViex, après avoir lu et relu tout un tas de
message sur différents forums, j'ai donc tenté ceci:

Private Sub txtEntrerLettres_Change()
Dim monSQL As String, Critère As String, rst As Recordset, leNbre As
Integer
Dim maBD As Database, strConnection As String
Dim ObjListe As ListItem, I As Integer
strConnection = "c:\BaseAccess\CodesPostaux_97.mdb"
Critère = txtEntrerLettres.Text
monSQL = "SELECT tblCodes.code, tblCodes.localité FROM tblCodes " _
& "WHERE tblCodes.Localité Like '" & Critère & "*'" _
& "ORDER BY tblCodes.Localité;"
Set maBD = OpenDatabase(strConnection)
Set rst = maBD.OpenRecordset(monSQL)
lstViewCodes.ListItems.Clear
Set ObjListe = lstViewCodes.ListItems.Add(, , "Code")
lstViewCodes.ColumnHeaders(0).Add , , "Codes", lstViewCodes.Width / 5
lstViewCodes.ColumnHeaders(1).Add , , "Localité", lstViewCodes.Width / 8
If rst.RecordCount > 0 Then
I = 0
rst.MoveFirst
Do While Not rst.EOF
'==============================
ObjListe.SubItems(1).Add , "Localité",
rst.Fields("Localité") ------> ici, je butte: erreur de compilmation,
méthode ou mebre introuvable.
' ObjListe.ListSubItems.Add , "Localité", rst.Fields("Localité")
'==============================
rst.MoveNext
Loop
End If
Set rst = Nothing
Set maBD = Nothing
End Sub

Si une âme charitable pouvait m'aider, il en serait fortement remercié.
@+

Guy FALESSE

1 réponse

Avatar
Guy FALESSE
Re bonjour,

Voici une solution qui fonctionne:

Private Sub txtEntrerLettres_Change()
Dim monSQL As String, Critère As String, rst As Recordset, leNbre As
Integer
Dim maBD As Database, strConnection As String
Dim ObjListe As ListItem, I As Integer
strConnection = "c:BaseAccessCodesPostaux_97.mdb"
Critère = txtEntrerLettres.Text
monSQL = "SELECT tblCodes.code, tblCodes.localité FROM tblCodes " _
& "WHERE tblCodes.Localité Like '" & Critère & "*'" _
& "ORDER BY tblCodes.Localité;"
Set maBD = OpenDatabase(strConnection)
Set rst = maBD.OpenRecordset(monSQL)
lstViewCodes.ListItems.Clear
lstViewCodes.ColumnHeaders.Clear
'Ajoute les titres
lstViewCodes.ColumnHeaders.Add , , "Codes", lstViewCodes.Width / 5
lstViewCodes.ColumnHeaders.Add , , "Localité", lstViewCodes.Width / 1.3
Set ObjListe = lstViewCodes.ListItems.Add(, , rst!code) ' 1ere colonne
ObjListe.SubItems(1) = rst!localité ' 2eme colonne
lstViewCodes.View = lvwReport
If rst.RecordCount > 0 Then
rst.MoveFirst
Do While Not rst.EOF
'============================= Set ObjListe = Nothing
Set ObjListe = lstViewCodes.ListItems.Add(, , rst!code) ' 1ere
colonne
ObjListe.SubItems(1) = rst!localité ' 2eme colonne
'============================= rst.MoveNext
Loop
End If
Set rst = Nothing
Set maBD = Nothing
End Sub

@+

Guy FALESSE