Définition varible dans un TreeView

batoine

XLDnaute Nouveau
Bonjour,

Tout d'abord je vous explique rapidement le contexte du problème.
1. J'ai récupéré un fichier .xlsm avec un exemple d'un treeview.
2. Je l'ai ensuite modifié pour mon utilisation.
3. Je l'intègre ensuite à un autre fichier .xlsm. Pour cela j'ai exporté mon userform et le module qui le permet de le lancer. Puis je l'ai importé dans mon fichier global.

Maintenant vient mon problème :
Quand je tente de lancer cette macro, j'obtiens le message d'erreur suivant :
"Erreur de compilation : Variable non définie" ce message est affecté au terme tvwChild de mon treeview.

Comment définit-on ce type de variable ?

J'ai beau chercher sur les différents forum des différents site, je ne trouve pas la solution. J'ai déjà posté mon problème sur le forum excel pratique (Définition varible dans un TreeView : Excel - VBA)


Cordialement,

Antoine


Ps : Voici mon code :
Code:
Option Explicit
Option Compare Text

Dim maPageHtml As HTMLDocument


Private Sub UserForm_Initialize()
    Dim NumCol As Integer, j As Integer
    Dim NumLig As Integer, k As Integer
    Dim Cell As Range
    Dim Image1 As String, Image2 As String
    
    '--- Spécifie les images qui s'affichent dans les noeuds.
        'Les images doivent être dans le même répertoire que le classeur.
        Image1 = ThisWorkbook.Path & "\redball.gif"
        Image2 = ThisWorkbook.Path & "\grnarrow.gif"
        
        'Supprime le contenu de l'ImageList
        Me.ImageList1.ListImages.Clear
        
        'chargement des images
        Me.ImageList1.ListImages.Add 1, "Img1", LoadPicture(Image1)
        Me.ImageList1.ListImages.Add 2, "Img2", LoadPicture(Image2)
        
        'Associe les images au TreeView
        Set Me.TreeView1.ImageList = Me.ImageList1
    '---
    

    'Boucle sur les éléments de la Structure pour remplir le TreeView
    For Each Cell In Sheets("Structure").Range("A1:A" & Sheets("Structure").Range("N65533").End(xlUp).Row)
        NumCol = Cell.End(xlToRight).Column
        NumLig = Cell.Row
        
        If NumCol = 2 Then
            TreeView1.Nodes.Add , , "maClé" & NumLig & NumCol, _
                    UCase(Sheets("Structure").Cells(NumLig, NumCol)), "Img1", "Img1"
            Else
            k = Sheets("Structure").Cells(NumLig, NumCol).Offset(0, -1).End(xlUp).Row
            j = Sheets("Structure").Cells(NumLig, NumCol).Offset(0, -1).Column
            
            'S'il s'agit d'un membre de l'équipe:
            '(Dans ce cas la colonne N contient la lettre "x")
            If Sheets("Structure").Cells(NumLig, 14) = "x" Then
                TreeView1.Nodes.Add _
                    "maClé" & k & j, tvwChild, "maClé" & NumLig & NumCol, _
                                    Sheets("Structure").Cells(NumLig, NumCol), "Img2", "Img2"
                Else
                'S'il s'agit d'un titre de service:
                 TreeView1.Nodes.Add _
                    "maClé" & k & j, tvwChild, "maClé" & NumLig & NumCol, _
                                UCase(Sheets("Structure").Cells(NumLig, NumCol)), "Img1", "Img1"
            End If
        End If
    Next Cell

    TreeView1.Style = 5
End Sub




Private Sub UserForm_Activate()
    'Pour afficher l'UserForm en plein écran
    
    'With Me
        '.StartUpPosition = 3
        '.Width = Application.Width
        '.Height = Application.Height
        '.Left = 0
        '.Top = 0
    'End With
End Sub




'Déploie l'ensemble du TreeView si la checkBox
'"Déployer la totalité de l'arborescence" est cochée.
Private Sub CheckBox1_Click()
    Dim i As Byte
    
    If CheckBox1 Then
        'Boucle sur tous les noeuds du TreeView.
        For i = 1 To TreeView1.Nodes.Count
            TreeView1.Nodes.Item(i).Expanded = True
        Next
    Else
        For i = 1 To TreeView1.Nodes.Count
            TreeView1.Nodes.Item(i).Expanded = False
        Next
    End If
    
    'Positionne le 1er noeud dans la partie visible du TreeView
    TreeView1.Nodes.Item(1).EnsureVisible
End Sub



'Evenement Clic sur un élément du treeView.
Private Sub TreeView1_Click()
    Dim leNom As String, Fichier As String
    
    'Vérifie si l'élément sélectionné correspond à une personne ou à un titre
    'de service.
    '(La colonne N contient la lettre "x" s'il s'agit d'une personne)
    If Sheets("Structure").Cells(TreeView1.SelectedItem.Index, 14) <> "" Then
        'Affiche les informations sur la personne sélectionnée.
        Label2 = TreeView1.SelectedItem.Text
        Label3 = "Téléphone : " & Sheets("Structure").Cells(TreeView1.SelectedItem.Index, 15)
        Label4 = "Fax : " & Sheets("Structure").Cells(TreeView1.SelectedItem.Index, 16)
        Label5 = "Fonction : " & TreeView1.SelectedItem.parent
        
        leNom = TreeView1.SelectedItem.Text
        'Définit l'image associée au nom sélectioné.
        Fichier = ThisWorkbook.Path & "\" & leNom & ".jpg"
            
            'Vérifie si le fichier image existe dans le répertoire
            If Dir(Fichier) <> "" Then
                'Charge l'image si elle existe.
                Image1.Picture = LoadPicture(Fichier)
                Else
                'Sinon fait le ménage dans le contrôle Image
                Set Image1.Picture = Nothing
            End If
    End If

End Sub
 

Discussions similaires

Réponses
18
Affichages
829
Haut Bas