La macro principale

Nous allons à présent enregistrer la macro du bouton "variable 2". Grosso modo, cette macro fait d'un coup ce que feraient les macros "var2" et "tableau" en les exécutant l'une après l'autre (notez que cette macro ne peut pas s'enregistrer en se contentant d'exécuter "var2" puis "tableau", le résultat étant désastreux).

  1. La macro voulue va donc coller, en colonne B de la feuille "formules", une certaine plage pré-copiée de la feuille "data", puis créer le tableau croisé des colonnes A et B. Si vous voulez voir ce que vous faites pendant l'enregistrement de cette macro, vous avez intérêt à éxécuter l'une des 6 macros "sexe", "mois", ... AVANT de commencer l'enregistrement.
  2. Il y a une autre difficulté (imprévisible tant qu'on n'a pas testé) dans l'enregistrement de cette macro : il se trouve qu'"OpenOffice" ne met pas à jour le tableau croisé lorsqu'on choisit d'autres variables et qu'on rééxécute la macro !
    Il va donc falloir rafraîchir le tableau, alors que pendant l'enregistrement tout a l'air de se passer bien et qu'on n'en voit donc pas l'intérêt...
  3. Voyons les détails. Vous êtes dans la feuille "utilisateur" ; vous avez (par exemple) déjà mis "langue" en variable 1 puis vous avez pressé le bouton "bac". On commence alors l'enregistrement.
    • Aller dans "formules", coller en B1 puis écrire "var2" en B1 (si ce n'est déjà fait).
    • Sélectionner la plage des deux variables en colonnes A et B (sélectionner A1 peut suffire) et activer le menu Données > Tableau croisé.
    • Choisir vos champs et penser aux options (pas de totaux marginaux ni de filtre, choix de la cellule où sera créé le tableau), puis créer le tableau.
    • À présent, sélectionner une cellule de ce tableau (par exemple celle en haut à gauche) et le rafraîchir (Données > Tableau croisé > Actualiser). Cela ne fait apparemment rien de plus, mais c'est essentiel.
    • Revenir dans la feuille "utilisateur", c'est fini !
  4. Cette macro sera enregistrée dans le module "boutons_NOM", et on l'appellera également "var2". Il ne reste qu'à lui donner son bouton.

Vous allez certainement avoir envie de tester cette macro avec d'autres variables. Mauvaise surprise : le tableau n'est pas rafraîchi malgré tous ces efforts !
C'est un autre petit bug d'OpenOffice, mais celui-ci est facile à rectifier. Éditez cette macro "var2" (Outils > Macros > Gérer les macros > OpenOffice.org Basic...) et regardez les dernières lignes de code (un peu avant la dernière ligne end sub). Vous allez trouver ceci :

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:RecalcPivotTable", "", 0, Array())

Effacez le deuxième rem pour obtenir

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:RecalcPivotTable", "", 0, Array())

puis sauvez. Maintenant, votre macro devrait fonctionner !