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
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 ?
Je viens de corriger l'erreur.
Merci.
Gaetan
comment puis-je accéder au fichier modifié ??
Le lien est le même que plus haut (ici) :
https://www.xlerateur.com/groupe.zip
Cordialement
Gaetan
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 !
Non, c'était pas le bon, je suis un peu fatigué 😉
https://www.polykromy.com/blog/groupe2.zip
Ca devrait aller cette fois.
Gaetan
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 😉
Un petit ajout :
En fait ce message d'erreur survient quelque soit la case dans laquelle je double-clique dans cette feuille 🙁
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
Pouvez vous m'envoyer le fichier, je n'arrive pas à reproduire le problème
A bientôt
Gaetan
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