Masquer/afficher les lignes et les colonnes inutiles

Formulation du problème

Supposons que nous ayons une telle table avec laquelle nous devons "danser" tous les jours :

 

Pour qui le tableau semble petit, multipliez-le mentalement vingt fois par zone, en ajoutant quelques pâtés de maisons supplémentaires et deux douzaines de grandes villes. 

La tâche consiste à supprimer temporairement de l'écran les lignes et les colonnes actuellement inutiles pour le travail, c'est-à-dire 

  • masquer les détails par mois, ne laissant que les trimestres
  • masquer les totaux par mois et trimestres, ne laissant que le total pour six mois
  • cacher les villes inutiles pour le moment (je travaille à Moscou – pourquoi devrais-je voir Saint-Pétersbourg ?), etc.

Dans la vraie vie, il existe une mer d'exemples de telles tables.

Méthode 1 : Masquer les lignes et les colonnes

La méthode, franchement, est primitive et pas très pratique, mais on peut en dire deux mots. Toutes les lignes ou colonnes précédemment sélectionnées sur une feuille peuvent être masquées en cliquant avec le bouton droit sur l'en-tête de colonne ou de ligne et en sélectionnant la commande dans le menu contextuel Cacher (Cacher):

 

Pour un affichage inversé, sélectionnez les lignes/colonnes adjacentes et, par un clic droit, sélectionnez dans le menu, respectivement, l’affichage (Afficher).

Le problème est que vous devez traiter chaque colonne et ligne individuellement, ce qui n'est pas pratique.

Méthode 2. Regroupement

Si vous sélectionnez plusieurs lignes ou colonnes, puis sélectionnez dans le menu Données – Groupe et Structure – Groupe (Données — Groupe et Plan — Groupe), alors ils seront mis entre crochets (groupés). De plus, les groupes peuvent être imbriqués les uns dans les autres (jusqu'à 8 niveaux d'imbrication sont autorisés) :

Un moyen plus pratique et plus rapide consiste à utiliser un raccourci clavier pour regrouper des lignes ou des colonnes présélectionnées. Alt+Maj+Flèche droite, et pour dégrouper Alt+Maj+Flèche gauche, Respectivement.

Cette méthode de masquage des données inutiles est beaucoup plus pratique - vous pouvez soit cliquer sur le bouton avec le "+ou-“, ou sur les boutons avec un niveau de regroupement numérique dans le coin supérieur gauche de la feuille – alors tous les groupes du niveau souhaité seront réduits ou développés en même temps.

Aussi, les si votre tableau contient des lignes ou des colonnes récapitulatives avec la fonction de sommer les cellules voisines, c'est-à-dire une chance (pas 100 % vraie) qu'Excel il créera tous les groupes nécessaires dans le tableau d'un seul mouvement - via le menu Données – Groupe et structure – Créer une structure (Données — Groupe et contour — Créer contour). Malheureusement, une telle fonction fonctionne de manière très imprévisible et fait parfois des bêtises complètes sur des tables complexes. Mais tu peux essayer.

Dans Excel 2007 et plus récent, toutes ces joies sont sur l'onglet Données (Date) en groupe   Structure (Présenter):

Méthode 3. Masquer les lignes/colonnes marquées avec une macro

Cette méthode est peut-être la plus polyvalente. Ajoutons une ligne vide et une colonne vide au début de notre feuille et marquons avec n'importe quelle icône les lignes et colonnes que nous voulons masquer :

Ouvrons maintenant Visual Basic Editor (ALT + F11), insérer un nouveau module vide dans notre livre (menu Insertion – Module) et copiez-y le texte de deux macros simples :

Sub Hide() Dim cell As Range Application.ScreenUpdating = False 'Désactiver la mise à jour de l'écran pour accélérer For Each cell In ActiveSheet.UsedRange.Rows(1).Cells 'Itérer sur toutes les cellules de la première ligne If cell.Value = "x " Then cell .EntireColumn.Hidden = True 'if in cell x - hide column Next For Each cell In ActiveSheet.UsedRange.Columns(1).Cells 'passe par toutes les cellules de la première colonne If cell.Value = "x" Then cell.EntireRow.Hidden = True 'si dans la cellule x - masquer la ligne Next Application.ScreenUpdating = True End Sub Sub Show() Columns.Hidden = False 'annuler toutes les lignes et colonnes masquées Rows.Hidden = False End Sub  

Comme vous pouvez le deviner, la macro Cacher se cache et la macro Afficher – Affiche les lignes et les colonnes étiquetées en arrière. Si vous le souhaitez, des raccourcis clavier peuvent être attribués aux macros (Alt + F8 et bouton Paramètres), ou créer des boutons directement sur la feuille pour les lancer depuis l'onglet Développeur – Insertion – Bouton (Développeur — Insérer — Bouton).

Méthode 4. Masquer des lignes/colonnes avec une couleur donnée

Disons que dans l'exemple ci-dessus, nous voulons au contraire masquer les totaux, c'est-à-dire les lignes violettes et noires et les colonnes jaunes et vertes. Ensuite, notre macro précédente devra être légèrement modifiée en ajoutant, au lieu de vérifier la présence de "x", une vérification de la correspondance de la couleur de remplissage avec des cellules d'échantillon sélectionnées au hasard :

Sub HideByColor() Dim cell As Range Application.ScreenUpdating = False For Each cell In ActiveSheet.UsedRange.Rows(2).Cells If cell.Interior.Color = Range("F2").Interior.Color Then cell.EntireColumn.Hidden = True If cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True Next For Each cell In ActiveSheet.UsedRange.Columns(2).Cells If cell.Interior.Color = Range ("D6").Interior.Color Then cell.EntireRow.Hidden = True If cell.Interior.Color = Range("B11").Interior.Color Then cell.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

Cependant, il ne faut pas oublier une mise en garde : cette macro ne fonctionne que si les cellules du tableau source ont été remplies de couleur manuellement, et sans mise en forme conditionnelle (il s'agit d'une limitation de la propriété Interior.Color). Ainsi, par exemple, si vous avez automatiquement mis en surbrillance toutes les offres de votre tableau dont le nombre est inférieur à 10 à l'aide de la mise en forme conditionnelle :

Masquer/afficher les lignes et les colonnes inutiles

… et que vous souhaitez les masquer en un seul mouvement, alors la macro précédente devra être "terminée". Si vous avez Excel 2010-2013, vous pouvez sortir en utilisant à la place de la propriété INTÉRIEUR propriété DisplayFormat.Intérieur, qui affiche la couleur de la cellule, quelle que soit la manière dont elle a été définie. La macro pour masquer les lignes bleues pourrait alors ressembler à ceci :

Sub HideByConditionalFormattingColor() Dim cell As Range Application.ScreenUpdating = False For Each cell In ActiveSheet.UsedRange.Columns(1).Cells If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Then cell .EntireRow.Hidden = Vrai Application suivante.ScreenUpdating = Vrai End Sub  

La cellule G2 est prise comme échantillon pour la comparaison des couleurs. Malheureusement la propriété DisplayFormat n'est apparu dans Excel qu'à partir de la version 2010, donc si vous avez Excel 2007 ou une version antérieure, vous devrez trouver d'autres moyens.

  • Qu'est-ce qu'une macro, où insérer le code macro, comment les utiliser
  • Regroupement automatique dans des listes à plusieurs niveaux

 

Soyez sympa! Laissez un commentaire