Monsieur Perathoner,
Me revoila déjà.
J'ai trouvé sur un forum du code pour créer un treeview en relation avec une BD access.
J'ai essayé de l'adapter à mon programme mais il m'arrête déjà dès les première lignes. Je suis sur que c'est une bétise mais si tu savais y regarder, ce serait sympa de ta part.
Voici le code
Set adoConnection = New ADODB.Connection
Set adoRecordSet = New ADODB.Recordset
ConnectionString = "Provider = Microsoft.Jet.OLEDB.3.51;" & " Data Source = C:\TFE\Stock2.mdb"
adoConnection.Open ConnectionString
adoRecordSet.Open "CATEGORIE", adoConnection
Do Until adoRecordSet.EOF
Dim SqlD, setClass, setClass2, setClass3, setClass4, setClass5 As Recordset
SqlD = "SELECT Id_Categorie,Int_Categorie FROM CATEGORIE ORDER BY Int_Categorie"
Set setClass = New Recordset (Il bloque déjà ici, il ne reconnait pas le "New")
setClass.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText
SqlD = "SELECT Id_Sous-Categorie1,Int_Sous-Categorie1 FROM SOUS-CATEGORIE ORDER BY Int_Sous-Categorie1"
Set setClass2 = New Recordset
setClass2.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText
SqlD = "SELECT Id_Sous-Categorie2,Int_Sous-Categorie2 FROM SOUS-CATEGORIE2 ORDER BY Int_Sous-Categorie2"
Set setClass3 = New Recordset
setClass3.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText
SqlD = "SELECT Id_Sous-Categorie3,Int_Sous-Categorie3 FROM SOUS-CATEGORIE3 ORDER BY Int_Sous-Categorie3"
Set setClass4 = New Recordset
setClass4.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText
SqlD = "SELECT Id_Fourniture,Denomination FROM FOURNITURE ORDER BY Denomination"
Set setClass5 = New Recordset
setClass5.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText
TreeView1.LineStyle = tvwRootLines
TreeView1.Nodes.Add , , "c", "Catégories", 1 ' Véritable père avec un seul noeud et sa clé est "c"
Dim idC, idC2, idC3, idC4 As String, nodX As Node
tvwDB.Nodes.Clear 'effacer tous les noeuds
While Not setClass.EOF
idC = setClass!id_Categorie
Set nodX = TreeView1.Nodes.Add("c", tvwChild, idC, setClass!Int_categorie)
setClass2.Filter = "Id_Categorie='" & setClass!id_Categorie & "'"
While Not setClass2.EOF
idC2 = setClass2!id_Sous - Categorie1
Set nodX = TreeView1.Nodes.Add(idC, tvwChild, idC2, setClass2!Int_Sous - Categorie1)
setClass3.Filter = "id_Sous-Categorie1='" & setClass2!id_Sous - Categorie1 & "'"
While Not setClass3.EOF
idC3 = setClass3!id_Sous - Categorie2
Set nodX = TreeView1.Nodes.Add(idC2, tvwChild, idC3, setClass3!Int_Sous - Categorie2)
setClass4.Filter = "id_Sous-Categorie2='" & setClass3!id_Sous - Categorie2 & "'"
While Not setClass4.EOF
idC4 = setClass4!id_Sous - Categorie3
Set nodX = TreeView1.Nodes.Add(idC3, tvwChild, idC4, setClass4!Int_Sous - Categorie3)
setClass5.Filter = "id_Sous-Categorie3='" & setClass4!id_Sous - Categorie3 & "'"
While Not setClass5.EOF
Set nodX = TreeView1.Nodes.Add(idC4, tvwChild, , setClass5!Denomination)
setClass5.MoveNext
Wend
setClass4.MoveNext
Wend
setClass3.MoveNext
Wend
setClass2.MoveNext
Wend
setuser.Filter = 0
setClass.MoveNext
Wend
setClass5.Close
Set setClas5 = Nothing
setClass4.Close
Set setClas4 = Nothing
setClass3.Close
Set setClas3 = Nothing
setClass2.Close
Set setClass2 = Nothing
setClass.Close
Set setClass = Nothing
' Assure que tous les noeuds soient visibles.
nodX.EnsureVisible
adoRecordSet.Close
adoConnection.Close
Set adoConnection = Nothing
Set adoRecordSet = Nothing
Je me doute qu'il n'est pas facile de retourner dans un code étranger.
Merci d'avance