Outils d'aide à la conception et au développement de vos projets VBA, leur évolution.

Dranreb

XLDnaute Barbatruc
Bonjour à tous.
Disons le tout de suite, ce ne sont pas des outils à l'ambition de vous assister partout dans ce domaine.
Non ! Juste des utilitaires qui pourraient vous être bien utiles ponctuellement, et dont j'ai déjà proposé certains à l'occasion.
Je les regroupe ici pour avoir un retour d'expérience des améliorations à y apporter, pour qu'il puissent servir au plus grand nombre.

Scénarios :

À la conception:
Vous avez vu quelque part un CréateObject qui vous a donné l'idée de votre application, vous vous dites "Tiens qu'est ce que c'est exactement ? Où ça se trouve ? Qu'est-ce que ça permettrait de faire d'autre ? Est-ce que j'ai ce qu'il faut pour l'utiliser en auto complétion et avec liaisons anticipées résolues à la compilation ?"
Le Classeur RechObjets.xls peut vous apporter des réponses.

Au développement:
"Pour rendre mes macros indépendantes des emplacements de cellules, ce serait bien que je mettes des noms dans mon classeur…"
Pour définir des plages, mais aussi des expressions je ne souhaite pas utiliser seules dans des cellules mais comme expressions dans d'autres, voire dans les références d'autres noms, et ce en ayant la possibilité de mettre au point la formule dans une cellule et la pomper pour le nom (validation spéciale)
Et pour les plages: pouvoir passer facilement de leur porté classeur à leur portée feuille et pouvoir dupliquer un nom de niveau feuille pour une autre feuille. Et si je pouvais aussi simplement sélectionner la plage pour qu'elle soit proposée en référence.
Avec une bonne vue d'ensemble des noms, ou d'une partie selon leur visibilité, et possibilité d'en expurger d'un coup les canards boiteux: OutilsNoms.xls

À leur évolution:
Dans plusieurs classeurs à la longue, inévitablement. Où se trouvent mes dernières meilleures améliorations dans mes différentes versions, et comment les fusionner identiques partout ? Tout en gardant la possibilité d'intervenir immédiatement et directement dans l'éditeur pour les homogénéisations les plus délicates, sans perdre la possibilité de poursuivre quelques temps plus tard la fusion assistée.
MiseÀNiveau.xls

Je mettrais toutes les améliorations selon vos critiques dans ce premier message. Du moins pour Excel 2003.
Mais il n'est pas interdit à l'un d'entre vous d'initier une réponse dédiée aux version 2010 et au delà, vu que je ne puis effectuer ces adaptations.

Amicalement.
 

Pièces jointes

  • RechObjets.xls
    362.5 KB · Affichages: 149
  • RechObjets.xls
    362.5 KB · Affichages: 155
  • RechObjets.xls
    362.5 KB · Affichages: 152
  • OutilsNoms.xls
    187 KB · Affichages: 109
  • OutilsNoms.xls
    187 KB · Affichages: 122
  • OutilsNoms.xls
    187 KB · Affichages: 117
  • MiseÀNiveau.xls
    536 KB · Affichages: 103
  • MiseÀNiveau.xls
    536 KB · Affichages: 111
  • MiseÀNiveau.xls
    536 KB · Affichages: 113

david84

XLDnaute Barbatruc
Re : Outils d'aide à la conception et au développement de vos projets VBA, leur évolu

Bonjour Dranreb, le forum,
tout d'abord, merci de nous faire profiter de tes utilitaires.
Comme je pense que ce travail mérite une attention particulière, ne serait-ce que pour comprendre réellement son intérêt, et comme je n'arrive pour l'instant pas à utiliser la référence TypeLib Information sur mon Excel 2010 64 bits, j'ai installé une version 2003 sur un portable. Je dois dire que j'ai galéré avoir installer la librairie tlbinf32.dll afin d'utiliser le fichier RechObjet mais j'y suis en fin parvenu.
Je profite de ce message pour savoir si d'autres personnes :
- ont eu des difficultés ou pas à utiliser ce fichier, que ce soit en lançant une recherche de librairie ou objet (onglet recherche 1 initiale) ou un inventaire (onglet inventaire).
- sont parvenus à le faire fonctionner sur une version 2010 64 bit.

Quoiqu'il en soit, je n'ai pour l'instant ouvert que le fichier RechObjet et mes premières questions concernent uniquement ce fichier.
1) quand je lance une recherche de bibliothèque (Scripting par exemple) et que j'appuie sur le bouton Membres les propriétés et méthodes des différents objets apparaissent. Cependant, si je compare la liste des membres d'un objet (Dictionary par exemple) avec celle obtenue en passant par l'explorateur d'objets je m'aperçois qu'elles ne sont pas similaires :
QueryInterface
AddRef
Release
GetTypeInfoCount
GetTypeInfo
GetIDsOfNames
Invoke
n'apparaissent pas dans l'explorateur d'objets. De plus, ces données apparaissent pour chaque membre de chaque objet.
Comment cela se fait ? A quoi correspondent ces donnée ?

