Cliquer sur une cellule pour afficher/masquer des lignes

flaka36 -  
 flaka36 -
Bonjour,

je vous explique la situation:
je souhaiterai trouver un moyen pour afficher et masquer certaines lignes en cliquant uniquement sur une cellule qui se trouve juste au dessus.
Exemple:
Celluleàcliquer
B2
B3
B4
B5
donc je veux pouvoir masquer ou afficher les cellules(ou lignes) de B2 à B5 juste en cliquant sur "celluleàcliquer"
je connais la méthode pour masquer/ afficher les cellules avec les + et - mais dans ce cas elle ne me convient pas...
Est ce que quelqu'un aurait la solution? je pense qu'il faut travailler dans VBA mais je suis débutant dans ce domaine!

Merci d'avance pour vos réponses

5 réponses

  1. g Messages postés 1285 Statut Membre 578
     
    Bonjour,

    Cliquer sur A1 pour masquer et sur B1 pour afficher.

    Code à copier dans le module de feuille:

    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Address = "$A$1" Then
    Rows("2:5").Select
    Selection.EntireRow.Hidden = True
    End If
    If Target.Address = "$B$1" Then
    Rows("1:6").Select
    Selection.EntireRow.Hidden = False
    Range("C1").Select
    End If
    End Sub

    Cordialement.
    1
  2. g Messages postés 1285 Statut Membre 578
     
    Bonjour,

    Code à copier dans le module de feuille (effacer celui existant):

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
    MasqueRows
    End If
    End Sub

    Code à copier dans un module standard:

    Sub MasqueRows()
    Rows("2:5").Select
    If Selection.EntireRow.Hidden = False Then
    Selection.EntireRow.Hidden = True
    Else: Selection.EntireRow.Hidden = False
    Range("C1").Select
    End If
    End Sub

    Cordialement.
    1
    1. flaka36
       
      Impec!! ca marche parfaitement!
      Maintenant la suite!!^^

      Celluleàcliquer
      B2
      B3
      B4
      B5
      Celluleàcliquer2
      B7
      B8
      B9
      B10
      avec ton code on peut afficher et masquer de B2 à B5 en cliquant sur "Celluleàcliquer"
      Maintenant j'aimerai aussi pouvoir masquer/afficher les cellules de B7 à B10 en clquant sur "Celluleàcliquer2"
      Tout est sur la même colonne.
      Merci pour ton aide
      0
  3. g Messages postés 1285 Statut Membre 578
     
    Tu fais une simple adaptation des codes existants et tu peux continuer avec le même principe:

    Module de feuille:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
    MasqueRows
    ElseIf Target.Address = "$A$6" Then
    MasqueRows_2
    End If
    End Sub

    Module standard:

    Sub MasqueRows()
    Rows("2:5").Select
    If Selection.EntireRow.Hidden = False Then
    Selection.EntireRow.Hidden = True
    Else: Selection.EntireRow.Hidden = False
    Range("C1").Select
    End If
    End Sub
    Sub MasqueRows_2()
    Rows("7:10").Select
    If Selection.EntireRow.Hidden = False Then
    Selection.EntireRow.Hidden = True
    Else: Selection.EntireRow.Hidden = False
    Range("C1").Select
    End If
    End Sub
    1
    1. flaka36
       
      Merci chef! comme depuis le début, tout ce que tu me dis ca marche au top! je suis vraiment novice heureusement que tu es là!
      Maintenant regarde:

      Celluleàcliquer
      B2
      B21
      B22
      B23
      B3
      B31
      B32
      B33
      B4
      B5

      j'aimerai que quand tu cliques sur "Celluleàcliquer" il y ait uniquement B2 B3 B4..qui apparaissent et ensuite seulement en cliquant sur B2, il y ait B21 B22.. qui s'affichent.
      Avec les codes précédents, quand je clique "celluleà cliquer" tout apparait...
      Y'a t'il un moyen pour afficher uniquement les cellules qui nous interessent?
      0
    2. g Messages postés 1285 Statut Membre 578
       
      Je ne peux pas faire ce que tu souhaites, je ne sais même pas si c'est possible.
      Désolé.
      0
    3. flaka36
       
      Pas grave! merci quand même tu m'as beaucoup aidé!
      0
  4. flaka36
     
    Merci pour ta réponse.
    Malheureusement un message d'erreur apparait: "erreur de compilation : end sub attendu" =(
    tu saurais d'ou ca vient?
    0
    1. g Messages postés 1285 Statut Membre 578
       
      Tu as dû mal recopier le code.
      Ne manque t-il pas End Sub en dernière ligne ?
      0
    2. flaka36
       
      nop! je maitrise le copier/coller ^^
      après j'ai modifié les lignes au lieu de mettre "2:5" j'ai mis "2:111" et pareil pour l'autre j'ai mis "2:111"...
      peut être que ca vient de ca, je sais pas
      0
    3. flaka36
       
      Sub Macro5()
      '
      ' Macro5 Macro
      '
      Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
      If Target.Address = "$A$1" Then
      Rows("2:111").Select
      Selection.EntireRow.Hidden = True
      End If
      If Target.Address = "$B$1" Then
      Rows("1:112").Select
      Selection.EntireRow.Hidden = False
      Range("C1").Select
      End If
      End Sub

      ca ressemble à ca!
      0
    4. g Messages postés 1285 Statut Membre 578
       
      Efface ce qui est au dessus de
      Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

      c'est Sub Macro5() qui gêne.
      0
    5. flaka36
       
      Du coup si je supprime Macro5, j'ai plus de nom de macro et quand je lance la macro, il me demande d'en créer 1...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. flaka36
     
    Impec! ca marche parfaitement!
    Maintenant la suite!!^^

    Celluleàcliquer
    B2
    B3
    B4
    B5
    Celluleàcliquer2
    B7
    B8
    B9
    B10
    avec ton code on peut afficher et masquer de B2 à B5 en cliquant sur "Celluleàcliquer"
    Maintenant j'aimerai aussi pouvoir masquer/afficher les cellules de B7 à B10 en clquant sur "Celluleàcliquer2"
    Tout est sur la même colonne.
    Merci pour ton aide
    0