Un double-clic pour masquer/démasquer des lignes

Dans mon précédent post, j'expliquais comment grouper des cellules.

Je vous propose ici une solution alternative utilisant un double clic sur une cellule, donc une procédure événementielle.

L'avantage principal de cette solution est de pouvoir faire un double-clic directement dans la feuille et au dessus de la zone à grouper/dégrouper.
pratique si on veut faire une série d'explications à masquer ou afficher rapidement.

Vous pouvez trouver le fichier ici.

Le code se trouve attaché à la feuil1 : faire un clic droit sur l'onglet et choisir de visualiser le code.

Il faut aussi regarder le code se trouvant dans le module 1 pour la procédure masque.

Le code est largement commenté.

J'ai aussi ajouté une mise en forme conditionnelle qui permet de mettre la cellule en vert ou en rouge, si celle ci contient un + ou un -.

Ce fichier peut largement être amélioré, par exemple
- en spécifiant une plage entière à masquer plutot que le haut de la plage (ce qui permet de prendre en compte des ajouts de lignes dans la zone à masquer),
- en gérant plusieurs types de masquage : remplacement ou non du titre par +/-, autres types de mise en forme conditionnelles, etc...
- gestion du groupage de la même manière qu'Excel le fait.

Si vous avez d'autres idées, n'hésitez-pas à vous exprimer !

A bientot.

Gaetan

Pour marque-pages : Permaliens.

11 réponses à Un double-clic pour masquer/démasquer des lignes

  1. Christophe dit :

    Merci bcp pour votre intéressante et très pratique solution. Néanmoins, elle ne fonctionne pas si d’autres cellules / plages sont nommées (Name) sur d’autres feuilles (ex: feuil2!$A$1 = cell_name). Le message d’erreur “La méthode Range de l’objet Worksheet a échoué”. Avez-vous une solution ?

  2. Gaetan dit :

    Je viens de corriger l’erreur.

    Merci.

    Gaetan

  3. Christophe dit :

    comment puis-je accéder au fichier modifié ??

  4. Gaetan dit :

    Le lien est le même que plus haut (ici) :
    https://www.xlerateur.com/groupe.zip

    Cordialement

    Gaetan

  5. Christophe dit :

    Aucune modification n’est apportée au document groupe.zip ! La même erreur est toujours là : sur la feuille 1, tout fonctionne parfaitement jusqu’au moment où ne nomme une cellule (définir un nom) dans la feuille 2 (égal si nomme avec ou sans grp). Alors apparaît le message d’erreur en question. Avez-vous bien uploadé le bon fichier (corrigé) ? merci d’avance !

  6. site admin dit :

    Non, c’était pas le bon, je suis un peu fatigué 😉

    https://www.polykromy.com/blog/groupe2.zip

    Ca devrait aller cette fois.

    Gaetan

  7. Christophe dit :

    Merci pour le correctif.

    J’ai un problème qui subsiste : la procédure de masquage/démasquage des lignes s’effectue correctement mais j’ai quand même un message d’erreur qui survient ” Erreur définie par l’application ou l’objet ” avec blocage au niveau :

    If nom.RefersToRange.Worksheet.Name = Me.Name Then

    Une idée sur l’origine de la panne ?

    Par ailleurs, un autre minibug persiste si un utilisateur à la mauvaise idée de nommer une cellule grp, sans la suite, en particulier sans le “_”, évidemment ça bloque 😉

  8. Christophe dit :

    Un petit ajout :

    En fait ce message d’erreur survient quelque soit la case dans laquelle je double-clique dans cette feuille 🙁

  9. Christophe dit :

    Désolé de revenir à la charge, mais je souhaiterais vraiment utiliser votre code pour afficher ou non les lignes (très pratique dans mon projet) mais seul subsiste cette runtime error 1004, “erreur définie par l’application ou l’objet” à la ligne :
    If nom.RefersToRange.Worksheet.Name = Me.Name Then

    Pouvez-vous m’aider ou m’indiquer ou trouver de l’aide ?

    Merci d’avance

  10. Gaetan dit :

    Pouvez vous m’envoyer le fichier, je n’arrive pas à reproduire le problème

    A bientôt

    Gaetan

  11. Gaetan Mourmant dit :

    Cela provient du fait qu’il existe des noms avec des #ref (par exemple suite à la suppression d’une feuille).

    En principe, en supprimant les noms, cela devrait fonctionner.

    On peut aussi ajouter un test dans le code pour vérifier ce problème.

    A bientôt

    Gaetan

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.