Afficher et masquer des lignes - VBA - Arborescence

  • Initiateur de la discussion Initiateur de la discussion MarcMad
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MarcMad

XLDnaute Nouveau
Bonjour,

J'ai un ficher Excel me permettant d'afficher et de masquer des lignes en VBA suivant différentes cases à cocher.
J'aimerais créer une arborescence au lieu des case a cocher.

Voici la structure de l'arbre

1) Ensemble de murs

2) Isolation

3) Option murs
3.1) Vis SDS
3.2) Membrane
3.3) Contre-plaqué
3.4) Ancrage

4)Camurlat
4.1)Camurlat Murs
4.2)Camurlat Murs 2
4.3)Camurlat Plafonds

5) Feme de toit

6) Ensemble de placher
6.1) Vrac de plancher

7) Option Module

Voici mon fichier
 

Pièces jointes

En fait, l'arborescence doit permettre permettre de masquer et de réafficher des lignes du classeur.

ex:

1) Ensemble de murs - Masquer / afficher les lignes 20 à 33


2) Isolation - Masquer / afficher les lignes 34 à 40

3) Option murs - Masquer / afficher les lignes 41 à 48
3.1) Vis SDS - Masquer / afficher les lignes 42
3.2) Membrane - Masquer / afficher les lignes 43
3.3) Contre-plaqué - Masquer / afficher les lignes 44
3.4) Ancrage - Masquer / afficher les lignes 45 à 48

4)Camurlat - Masquer / afficher les lignes 49 à 54
4.1)Camurlat Murs - Masquer / afficher les lignes 50 à 51
4.2)Camurlat Murs - Masquer / afficher les lignes 52
4.3)Camurlat Plafonds - Masquer / afficher les lignes 53 à 54

5) Feme de toit - Masquer / afficher les lignes 55 à 64

6) Ensemble de plancher - Masquer / afficher les lignes 65 à 73
6.1) Vrac de plancher - Masquer / afficher les lignes 70 à 73

7) Option Module - Masquer / afficher les lignes 74 à 79
 
Le plus simple est de vous inspirer du fichier .xlsm joint contenant cette macro :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim s
s = Split(Target, "#")
If UBound(s) < 1 Then Exit Sub
If TypeName(Evaluate(s(1))) <> "Range" Then Exit Sub
Cancel = True
Rows(s(1)).Hidden = Not Rows(s(1))(1).Hidden 'affiche ou masque
End Sub
 

Pièces jointes

Fichier (2) avec les CheckBox :
VB:
Private Sub CheckBox1_Click()
Rows("4:8").Hidden = Not CheckBox1
End Sub

Private Sub CheckBox2_Click()
Rows("9:20").Hidden = Not CheckBox2
CheckBox3 = CheckBox2
End Sub

Private Sub CheckBox3_Click()
Rows("13:16").Hidden = Not CheckBox3
End Sub
 

Pièces jointes

J'avais oublié l'initialisation de l'arbre :
VB:
Sub Userform_Activate()

With TreeView1.Nodes
    .Clear
    .Add(Key:="N1", Text:="Ensemble de murs").Tag = "20:33"
    .Add(Key:="N2", Text:="Isolation").Tag = "34:40"
    .Add(Key:="N3", Text:="Options murs").Tag = "41:48"
        .Add("N3", tvwChild, "N3C1", "Vis SDS").Tag = "42:42"
        .Add("N3", tvwChild, "N3C2", "Membranes").Tag = "43:43"
        .Add("N3", tvwChild, "N3C3", "Contre-Plaqué").Tag = "44:44"
        .Add("N3", tvwChild, "N3C4", "Ancrages").Tag = "45:48"
    .Add(Key:="N4", Text:="Camurlat").Tag = "49:54"
        .Add("N4", tvwChild, "N4C1", "Murs").Tag = "50:52"
        .Add("N4", tvwChild, "N4C2", "Murs 2").Tag = "52:52"
        .Add("N4", tvwChild, "N4C3", "Plafonds").Tag = "53:54"
    .Add(Key:="N5", Text:="Ferme de toit").Tag = "55:64"
    .Add(Key:="N6", Text:="Ensemble Plancher").Tag = "65:73"
        .Add("N6", tvwChild, "N6C1", "Vrac Plancher").Tag = "70:73"
    .Add(Key:="N7", Text:="Option module").Tag = "74:79"
End With
  
' Initialisation des Checkboxes selon la Feuille active
' """""""""""""""""""""""""""""""""""""""""""""""""""""
    For Each Node In TreeView1.Nodes
        Node.Checked = Not Rows(Node.Tag).Hidden
        Node.Expanded = True
    Next
' """""""""""""""""""""""""""""""""""""""""""""""""""""


End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour