Compiler de nombreuses macros presque identiques

Bonjour à toutes et tous,

Voici mon problème, j'ai récupéré un plan (une carte) sous Excel 2010. Ce plan comporte de nombreux objets, en particulier des rectangles (bâtiments). J'ai fabriqué une macro grâce à l'enregistreur qui permet de choisir le rectangle dans un tableau (qui permet en outre de connaître la destination et la nomenclature de ce bâtiment). J'ai adjoint un bouton sur la même ligne du tableau. Le plan est très grand et la macro permet de zoomer sur la zone où il se situe et en change le fond en rouge. Ce bâtiment est doté d'un hyperlien qui renvoie sur la ligne du tableau avec un bouton macro qui dé-zoome et remet la couleur de fond d'origine du rectangle. Si l'on part de plusieurs dizaines d'objets et que l'on multiplie par deux, on obtient de très nombreuses macros avec juste quelques variables qui changent.

Voici ma question : est-il possible de "raccourcir" tout ce code ?

Par exemple une box dans laquelle on rentrerait le nom du rectangle ou du bâtiment (qui retrouverait le nom du rectangle par une recherchev() ?) et réaliserait les mêmes opérations en validant (zoom et changement de couleur).

Et aussi comment revenir à l'état initial ?

J'espère que je suis clair.

Merci à tous ceux qui prendront la peine de se pencher sur mon problème.

Cordialement.

Bonjour chriselon et bienvenue sur le forum,

Je pense que j'ai compris l'idée mais pour en être sûr il serait bien de fournir un fichier exemple avec les macros.

Merci,

Sha'

Bonjour,

Une procédure pour "zoomer", une autre pour "dézoomer". Et une pour lancer le processus. En principe tu ne devrais avoir besoin de rien de plus.

Ta proc. "zoom" doit comporter un argument qui lui est passé pour identifier le rectangle. A partir de là, la même proc. doit pouvoir réaliser l'action sur n'importe quel rectangle...

Dans la mesure où tu choisis le rectangle dans un tableau, une procédure de lancement doit pouvoir identifier ta position, donc le rectangle que tu veux, et lancer la proc. "zoom".

Et pour "dézoomer" cela ne peut s'appliquer qu'à ce qui a été zoomé. Il y a juste à prévoir que ces proc. sont alternatives : qu'on ne peut zoomer deux fois de suite sans avoir dézoomé et vice-versa.

Cordialement

Ferrand

Bonjour,

J'ai refait un petit fichier pour être plus explicite.

Les boutons en bleu zooment et changent la couleur,

Ceux en rouge rétablissent la couleur et le zoom,

Les objets sont dotés d'hyperliens qui renvoient dans le tableau qui disparaît à cause du zoom.

J'espère que c'est plus clair ainsi.

Cordialement.

3classeur1.xlsm (24.73 Ko)

Un premier système possible pour illustrer les possibilités.

Une seule macro qui va tout faire.

Plus de boutons pour la lancer. Un clic sur la forme sur laquelle on veut zoomer la lance. Un autre clic sur une forme de bâtiment dézoome. Plus d'hyperliens également.

Les formes bâtiment ont été renommées avec les noms figurant en "destination".

Les zones de texte ont été renommées avec "tb_" suiviede l'indication figurant dans la liste "bâtiment".

La liste destination est nommée. Lorsque qu'un bâtiment doit être zoomé (ou dézoomé), la macro peut chercher son nom dans la liste "destination" et récupère ainsi le nom de la zone de texte correspondante.

La macro fonctionne alternativement, elle dézoome quand c'est zoomé et vice-versa.

Quand elle zoome, elle mémorise le bâtiment et sa couleur avant de le passer au rouge, afin de pouvoir rétablir la couleur en dézoomant. Elle rend visible la zone de texte (non visible autrement).

La gestion d'erreur ne vise qu'à empêcher, si une erreur survient sur la recherche de la zone de texte ou son nom, que la couleur initiale se perde : elle la rétablit donc en cas d'erreur et dézoome.

Je ne sais pas si ton schéma est totalement représentatif du plan dont tu parlais... Il y aurait d'autres réglages à faire pour centrer sur la forme zoomée (question qui ne se pose pas sur le modèle).

Cordialement

Ferrand

Bonjour et merci pour ce code qui correspond en partie à ce que souhaite. Est-il possible de compléter comme ceci :

le clic sur le bâtiment donne le numéro et la fonction (destination)

Le plan étant vraiment très grand et très "fouillis" il faudrait aussi qu'un clic sur le nom du bâtiment fasse la sélection et le zoom, un peu comme un préposé des postes cliquerait sur une liste pour visualiser le bâtiment recherché de façon à le localiser sur le plan.

Merci encore.

Possible sur double-clic ou clic droit (pour pouvoir utiliser un évènement).

Il faudrait un modèle plus fourni pour évaluer comment centrer dans la fenêtre le bâtiment cherché.

Merci, mais je suis un néophyte total, j'essaie de joindre le fichier original mais il est trop gros 1,33 MO. Comment faire ?

Cordialement.

http://cjoint.com

pour l'héberger, et tu mets le lien.

Bien récupéré ton fichier.

Evidemment on n'est pas à la même échelle. Je ne vais pas avoir le temps de le décortiquer dans l'immédiat...

Il n'y a en pricincipe pas de raison que le type de solution que je proposais ne puisse s'appliquer mais ça demandera un peu plus de temps, car renommer 4 formes, je le fais manuellement, ça va plus vite. Là je vais le faire par macro mais après un examen pour m'assurer que l'opération est possible pour toutes...

Je te tiens au courant.

Bonne soirée

Ferrand

Merci beaucoup pour le temps que tu passes pour m'aider.

Cordialement.

Je me suis livré à un premier inventaire : lister les objets Shape (forme) et recueillir quelques infos.

747 objets apparaissent dans la liste (infos sur 6 colonnes) :

A- Nom de la forme

B- Adresse de la cellule située sous l'angle inférieur droit de la forme

C- Couleur

D- Inscription dans la forme

E- Inscription dans la cellule visée en B

F- Numéro d'ordre (correspond en principe à l'ordre de création)

Petit récapitulatif : nombre de formes par type.

Il va falloir débroussailler tout ça...

A+

9inventaire.xlsx (41.07 Ko)

Merci encore. A+

Bonjour,

Je viens un peu aux nouvelles.

Ma demande est-elle réalisable ?

Y a-t-il une autre solution pour mettre en évidence un objet à choisir parmi l'ensemble ?

Cordialement et merci.

Bonjour,

Tu fais bien de te signaler ! Je viens de voir que ton projet ne figurait pas dans ma liste des questions à traiter : je l'inscris, pour aller y voir dès que possible.

Mais je suis en "vacances", et avec 4 ou 5 projets déjà en cours...

Cordialement

Merci encore, c'est sympa de ta part.

Cordialement.

Coucou, tu penses à moi ?

Cordialement.

Bonsoir,

Je ne me suis pas encore plongé dans ton plan. Il y a beaucoup d'éléments... Ma question serait : es-tu en mesure de lister les bâtiments que tu souhaites visualiser ?

Et quel type d'identification mettre en place ? Car aucun nom, ce qui conduit à mettre des numéros, ce qui n'est pas très parlant.

Cordialement

Rechercher des sujets similaires à "compiler nombreuses macros presque identiques"