Afficher et masquer des lignes - VBA - Arborescence

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

  • Arbre.xlsm
    49.5 KB · Affichages: 30

MarcMad

XLDnaute Nouveau
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
 

job75

XLDnaute Barbatruc
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

  • Masquer(1).xlsm
    15.7 KB · Affichages: 12

job75

XLDnaute Barbatruc
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

  • Masquer(2).xlsm
    24.4 KB · Affichages: 14

fanch55

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 882
Membres
103 010
dernier inscrit
Sys974