treeview

tonton29610

XLDnaute Nouveau
Bonjour à tous,

Dans un userform, j'ai un treeview qui recupère des données dans une feuille.
Je voudrais créer un bouton qui ouvrirait la feuille au niveau du noeud selectionné.

Je n'arrive pas à trouver le bon code.

Quelqu'un peut il m'aider?
D'avance merci.
 

MichelXld

XLDnaute Barbatruc
Re : treeview

bonjour,


Tu peux tester la procédure suivante :

Code:
Option Explicit

Private Sub UserForm_Initialize()
    Dim Ws As Worksheet
    Dim objNoeud As Node
    
    'Définit le nom du classeur comme noeud principal.
    Set objNoeud = TreeView1.Nodes.Add(, , _
        ThisWorkbook.Name, ThisWorkbook.Name)
    objNoeud.Expanded = True
    
    'Boucle sur les feuilles du classeur
    'et affiche les noms dans le Treeview
    For Each Ws In ThisWorkbook.Worksheets
        Set objNoeud = TreeView1.Nodes.Add(ThisWorkbook.Name, _
            tvwChild, Ws.Name, Ws.Name)
    Next Ws
End Sub
 
'Identifie le noeud sélectionné dans le TreeView et affiche 
'la feuille correspondante
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    If Not Node = Node.Root Then _
        Worksheets(Node.Text).Activate
End Sub


bonne journée
michel
Microsoft Excel MVP
 

tonton29610

XLDnaute Nouveau
Re : treeview

Ma feuille de donnée contient plus de 1000 lignes, pour pouvoir facilement la mettre à jour, je voudrais, au moyen d'un bouton sur l'userform, ouvrir la feuille de données, au niveau des données concernées par le (TreeView1.SelectedItem).
Je me suis effectivement inspiré de l'organigramme de silkyroad, comme de sources de ce forum, je ne manque pas de les citées dans mon application si ce n'est pas le cas dans le petit exemple joint.
Merci beaucoup pour ton attention ainsi qu'a tous dans ce forum qui me permettez de progresser, je dirais presque à grand pas.
 

MichelXld

XLDnaute Barbatruc
Re : treeview

rebonsoir


Je ne suis pas sur d'avoir bien compris mais tu peux tester cette adaptation :


Code:
Private Sub CommandButton4_Click()
    Feuil2.Activate
 
    With ActiveWindow
        .ScrollRow = Val(TreeView1.SelectedItem.Key)
        .ScrollColumn = 1
    End With
 
    Unload Me
End Sub
 
Private Sub UserForm_Initialize()
    Dim NumCol As Integer, j As Integer
    Dim NumLig As Integer, k As Integer
    Dim Cell As Range
 
    For Each Cell In Feuil2.Range("A1:A" & Feuil2.Range("N65533").End(xlUp).Row)
        NumCol = Cell.End(xlToRight).Column
        NumLig = Cell.Row
 
        If NumCol = 2 Then
            TreeView1.Nodes.Add , , NumLig & "_" & NumCol, _
             UCase(Feuil2.Cells(NumLig, NumCol))
            Else
            k = Feuil2.Cells(NumLig, NumCol).Offset(0, -1).End(xlUp).Row
            j = Feuil2.Cells(NumLig, NumCol).Offset(0, -1).Column
 
 
            If Feuil2.Cells(NumLig, 14) = "x" Then
                TreeView1.Nodes.Add _
                    k & "_" & j, tvwChild, NumLig & "_" & NumCol, _
                                    Feuil2.Cells(NumLig, NumCol)
                Else
 
                 TreeView1.Nodes.Add _
                    k & "_" & j, tvwChild, NumLig & "_" & NumCol, _
                                UCase(Feuil2.Cells(NumLig, NumCol))
            End If
        End If
    Next Cell
    TreeView1.Style = 5
End Sub



bonne soirée
michel
Microsoft Excel MVP
 
Dernière édition:

Statistiques des forums

Discussions
312 331
Messages
2 087 354
Membres
103 528
dernier inscrit
hplus