Monsieur Excel
Pour tout savoir faire sur Excel !

26 novembre 2015

Macro pour table d’hypothèse

Remarque 1 – Même si je prends dans cet article l’exemple du modèle de location analysé dans les articles précédents, ce que je vais dire concerne l’utilisation des tables de façon totalement générale. Vous avez donc intérêt à lire l'article de ce jour même si l’exemple de locations d’appartements ne vous intéresse pas…

Dans l’article du 4 novembre, nous avons vu comment affiner notre analyse du problème de location d’appartements en réalisant deux tables d’hypothèse, une table « à une dimension » dans laquelle nous analysions les valeurs de deux variables, la marge brute et la rémunération et une table « à deux dimensions » pour la seule rémunération.

Comme je l’indiquais dans cet article, la coexistence des deux tables multiplie par 877 le temps de calcul du modèle, ce qui peut rapidement devenir insupportable pour un modèle plus lourd.

Quand je réalise des tables pour les modèles de mes clients en conseil, je m’efforce d’éviter de tomber dans cette situation. En fait, quand je crée une table, je lui associe en général un bouton macro permettant de lancer la création et le calcul de la table. Cela ne pose en général pas de problème car, le plus souvent, on n’a pas besoin qu’une table reste « dynamique », c’est-à-dire se calcule en permanence : on a simplement envie de la consulter à la demande.

J’enregistre donc une macro dans laquelle je réalise les opérations suivantes :
  • création de la première table ;
  • sélection de l’intérieur de la table puis copie ;
  • collage spécial des valeurs ;
  • [Esc], pour ôter le liseré du copier/coller ;
  • clic dans le coin supérieur gauche.
J’obtiens alors la macro ci-dessous, que j’ai appelée « Table_enreg ».

Comme vous le constaterez aussitôt si vous connaissez un tant soit peu le VBA, cette macro fonctionne très bien mais n’est pas particulièrement efficace.

Après quelques retouches, j’obtiens alors la macro « Table_1 », qui est bien plus courte et performante.


Remarque 2 – Un pro du VBA remplacerait immédiatement les coordonnées utilisées dans la macro par des noms, afin que la macro continue à fonctionner si l’utilisateur insère ou détruit des lignes ou des colonnes.

Remarque 3 – Il ne reste plus qu’à créer un bouton macro en utilisant la commande « Insérer » du bloc « Contrôle » de l’onglet « Développeur », en prenant le bouton macro du bloc « Formulaires » et en l’associant à la macro « Table_1 »…

Remarque 4 – Notez comment nous avons évité de copier/coller les valeurs, ce qui nous a permis en prime d'éliminer la commande (CutCopyMode) ôtant le liseré du copier/coller ainsi que la sélection finale de H2.