Hôte VBA: Modèle Objet versus Syntaxe spécifique
Bonjour,
Ce ne sera pas facile de te répondre, surtout que tu ne nous dis rien de l'application hôte que tu veux programmer en VBA.
De quelle application hôte s'agit-il ?
Ensuite, une remarque importante sur l'accès aux "objets de l'application hôte".
L'application hôte fournit un modèle objet qui te permet d'accéder aux objets avec lesquels tu dois travailler.
En général:
- le modèle objet possède un objet Application qui est au sommet de la hiérarchie des objets du modèle.
- l'objet Application donne accès à l'hôte ainsi qu'à des collections d'autres objets. Exemple avec Excel, l'Application donne accès à Workbooks, la collection des classeurs ouverts dans l'application.
- une collection est composée d'objets qui sont les documents de travail, les plans, les images, les formulaires,... les objets sur lesquels tu travaillent vraiment.
Si tu connais l'organisation du modèle de l'application, alors tu peux accéder à n'importe quel objet actuellement utilisé, ou en charger d'autres (ex. ouvrir un fichier de travail ajoute des objets dans les collections du modèle).
En parallèle de ce modèle, l'application hôte peut offrir une syntaxe spécifique qui donne accès aux mêmes objets.
Le principal intérêt de cette syntaxe spécifique est d'offrir des raccourcis, au lieu de "naviguer" dans un modèle objet.
Dans ce cas, l'éditeur VBA permet d'écrire une expression qu'il ne sait pas analyser mais, à l'exécution, c'est l'application hôte qui effectue l'analyse de l'expression et retourne une valeur ou un objet.
En VBA, les éléments de syntaxe spécifique sont souvent isolés au moyen des caractères crochets et composés avec des caractères particuliers (ici c'est l'arobase @, ailleurs on utilise ! ou $, etc.)
Dans le code que tu nous donnes, j'ai l'impression que tu mets justement en oeuvre l'accès aux objets via la syntaxe spécifique à ton hôte.
Mais tu es confronté à une limitation inhérente à la syntaxe spécifique:
tu ne peux pas écrire directement dans l'éditeur de VBA une expression dont des parties sont paramétrées.
Peut-être que l'objet Application fournit une méthode d'évaluation d'une expression :question:
_ comme la méthode Eval() pour Microsoft Access.
Dans ce cas, on construit une chaîne de caractères qui compose l'expression à évaluer, et on la passe explicitement à la méthode d'évaluation (une fonction).
Mais dans ton cas, je pense qu'il vaut mieux laisser de côté la syntaxe spécifique pour t'intéresser au modèle objet et voir comment on peut accéder à l'objet case (?) du séchoir (?) et lire la valeur de l'objet ou propriété poids.
Est-ce clair ?
_