2) Etant adepte de l'utilisation d'expressions rationnelles, j'ai tenté de faire une recherche sur les vbsript.dll ou sur les références Microsoft VBScript Regular Expressions 1.0 et 5.5 mais n'ai obtenu aucun résultat.
Y arrives-tu de ton côté ?
Si oui peux-tu décrire pas à pas les différentes étapes pour y parvenir ?

3) Enfin, j'ai également testé l'ajout de la référence dans un classeur et cela est concluant.
Cela fonctionne même sur un fichier dont le contenu est protégé par un code au niveau du Projet VBA : il me semble que cet outil pourrait notamment servir à un utilisateur qui ouvre un fichier protégé et qui obtient une erreur de compilation à l'ouverture. Sous réserve qu'il connaisse les différentes références utilisées dans ce fichier (d'où l'intérêt pour le concepteur d'un fichier protégé d'informer les utilisateurs sur les références optionnelles utilisées dans le fichier), il pourrait ainsi ajouter les références manquantes et rendre par conséquent le fichier utilisable.
Il me semble que rien que pour cela, c'est un super outil.

J'en reste là pour le moment...
A+
 

Dranreb

XLDnaute Barbatruc
Re : Outils d'aide à la conception et au développement de vos projets VBA, leur évolu

Bonjour.
1) - Les membres supplémentaires. À vrai dire je n'en sait rien, c'est ce qu'on trouve en explorant la collection Members d'un membre de la de la collection Interfaces d'un membre de la collection Coclasses de l'objet TLI.TypeLibInfo. Il y aurait sans doute à creuser dans plein d'autres propriétés pour n'afficher que ce qui est réellement utilisable par le programmeur. Ceux que tu as cité apparaissent très souvent dans presque tous les objets.

2) - Aparemment la bibliothèque s'appelle "VBScript_Global" et non "VBScript" tout seul. C'est du moins ce qu'il trouve chez moi quand je tape "VBScript*" Mais il n'y trouve aucun objet. Bizarre.

3) - Merci pour cette appréciation.

À part ça j'ai du apercevoir brièvement sur le net quelque chose à propos de l'enregistrement dans la base de registre d'une DLL pour du 64 bits …
 

david84

XLDnaute Barbatruc
Re : Outils d'aide à la conception et au développement de vos projets VBA, leur évolu

Bonjour Dranreb, le forum,
Aparemment la bibliothèque s'appelle "VBScript_Global" et non "VBScript" tout seul. C'est du moins ce qu'il trouve chez moi quand je tape "VBScript*" Mais il n'y trouve aucun objet. Bizarre.
Ce ne sont pas les mêmes bibliothèques : je parle bien des références Microsoft VBScript Regular Expressions 1.0 et 5.5 pour lesquelles la recherche ne ramène rien.

Sinon, concernant le fichier RechObjets :
- quand on ajoute « Ajout de la référence pour un classeur » et que l’on sélectionne le classeur voulu, le formulaire Références ne montre pas la dernière référence cochée (l’affichage doit être tronqué lors du dimensionnement du formulaire car le code le ramène bien dans la liste).
- L’intérêt de l’onglet « recherche 2 liste » est-il uniquement d’effectuer une autre recherche sans écraser la recherche initiale ou a-t-il un autre intérêt que je n'ai pas compris ?
A+
 

Dranreb

XLDnaute Barbatruc
Re : Outils d'aide à la conception et au développement de vos projets VBA, leur évolu

Bonjour.
Effectivement il trouve pour cette référence un chemin "C:\WINDOWS\system32\vbscript.dll\3" qui n'existe pas. Décidément toute cette organisation est bien mystérieuse et compliquée, d'où l'intérêt d'avoir construit ce classeur pour tenter d'y voir un peu plus clair. cette référence nulle part.
Je regarde pour la rectification de la hauteur de la ListBox et du Userform dans Ajouter plutôt que dans Afficher. L'affichage dès qu'une ligne est trouvée en recherche (pour en être informé au plus tôt) est assez récent.
Les trois feuilles de Recherche sont équivalentes du point de vue de la recherche et donc pour l'analyse de ce qui est trouvé.
Ça permet juste d'en avoir 3 résultats en cours. Simplement le 2ième est aussi adopté d'office pour montré l'analyse d'un ficher de chemin trouvé en référence dans un autre classeur, et le 3ième celle d'un ficher double cliqué dans l'inventaire. Sa constitution a fonctionné au fait ?
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 070
Membres
103 110
dernier inscrit
Privé