Afficher des lignes cachées en cliquant dans une cellule

yolojo

XLDnaute Occasionnel
Bonjour à tous,
Je souhaiterez faire afficher des lignes cachées juste en cliquant sur une cellule au dessus de ces lignes.
Pour être plus clair, je souhaite afficher le contenu des lignes 2 à 5 juste en cliquant dans la cellule A1. idem avec les lignes 7 à 9 avec la cellule A6 et ainsi de suite.
En sachant que les lignes cachées peuvent avoir un nombre de ligne différents à chaque fois.
Si vous avec une solution pour les lignes, il est sans doute possible de le faire également pour les colonnes ?
Je vous joint un petit fichier pour le test.
Merci d'avance
Cordialement
 

Pièces jointes

  • test.xlsx
    8.3 KB · Affichages: 22

yolojo

XLDnaute Occasionnel
Merci de ta réponse Staple1600.
C'est effectivement ce que je fait avec mon fichier final, mais celui-ci comporte près de 500 lignes et valider par + ou - à chaque ligne et ce n'est pas très pratique.
Si il n'y a pas de solution plus simple, je m'en contenterais
Merci quand même
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir yolojo, staple1600,

Un essai dans le fichier joint. Le code est dans le module de la feuille "Feuil1".

  • un clique-droit sur une cellule non vide de la colonne A affiche les lignes masquées (à condition que les cellules masquées de la colonne A soient vides)
  • un clique-droit sur une cellule non vide de la colonne A masque les lignes affichées (à condition que les cellules masquées de la colonne B soient non vides)
  • si on désire le menu contextuel d'une cellule non vide de la colonne A, utilisez la touche "menu contextuel du clavier"
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i&
   If Target.Count = 1 Then
      If Target.Column = 1 Then
         Application.ScreenUpdating = False
         If Target <> "" And Target.Offset(1).EntireRow.Hidden = True Then
            Cancel = True
            i = 1
            Do While Target.Offset(i).EntireRow.Hidden = True
               Target.Offset(i).EntireRow.Hidden = False
               i = i + 1
            Loop
         ElseIf Target <> "" And Target.Offset(1).EntireRow.Hidden = False Then
            Cancel = True
            i = 1
            Do While Target.Offset(i) = "" And Target.Offset(i, 1) <> ""
               Target.Offset(i).EntireRow.Hidden = True
               i = i + 1
            Loop
         End If
      End If
   End If
End Sub


edit : v1a correction mineure
 

Pièces jointes

  • yolojo- masquer afficher lignes- v1a.xlsm
    15.9 KB · Affichages: 32
Dernière édition:

yolojo

XLDnaute Occasionnel
Merci beaucoup mapomme, c'est tout à fait ce que je souhaitais faire.
Même si je ne comprends rien au code, c'est super.
Par contre, serait-il possible d'avoir une traduction de ce code et surtout les paramètres à changer si je veux changer les cellules de selection.
Encore merci et bravo
Cordialement
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Par contre, serait-il possible d'avoir une traduction de ce code et surtout les paramètres à changer si je veux changer les cellules de selection

Voici la version v1b (laissez tomber la v1a). J'ai ajouté :
  • une condition de ligne de début d’application de la macro
  • des commentaires pour adapter le code à votre zone de données et comprendre la macro
 

Pièces jointes

  • yolojo- masquer afficher lignes- v1b (commenté).xlsm
    17.6 KB · Affichages: 41

yolojo

XLDnaute Occasionnel
Merci beaucoup pour ces explications
C'est un peu plus clair pour moi maintenant.
Par contre et tu vas dire que je suis pénible (et tu auras raison !), mais y aurait-il une solution pour que cela fonctionne avec des données dans toutes les cellules qui sont cachées y compris la colonne D comme par exemple si les valeurs des elements (colonne E) se trouve en colonne D ou en A ou tout autres colonnes y compris la D.
Encore merci pour ce superbe travail
Cordialement
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour yolojo,

y aurait-il une solution pour que cela fonctionne avec des données dans toutes les cellules qui sont cachées y compris la colonne D comme par exemple si les valeurs des elements (colonne E) se trouve en colonne D ou en A ou tout autres colonnes y compris la D.

Et une fois qu'on a affiché les lignes d'un groupe, quel est le critère pour masquer à nouveau les lignes. En gros, comment repère-t-on la première ligne où arrêter de masquer les lignes ?
Donc une fois les lignes affichées, quels sont critères pour savoir si on doit masquer ou non une ligne, quels sont les critères pour repérer les débuts et fins de groupe ?
 

yolojo

XLDnaute Occasionnel
j'ai bien compris que tu te bases sur la colonne ou les cellules sont vides pour pouvoir determiner la dernière ligne à masquer. Ne serait-il pas possible de paramétrer cette colonne (modifiable en fonction des documents) en insérant par exemple des symboles ou des 0 et des 1en fonction des lignes à masquer ou pas ?
Cette colonne pourrait se trouver n'importe où et on aurait juste à saisir la position de cette colonne dans le code.
Dans mon cas, les 56 premières colonnes sont remplies, je pourrais donc utiliser la 57ème.
Mais je voudrais utiliser ce code dans d'autres fichiers avec moins de colonne voir des colonnes vides au milieu.
Merci d'avance
 

Discussions similaires

Réponses
93
Affichages
1 K