Explication "Application"

Bonjour à tous,

Quelqu'un peut-il me dire à quoi se référe le terme "Application" dans un code VBA ?

Je n'ai pas trouvé d'explication sur le Web...

Ni de déclaration de variable

Je suppose qu'on parle là de l'application active...

mais ça reste encore flou pour moi.

Une Explication serait la bien venue...

Merci à tous

Bonjour,

Le terme "Application" est employé pour la panoplie d'outils que Microsoft associe à Windows et en particulier pour la suite Office : Excel, Word, PowerPoint, Outlook, Access, ...

Donc "Application" dans VBA se réfère par défaut à l'outil dans lequel on est.

bonjour thev

je suis nul en VBa ......... because avec de telles explications "chaldeennes" pas etonnant pour le coup , ce n'est pas dans l'outil que "nous" sommes ; mais d'avantage dans le gaz

N'eut il pas mieux valu dire que si on emploie Application

1) c'est parce que , on veux faire qque chose ; alors pour mettre en branle on peux utiliser çà

2) application doit toujours etre suivi d'un . (point)

3) a la suite de ce point on fait suivre une "action" ( une fonction ......) et pas n'importe quoi (l'ideal serait de trouver une liste de ce que l'on peut mettre avec qques exemple ( application .sum pour faire une addition ; . match pour Equiv ......) mais ça il faut le deviner ;pas la peine de chanter lachanson de F1 (c'est du russe )

bref les explications de tout poils sont reservées aux initiés (ceux qui on un minima de prerequis)

cordialement

salut tulipe,

C'est tout à fait utile de rappeler l'utilisation pratique de l'objet Application dans Excel :

  • exécution d'une fonction, on peut citer aussi : Application.Transpose, Application.CountA (nbval)
  • exécution d'une action, on peut citer : Application.Evaluate (calcul formule), Application.GetOpenFilename (ouverture fichier), Application.Goto (sélection), Application.OnKey (code associé à une clé clavier), Application.OnTime (code différé), ...
  • positionnement d'un paramètre, on peut citer : Application.DisplayAlerts, Application.EnableEvents, Application.CutCopyMode, ...

Salut Tulipe... Thev...

Lorsque l'on tape Application dans l'Aide VBA, le premier article listé qui apparaît est : Application.Application.

Je me suis longtemps demandé pourquoi il en était ainsi, mettant un temps la chose sur le compte d'un ordre alphabétique... (manifestement à tort, les rubriques d'Aide ne suivant pas du tout un tel ordre, et l'ordre n'ayant pas toujours de logique perceptible...). Mais ici la logique est respectée ! Application est le mot-clé essentiel de VBA (Visual Basic for Applications), un mot fondateur en quelque sorte...

On y lit qu'Application est une propriété renvoyant un objet Application.

Etant dans VBA-Excel, Application utilisée sans qualificateur d'objet renvoie Excel, l'application en cours d'utilisation.

Utilisée avec qualificateur d'objet, elle renvoie l'application ayant créé l'objet, à laquelle il appartient.

Cela a l'air simple ! Et pourtant ça ne l'est pas ! Je serais incapable de recenser le nombre de fois où j'ai conclu ça y est ! cette fois j'ai compris ! pour trouver un peu plus tard que j'avais encore diverses choses à comprendre...

On fait quelque progrès en découvrant que Application est très souvent implicite dans le code...

Que écrivant Workbooks, cela revient à écrire Application.Workbooks

Worksheets revient à Application.Worksheets, ActiveSheet à Application.ActiveSheet, ActiveCell à Application.ActiveCell.

Range revient à Application.ActiveSheet.Range, etc.

On peut encore citer : WorksheetFunction pour Application.WorksheetFunction...

[Ici, une particularité : la propriété WorksheetFunction renvoie un objet WorksheetFunction, qui est un objet conteneur, il regroupe les fonctions de feuilles de calcul d'Excel (du moins celles qui sont utilisables en VBA, à noter qu'elles sont définies comme méthodes de cet objet VBA, normal, ce sont des fonctions Excel, non des fonctions VBA...), l'expression se poursuit en principe par le nom d'une fonction Excel, et l'on peut élider WorksheetFunction et écrire : Application.Match, cela fonctionnera de la même façon que si l'on écrivait WorksheetFunction.Match, seulement dans ce dernier cas, à la frappe du point, l'assistant proposera la liste des fonctions, à la frappe du M, Match sera proposé en tête de liste, à la frappe de Tr, Transpose arrivera en tête de liste... ce qui fait que contrairement à une habitude répandue, on gagne du temps à utiliser WorksheetFunction...]

A ce stade, utilisant Excel, on se souvient que l'Application de référence du VBA qu'on utilise c'est Excel, et que cela nous fait disposer du modèle d'objet Excel, hiérarchie de tous les composants dont le sommet est l'Application.

Une foule d'éléments logiques... mais il n'est pas sûr que l'on ne soit pas passé à côté de l'aspect essentiel de la définition de départ. On a dit propriété, propriété renvoyant un objet ! Si l'on observe un tant soit peu tout le code que l'on est amené à écrire, on se rendra compte que l'objet est quelque peu évanescent, pour parvenir à le manipuler il nous faut toujours le renvoyer par une propriété, tous les objets : un objet est renvoyé par une propriété de son objet parent, lequel est renvoyé lui-même par une propriété de son objet parent, etc. jusqu'à l'Application, notre sommet de la pyramide des objets Excel, renvoyé par la propriété Application.

Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")

Là je déclare une variable comme objet Application Excel, puis j'affecte une référence d'objet à cette variable en utilisant la fonction CreateObject. A ce stade de l'action, je dispose d'une application Excel dans laquelle je peux ensuite créer des classeurs, feuilles... ou en ouvrir et réaliser diverses opérations...

Si je fais cela à partir de mon VBA Excel, j'aurais généré une 2e instance de l'application Excel, distincte de celle que j'ai utilisée pour le faire... [Ce que ne comprennent pas de nombreux débutants, qui ont pêchés sur le Web des codes de ce type, et qui se trouvent confrontés à des difficultés liées au fait que des objets dans deux instances d'application Excel ne communiquent pas spontanément !]

On touche là à la particularité de VBA par rapport à VB (ou tout autre langage de programmation autonome). Etant dans un VBA lié à Excel, la bibliothèque Excel est rendue disponible et l'on peut invoquer l'Application et tous ses objets sans avoir besoin de les instancier, comme le fait le bout de code ci-dessus. Il suffit de Application, même implicite...

Cordialement.

Salut MFerrand,

MFerrand a écrit :

Lorsque l'on tape Application dans l'Aide VBA, le premier article listé qui apparaît est : Application.Application.

C'est vrai qu'on se pose la question. Mais ta réponse en explique bien l'utilité.
MFerrand a écrit :

Application.WorksheetFunction..

Il est vrai qu'en tapant l'identification complète, on obtient la liste complète des fonctions disponibles pour VBA et c'est fort utile. Mais une fois la vérification effectuée, il me parait plus simple au niveau du code de ne conserver que la forme abrégée : Application.Match, ...

re

aie ! c'est deja dur ; mais c'est du a probleme de subtilité dans la traduction

1) grande question : c'est quoi l'objet ?

a) la feuille ; le paquet d'onglet....... ????

b) la plage(s) ou sont les données????

c) la façon de les citer (range; cells)????

d) ce que l'on utilise( la procedure) ??????

e) une image ;un msg box ou tout autre truc qui n'est ni du texte ;ni du chiffre

comme tu vois , un neophyte y perdrait son latin ( pour traduire du sumerien +du russe en anglais : faut le faire )

cordialement

Bonsoir thev, Tulipe_4 et MFerrand,

Merci de votre contribution à tous,

L'explication de MFerrand me semble bien construite, elle m'a confirmé dans ce que je pensais...

c'est à dire la position de l'objet "Application" dans la hiérarchie du VBA et m'a fait comprendre pourquoi je ne trouvais pas de déclaration de variable le concernant (c'est en quelque sorte l'objet "mère" de tous les autres.)

ceci dit, c'est un gros morceau à digérer, je vais donc me le mettre en archive pour pouvoir y revenir à loisir.

Merci encore de vous êtes intéressé à ma question...

Pour ceux que ça intéresse, J'ai poussé mes recherches sur internet et j'ai trouvé quelque info que je vous laisse:

https://msdn.microsoft.com/fr-fr/library/office/gg192737(v=office.14).aspx

https://msdn.microsoft.com/fr-fr/library/office/ff194565.aspx

https://msdn.microsoft.com/fr-fr/library/office/ff822851.aspx

Bonne nuit à tous...

Rechercher des sujets similaires à "explication application"