Ce code permet de copier deux treeviews, sur une même fenètre ou sur deux fenètres différentes. De plus, une sauvegarde dans un fichier texte est effectuée.
La fonction d'ouverture de la sauvegarde est un peu barbare et spécifique à un de mes programme, à vous de l'adapté au votre!!!!!
Source / Exemple :
Public Function Copier(Menu_P As TreeView, MenuTree_P As TreeView) As TreeView 'Fonction de copiage de TreeView pour le passage de "gestion de groupes de variable" à la page principale
Dim i%
Dim Node_L As Node 'declaration des variables
Open "tree.txt" For Output As "1" 'on ouvre le fichier de sauvegarde
VBTrend.txtchemin = chemin
For i = 1 To MenuTree_P.Nodes.Count 'Boucle de copiage des différents éléments du treeview
If (i = 1) Then 'Pour la racine
Set Node_L = Menu_P.Nodes.Add(, , MenuTree_P.Nodes(i).Key, MenuTree_P.Nodes(i).Text, MenuTree_P.Nodes(i).Image, MenuTree_P.Nodes(i).SelectedImage)
Set Node_L = MenuTree_P.Nodes(i)
Write #1, MenuTree_P.Nodes(i).Key & ";" & MenuTree_P.Nodes(i).Text & ";" & MenuTree_P.Nodes(i).Image & ";" & MenuTree_P.Nodes(i).SelectedImage 'On écrit au fur et à mesure dans le fichier texte
Else
'Pour le reste de l'arbre
Chaine = groupe.TreeView1.Nodes(i).Parent.Key 'On recupere la cle du noeud précédent
Set Node_L = Menu_P.Nodes.Add(Chaine, tvwChild, MenuTree_P.Nodes(i).Key, MenuTree_P.Nodes(i).Text, MenuTree_P.Nodes(i).Image, MenuTree_P.Nodes(i).SelectedImage)
Set Node_L = MenuTree_P.Nodes(i)
Write #1, MenuTree_P.Nodes(i).Key & ";" & MenuTree_P.Nodes(i).Text & ";" & MenuTree_P.Nodes(i).Image & ";" & MenuTree_P.Nodes(i).SelectedImage 'ecriture dans le fichier
End If
Next i
Close 1
End Function
Public Function ouvrir(file) 'fonction d'ouverture de fichier
Dim Node_L As Node
Dim j As Integer
Dim arbre As String
Dim Posi As Integer 'declaration des variables
Dim Posi1 As Integer
Dim Posi2 As Integer
Dim Mot As String
Dim Mot1 As String
Dim Mot2 As String
Dim ligne1 As String
Dim Chaine As String
Dim bool As Boolean
Open file For Input As "1" 'ouverture du fichier en question
VBTrend.TreeView1.Nodes.Clear 'on efface l'ancien treeview
For i = 1 To NbLignes 'boucle jusq'à la fin du fichier
Line Input #1, arbre 'recuperation des infos ligne par lignes
Posi = InStr(arbre, Chr(59))
If Posi = 0 Then
Mot = arbre
Else
Mot = Left(arbre, Posi - 1)
Mot = Mid(Mot, 2)
ligne = Mid(arbre, Posi + 1)
Posi1 = InStr(ligne, Chr(59))
Mot1 = Left(ligne, Posi1 - 1)
Mot2 = Mid(ligne, Posi1 + 1) 'recuperation des différents éléments du fichier
Mot2 = Left(Mot2, 2)
Posi2 = InStr(Mot2, Chr(59))
Mot2 = Left(Mot2, Posi2 - 1)
Mot2 = Right(Mot2, 1)
'Création de l'arbre
If (i = 1 And Mot1 = "Serveurs") Then
Set Node_L = VBTrend.TreeView1.Nodes.Add(, , Mot, Mot1, 2)
Set Node_L = VBTrend.TreeView1.Nodes(i)
Else
If (i = 4 Or i = 5 Or i = 6) Then
Chaine = VBTrend.TreeView1.Nodes(3).Key
Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 4)
Set Node_L = VBTrend.TreeView1.Nodes(i)
End If
If (i = 8 Or i = 9 Or i = 10) Then
Chaine = VBTrend.TreeView1.Nodes(7).Key
Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 4)
Set Node_L = VBTrend.TreeView1.Nodes(i)
End If
If (i = 7) Then
Chaine = VBTrend.TreeView1.Nodes(2).Key
Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 3)
Set Node_L = VBTrend.TreeView1.Nodes(i)
ElseIf (i = 3) Then
Chaine = VBTrend.TreeView1.Nodes(i - 1).Key
Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 3)
Set Node_L = VBTrend.TreeView1.Nodes(i)
ElseIf (i = 2) Then
Chaine = VBTrend.TreeView1.Nodes(i - 1).Key
Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 1)
Set Node_L = VBTrend.TreeView1.Nodes(i)
End If
End If
End If
Next i
Dim nodNode As Node, intNode, intNode1 As Integer
For intNode = 1 To VBTrend.TreeView1.Nodes.Count
VBTrend.TreeView1.Nodes(intNode).Expanded = True 'on ouvre toutes les branches de l'arbre
Next intNode
Close 1
End Function
Conclusion :
Pour l'appel de la fonction de copie : Copier(destination, source)
Pour l'ouverture de la sauvegarde : Call ouvrir(nom du fichier fichier)
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.