1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur Monétique
    Inscrit en
    avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur Monétique

    Informations forums :
    Inscription : avril 2016
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Déclaration et utilisation des objets en vba

    Bonjour à tous,

    J'ai vu dans certains tuto ce genre de déclaration:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oRst as DAO.Recordset
    Dim oDb as DAO.Database
    Set oDb=CurrentDb
    Set oRst=oDb.OpenRecordset(...)
    ou la même sous excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim Xl As Excel.Application
    Dim Classeur As Excel.Workbook
    Set Xl = New Excel.Application
    Set Classeur = Xl.Workbooks.Open(...)
    alors qu'il est possible de faire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim oRst as DAO.Recordset
    Set oRst=CurrentDb.OpenRecordset(...)
    Ou gérer directement les cellules d'un fichier excel via l'objet Excel.Application

    Du coup ma question: pourquoi passer par plusieurs objets ainsi quand l'objet application lui-même permet de le faire? C'est plus rapide? Celà suit les régles de programmation?
    Si vous pouviez m'éclairer ça serait super. Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 300
    Points : 8 989
    Points
    8 989
    Billets dans le blog
    22

    Par défaut

    Bonjour,

    Sans avoir vu les tutoriels en question, c'est difficile de donner LA réponse.

    Quand on est dans VBA excel et que l'on veut travailler avec un fichier Excel, il est préférable d'utiliser les objets Excel quand ils existent.

    Ceci étant dit, VBA permet d'utiliser les objets d'une autre application Office (ou d'autres compagnies qui ont une license de MS pour implanter VBA dans leurs produits (exemple CATIA ou AUTOCAD)) avec Excel ou d'utiliser Excel avec une autre application Office. C'est typique de cet exemple que tu as donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Xl As Excel.Application
    Dim Classeur As Excel.Workbook
    Set Xl = New Excel.Application
    Set Classeur = Xl.Workbooks.Open(...)
    Cela pourrait être, par exemple Word (PowerPoint. Access etc) qui ouvre Excel, pour récupérer disons, un tableau ou un graphique dans un classeur Excel. Théoriquement une instance d'Excel, pourrait ouvrir une autre instance d'Excel de la même façon. Mais, cela n'a pas d'intérêt, ou presque; parce que l'on peut ouvrir et manipuler plusieurs classeurs Excel dans une seule instance d'Excel.

    De même que l'on peut ouvrir, par exemple, une application Word (PowerPoint. Access etc) à partir d'Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Wd As Word.Application
    Dim Document As Word.document
    Set Wd= New Word.Application
    Set Document = wd.documents.Open(...)
    Ton premier exemple est typique d'une application qui n'a pas d'objet Recordset, comme Word par exemple qui utiliserait des données provenant d'un classeur Excel ou d'une base Access
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oRst as DAO.Recordset
    Dim oDb as DAO.Database
    Set oDb=CurrentDb
    Set oRst=oDb.OpenRecordset(...)
    On peut aussi faire comme dans ta troisième hypothèse. Tout cela dépend du programme utilisé et des besoins.

    En résumé, directement c'est mieux. Le pilotage c'est utile quand on ne peut pas faire autrement,
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    À force de vouloir considérer les utilisateurs comme des imbéciles patentés, on risque de se mettre dans le trouble.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/02/2011, 20h08
  2. Utilisation des objets COM
    Par jdelges dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 26/01/2007, 23h52
  3. Utiliser des objets automation dans Oracle
    Par WebPac dans le forum Forms
    Réponses: 10
    Dernier message: 29/11/2006, 19h17
  4. Utiliser des objets SWING dans une vue RCP
    Par manuga72 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 20/10/2006, 17h26
  5. Erreur lors de l' utilisation des objets ADO
    Par aityahia dans le forum Bases de données
    Réponses: 10
    Dernier message: 24/03/2006, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo