IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

TreeView sur 3 niveaux [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 389
    Par défaut TreeView sur 3 niveaux
    Bonjour à toutes et tous,
    Je souhaite faire un TreeView à partir de deux feuilles de calcul.
    Une qui contient des Directions avec chacune des Services qui y sont rattachés.
    Une qui contient des Personnes qui sont rattachées aux Services des différentes Directions.
    La Feuille contenant les Personnes contient également des informations liées aux personnes qui devront s’afficher sur le formulaire en fonction de la personne choisie dans le TreeView.
    La première partie du TreeView fonctionne à partir de la Feuille « Direction » mais les nœuds de la Feuille « Base » qui devraient contenir les personnes n’apparaissent pas.
    Merci de votre aide et conseils.

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 251
    Par défaut
    Hello,
    en pièce jointe le classeur corrigé :
    1 - Il y avait sur certains noms des caractères parasites à la fin (espace etc ...)
    2 - Il n'y avait pas forcément correspondance entre les colonnes de la feuille Base et celle de la feuille Direction (ex : DGA Transition écologique)
    3 - J'ai viré tous les espaces pour les noms de clés
    4 - La construction des clés pour la boucle 2 n'était pas bonne.
    5 - Dans la gestion des erreurs j'ai rajouté Noeudmere parce que Element not found c'est pas très explicite.
    6 - J'ai mis des choses en commentaire dans l'activation du formulaire (pour pas qu'il soit redimensionner).
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Private Sub UserForm_Initialize()
        On Error GoTo ErrorHandler
        Dim Col As Integer, Ligne As Integer
        Dim NoeudMere As String
        Dim NoeudFille As String
        Dim texte As String
     
        ' Check if the "Direction" sheet exists
        If Not SheetExists("Direction") Then
            MsgBox "Sheet 'Direction' not found!"
            Exit Sub
        End If
     
     
        With Sheets("Direction")
            ' Adding parent nodes from the first row of columns 1 to 5
            For Col = 1 To 5
                TreeViewAgent.Nodes.Add , , Replace(.Cells(1, Col).Value, " ", ""), .Cells(1, Col).Value
            Next Col
     
            ' Adding child nodes under each parent node
            For Col = 1 To 5
                Ligne = 2
                NoeudMere = Replace(.Cells(1, Col).Value, " ", "")
                Do While .Cells(Ligne, Col) <> ""
                    NoeudFille = Replace(NoeudMere, " ", "") & "_" & Replace(.Cells(Ligne, Col).Value, " ", "")
                    texte = .Cells(Ligne, Col).Value
                    TreeViewAgent.Nodes.Add NoeudMere, tvwChild, NoeudFille, texte
                    Ligne = Ligne + 1
                Loop
            Next Col
        End With
     
     
        ' Check if the "Base" sheet exists
        If Not SheetExists("Base") Then
            MsgBox "Sheet 'Base' not found!"
            Exit Sub
        End If
     
        With Sheets("Base")
            ' Adding nodes for the "Base" sheet
            Col = 29
            Ligne = 2
            Do While .Cells(Ligne, Col).Value <> ""
                NoeudMere = Replace(.Cells(Ligne, Col).Value, " ", "") & "_" & Replace(.Cells(Ligne, Col - 26).Value, " ", "")
                NoeudFille = .Cells(Ligne, 1).Value
                texte = .Cells(Ligne, 2).Value
                TreeViewAgent.Nodes.Add NoeudMere, tvwChild, NoeudFille, texte
                Ligne = Ligne + 1
            Loop
        End With
        Exit Sub
     
     
    ErrorHandler:
        MsgBox "An error occurred: " & Err.Description & " -> " & NoeudMere
     
     
    End Sub
    Nom : treeview.gif
Affichages : 163
Taille : 281,1 Ko

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  3. #3
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 389
    Par défaut
    Bonjour et Merci jurrassic pork, lorsque je colle le code dans mon classeur original il me renvoi une erreur voir image jointe.
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 251
    Par défaut
    ben normalement dans le code de ton formulaire tu avais la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' Function to check if a sheet exists
    Function SheetExists(SheetName As String) As Boolean
        On Error Resume Next
        SheetExists = Not Sheets(SheetName) Is Nothing
        On Error GoTo 0
    End Function

  5. #5
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 389
    Par défaut
    OK il n'y était plus sur mon formulaire original. Maintenant j'ai une autre erreur
    An error occured: Element not found ->

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 251
    Par défaut
    TU as certainement un noeudMere vide Pour savoir où, met en commentaire On Error GoTo ErrorHandler au début de ta procédure , il y a aura une fenêtre d'erreur et tu verras la ligne incriminée en jaune

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Peupler un TreeView sur de multiples niveaux
    Par digitaldna dans le forum C#
    Réponses: 8
    Dernier message: 31/08/2010, 15h44
  2. Binding d'un TreeView sur plusieurs niveaux avec images
    Par Spikuria dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 25/05/2009, 17h17
  3. Réponses: 3
    Dernier message: 13/02/2007, 16h21
  4. probléme treeview sur access
    Par tbrault_acta dans le forum Access
    Réponses: 3
    Dernier message: 02/06/2006, 15h20
  5. [Hibernate] Héritage sur plusieurs niveaux
    Par srvremi dans le forum Hibernate
    Réponses: 2
    Dernier message: 31/05/2006, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo