IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lecture d'un fichier .accdb par macro Excel [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Par défaut Lecture d'un fichier .accdb par macro Excel
    Bonjour à tous,

    je développe en ce moment un petit outil en vba sur Excel, outil qui va lire et écrire des données dans une base Access existante.
    Cet outil est destiné à être utilisé par plusieurs utilisateurs de ma boîte qui n'ont pas Access sur leur machine, d'où le choix de créer l'interface dans Excel.

    Les accès à la base se font sur ce modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Public db As DAO.Database
    Public rs As DAO.Recordset
    Public strCritere As String
     
    Sub MaMacro()
     
        Set db = DBEngine(0).OpenDatabase(chemin_de_ma_base_de_donnees)
        Set rs = db.OpenRecordset("MaTable", dbOpenDynaset)
     
        strCritere = "[champ] LIKE " & Chr(34) & ce_que_je_cherche & Chr(34)
     
        rs.FindFirst strCritere
     
        If Not rs.NoMatch Then
            MsgBox rs.Fields(champ_que_je_veux_afficher).Value
        End If
     
        rs.Close: db.Close: Set rs = Nothing: Set db = Nothing
     
    End Sub
    Tout fonctionne à merveille sur ma machine sur laquelle Access est installé.
    Je l'ai testé sur la machine d'un collègue qui n'a pas Access, et j'ai eu droit au joli message :

    Erreur d'exécution '429':
    Un composant ActiveX ne peut pas créer d'objet.


    Vérification faite dans l'éditeur vba, les références "Microsoft Access 15.0 Object Library" et "Microsoft DAO 3.6 Object Library" sont bien présentes sur sa machine.
    Je précise toutefois que je lui ai copié manuellement la librairie "Microsoft Access 15.0 Object Library" sur son PC car il ne l'avait pas.
    Quelqu'un saurait me guider vers la solution ? (sachant que la solution d'installer Access sur toutes les machines n'est pas envisageable pour des raisons de license)

    Merci d'avance !

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    et en travaillant en liaison tardive ça ne passe pas ?

    au lieu de typer tes variables avec les références DAO, tu les types en Object

    et c'est lors de l'instanciation que tu "ramène" le bon objet en mode création

    un exemple appliqué DAO ici : https://support.microsoft.com/fr-fr/kb/152400

    et pour les différences entre liaison anticipé et tardive ici : http://mhubiche.developpez.com/vba/f...endre/binding/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Par défaut
    Merci pour cette réponse, Joe.
    Je viens d'essayer la liaison tardive comme expliqué dans le lien que tu as donné, mais de cette manière même sur ma machine j'obtiens ce message d'erreur 429 !
    Vraiment étrange

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Et en renseignant un numéro de version ?

    par exemple : CreateObject("DAO.DBEngine.120")


    je suis pas très à l'aise sur DAO ... j'utilise occasionnellement ADO uniquement

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Pourquoi faire compliquer quand on peut faire simple .

    Il existe sous Access des possibilités pour faire une base (MDE pour Access 2003 ou ACCDE à partir de 2007)

    c'est une base compactée et non transformable qui permet de faire une sorte de frontal à ta base de donnée (ce que tu veux faire apparemment)


    Et puis tu peux également utiliser le runtime d'Access qui aujourd'hui est gratuit (pour les utilisateurs qui n'ont pas Access)

    C'est plus simple à créer et la maintenance est grandement facilité.

    n'hésites pas si tu as besoin de plus d'info

    A+

  6. #6

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,
    juste mon grain de sel!
    Je ne crois pas que DAO puisse ouvrir un fichier accde.
    Il faut utiliser ADODB
    Cordialement,

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Par défaut
    Citation Envoyé par Philippe PONS Voir le message
    Salut,
    juste mon grain de sel!
    Je ne crois pas que DAO puisse ouvrir un fichier accde.
    Il faut utiliser ADODB
    Cordialement,
    Merci Philippe, c'est justement pour que les membres du forum mettent leur grain de sel que j'ai ouvert ce sujet !

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Par défaut
    Merci pour cette solution, rdurupt. J'essaie ça dès demain au boulot

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Pourquoi faire compliquer quand on peut faire simple .

    Il existe sous Access des possibilités pour faire une base (MDE pour Access 2003 ou ACCDE à partir de 2007)

    c'est une base compactée et non transformable qui permet de faire une sorte de frontal à ta base de donnée (ce que tu veux faire apparemment)


    Et puis tu peux également utiliser le runtime d'Access qui aujourd'hui est gratuit (pour les utilisateurs qui n'ont pas Access)

    C'est plus simple à créer et la maintenance est grandement facilité.

    n'hésites pas si tu as besoin de plus d'info

    A+
    Merci beaucoup pour ta réponse, Igloobel. En effet, une base ACCDE aurait pu le faire, mais l'outil sur lequel je bosse est très susceptible d'évoluer dans le temps en fonction des besoins des utilisateurs.
    Je pense donc que je vais privilégier le runtime d'Access... il faudra que je casse les pieds à mon service info pour qu'il l'installe sur toutes les machines concernées

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Et si tu faisais un test en enregistrant ta base en MDB ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Pour information, DAO est un moteur de base de données purement Microsoft, il faut installer le MDAC qui est automatiquement installé avec Access et certaine version vba mais pa systématiquement.
    Adodb est driver de base de données installé avec Windows!

  13. #13
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Je dirais même que DAO est le pilote purement Microsoft Access!
    ADODB permet de travailler avec une feuille de calcul Excel, pas DAO.
    (ou alors j'ai raté quelque chose!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [lecture d'un fichier] ligne par ligne
    Par pitit777 dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 11h22
  2. Lecture d'un fichier octet par octet
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 31/10/2005, 22h58
  3. Lecture d'un fichier octet par octet
    Par PopKoRn...X_x dans le forum C++
    Réponses: 10
    Dernier message: 01/07/2005, 19h09
  4. Lecture d'un fichier mot par mot
    Par hamster dans le forum C++
    Réponses: 7
    Dernier message: 21/02/2005, 17h25
  5. Réponses: 6
    Dernier message: 02/09/2003, 15h12

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