Skip to content
lucas-v edited this page Sep 11, 2013 · 37 revisions

Exporter les modules du projet modifiés à la volée lors d'une sauvegarde

Piste : Utiliser la propriété Saved de VBComponent, et identifier les modules à exporter dans la méthode WorkBook_BeforeSave du fichier Excel contenant le projet.

Pas de Git Commit.

Demander pour les modules du projet qui ne serait pas déclarés dans vtkConfiguration ? Si oui il faut les déclarer à la volée, ou bien une fonction séparée pour les ajouter avant, et dans l'export il n'y a qu'un avertissement.

Tâches à réaliser

  • décider comment traiter les modules présents mais non listés dans la configuration. Fait : on ne les exporte pas et on ne demande pas.
  • faire une fonction pour exporter une configuration (utiliser ExportModulesFromAnotherProject) avec un paramètre optionnel onlyModified (vrai par défaut ?), ou bien ajouter ce paramètre à la fonction existante. Bien tester le comportement (pas de module modifié, un ou plusieurs modules modifiés). Il faudra sans doute créer un nouveau template Excel, ou modifier celui existant mais dans ce cas il faudra modifier des tests existant car la feuille vtkConfiguration ne correspondant pas au contenu réel du fichier Fait
  • Faire un test qui importe un nouveau module (est-il considéré comme sauvegardé ?) Fait
  • Ajouter un handler d'événement BeforeSave dans la version de test de ThisWorkBook, celle de VBAToolKit_DEV. Ce handler doit appeler la fonction précédente. Fait
  • Ajouter des tests de fonctionnement du handler en provoquant une sauvegarde du fichier Excel de Test Fait
  • Lors de la création d'un projet, insérer un handler dans le ThisWorkBook du nouveau projet (le plus simple est d'ajouter les lignes de code "à la main"). Ce handler devra appeler la fonction d'export en précisant le nom du projet VBAToolKit Fait
  • Regénérer l'AddIn et vérifier que les tests de VBAToolKit_DEV continuent à fonctionner Fait
  • Tester l'AddIn à partir d'un Excel propre ; vérifier qu'un nouveau module et un module modifiés sont automatiquement exportésà la sauvegarde du fichier Excel (test manuel) Fait
  • Documenter ce comportement dans la partie utilisateur du Wiki (qu'est ce que ça fait) Fait
  • Documenter ce comportement dans la partie technique du Wiki (comment ça marche) Fait

Proposer des fonctions utilitaires pour les projets

VBAToolKit.testPath, VBAToolKit.getTestFileFromTemplate, VBAToolKit.getTestFolderFromTemplate, VBAToolKit.resetTestFolder

Travail entamé. Ne pas oublier de mettre le wiki à jour.

Post-Traitements Export

Des noms de variables sont écrits différemment par différentes versions d'Excel/VBIDE. Il faut normaliser les exports afin de ne pas polluer les commits par des modifications qui n'en sont pas. L'idée est de vérifier les noms juste après un export : le fichier exporté est lu, transformé, réécrit puis renommé. La liste des noms souvent en erreur sevra être stockée quelque part (en dur dans le code pour l'instant), s'agissant toujours d'erreurs de casse, il suffit de stocker les noms avec la casse correcte. La recherche sera donc insensible à la casse. Exemple de variables à traiter Err, wb.

La [grammaire de VB](http://msdn.microsoft.com/fr-fr/library/aa711636(v=vs.71\).aspx) est disponible sur le site de Microsoft.

Un autre post-traitement possible est l'insertion de la ligne de spécification d'un défaut, par exemple juste après un commentaire prédéfini 'VTK_DEFAULT_PROPERTY

(technique) Représenter vtkConfiguration sous forme de XML

  • il faudrait compléter la configuration pour pouvoir se passer de gérer les Excels sous Git (Title, Comment, ReferencesGUID, ...)
  • Il faudra ajouter un paramètre par module pour définir la méthode par défaut éventuellement (pour ajouter l'attribut à l'export ou à l'import)
  • Ce serait une version 2.0 de vtkConfiguration, il faudra tester la compatibilité ascendante (garder des templates de tests dans les deux versions) - inutile en fait mais permettra de mettre au point le procédé de compatibilité ascendante
  • Cette configuration pourrait contenir aussi un nom de template de fichier (sans macros, ni formulaires) à partir desquels regénérer les versions DEV et Delivery, pour les projets qui ont besoin de feuilles Excel particulières

Importer les modules d'une configuration

Fait en partie, pour la version Delivery de VBAToolKit. À terminer car ne recrée correctement que la version Delivery, et à tester complètement.
Utiliser des fichiers Excel template s'ils sont disponibles (ou bien configuration) -> dans Template reproduire l'arborescence Project - Delivery - Test

Convertir un projet en VBAToolkit

L'objectif est d'aider à convertir un projet, ou un simple fichier Excel, en un projet VBAToolKit. Cette fonctionnalité pourra être décomposée :

  • convertir un fichier Excel simple
  • récupérer dans le projet des fichiers d'accompagnement (Delivery ou Template)
  • récupérer un projet composé de plusieurs fichiers Excel. Ce qui produira vraisemblablement un fichier DEV et plusieurs fichiers Delivery (plusieurs configurations VBAToolkit). Il faudra prévoir un outil qui permette de détecter les composants communs à plusieurs configurations, et d'indiquer les différences entre les différentes implémentations d'un composant commun (déjà de savoir s'il y a des différences).

Exporter une configuration

Ajouter un Module

Type (Module, classe, formulaire), Nom

Ajouter une configuration

Le nom du projet dans Excel dépend du nom de la configuration

Le plus simple est de créer une configuration en clonant une configuration existante

Modifier une configuration

Activer les références dans le fichier Delivery

Les mêmes références que dans le fichier de projet

Supprimer un module

Supprimer une configuration

Créer une classe Tester à partir du Template

Gérer les tags de version dans les noms de fichiers et constantes internes (??)

Faire un module de mise à jour automatique ou à la demande

Ajouter une interface permettant de sélectionner les tests unitaires à exécuter

Ajouter des fonctions utilitaires, par exemple pour les tests

Dans une Lib vtkLib et/ou vtkTestLib qui serait intégrée au projet à sa création.

Intégrer la possibilité de faire des projets Word, Access ou PowerPoint

Clone this wiki locally