Bonjour à tous ,
J'ai été amené à répondre à un membre de XLP (voir la discussion ici) qui demandait comment accéder aux formes de base composant un groupe dont on connait le nom. Les groupes peuvent être imbriqués.
Je pensais qu'avec le nom du groupe une simple boucle suffirait à le faire mais que non m'a répondu le questionneur. Alors j’ai un peu poussé plus loin.
En parcourant les formes d'une feuille, seul un niveau de groupe est accessible. Les autres niveaux semble-t-il restent hors de portée .
Le seul moyen que j'ai trouvé pour accéder aux groupes du niveau suivant est de dissocier tous les groupes du niveau courant et de recommencer un parcours.
Mais dans ce cas, les groupes du niveau actuel disparaissent (pas leurs objets mais le groupe). Il faudrait donc ensuite les recréer mais on perd alors leurs noms par défaut initiaux.
Si on duplique la feuille, tous les noms des groupes sont modifiés. La seule méthode que j'ai trouvée qui conserve les noms est la duplication du classeur. Mais ça entraine un ralentissement.
En résumé, j'ai eu du mal à arriver à mes fins et ça ne me satisfait pas complètement.
Un autre point qui m'a donné du fil à retordre est le fait qu'Excel attribue un nom par défaut aux groupes qu'on crée via la le menu "grouper". Ce nom est francisé "Groupe 5" par exemple. Mais dans les propriétés des objets on trouve le nom par défaut "Group 5" qui est le nom américain (lanque que cause VBA). Alors si on cherche en VBA "Groupe 5" tel qu'affiché dans excel, on ne le trouve point! Il faut en fait chercher "Group 5".
Mais comme je sais que je suis un gars qui pond souvent des trucs alambiqués (et pourtant l’alambic c'est bien, non?), je voulais vous demander si vous aviez une méthode plus simple et/ou plus rapide ?
En général pour ce genre de chose, quelqu'un me sort un code simplissime, rapide, efficace et souvent évident .
D'avance, merci.
nota: je vous ai mis ma production dans un classeur entièrement commenté. C'est-ti pas une jolie attention ça ?
J'ai été amené à répondre à un membre de XLP (voir la discussion ici) qui demandait comment accéder aux formes de base composant un groupe dont on connait le nom. Les groupes peuvent être imbriqués.
Je pensais qu'avec le nom du groupe une simple boucle suffirait à le faire mais que non m'a répondu le questionneur. Alors j’ai un peu poussé plus loin.
En parcourant les formes d'une feuille, seul un niveau de groupe est accessible. Les autres niveaux semble-t-il restent hors de portée .
Le seul moyen que j'ai trouvé pour accéder aux groupes du niveau suivant est de dissocier tous les groupes du niveau courant et de recommencer un parcours.
Mais dans ce cas, les groupes du niveau actuel disparaissent (pas leurs objets mais le groupe). Il faudrait donc ensuite les recréer mais on perd alors leurs noms par défaut initiaux.
Si on duplique la feuille, tous les noms des groupes sont modifiés. La seule méthode que j'ai trouvée qui conserve les noms est la duplication du classeur. Mais ça entraine un ralentissement.
En résumé, j'ai eu du mal à arriver à mes fins et ça ne me satisfait pas complètement.
Un autre point qui m'a donné du fil à retordre est le fait qu'Excel attribue un nom par défaut aux groupes qu'on crée via la le menu "grouper". Ce nom est francisé "Groupe 5" par exemple. Mais dans les propriétés des objets on trouve le nom par défaut "Group 5" qui est le nom américain (lanque que cause VBA). Alors si on cherche en VBA "Groupe 5" tel qu'affiché dans excel, on ne le trouve point! Il faut en fait chercher "Group 5".
Mais comme je sais que je suis un gars qui pond souvent des trucs alambiqués (et pourtant l’alambic c'est bien, non?), je voulais vous demander si vous aviez une méthode plus simple et/ou plus rapide ?
En général pour ce genre de chose, quelqu'un me sort un code simplissime, rapide, efficace et souvent évident .
D'avance, merci.
nota: je vous ai mis ma production dans un classeur entièrement commenté. C'est-ti pas une jolie attention ça ?
- Tout le code pour la fonction est dans le module : ModuleShapeGroup
- Un exemple de code pour utiliser la fonction est dans le module : Module1
- en cellule P2 sélectionner un groupe, en cellule Q2 choisirsi on affiche ou non le groupe puis cliquer sur Hop!
Pièces jointes
Dernière édition: