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

Runtime Discussion :

Piloter Access runtime avec Excel


Sujet :

Runtime

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Piloter Access runtime avec Excel
    Etudiant en stage, je cherche à déployer un Access Runtime sur le serveur de l'entreprise.
    J'ai actuellement un fichier .accdb qui s'ouvre depuis Excel. Par la suite j'active une macro présent dans le fichier .accdb. Le code pour lancer Access avec Excel ci-dessous.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim objAccess As New Access.Application
    Dim Chemin As String
     
    CheminComplet = "C:\Users\...\Commandes.accdb"
    objAccess.OpenCurrentDatabase CheminComplet
    objAccess.Run "Ouvrir_Commande_depuis_Nomenclature", NumCmd, "0"
    Tout se passe bien en format .accdb mais losque je test en .accdr pour réaliser des tests avant de passer en runtime, un message d'erreur avec seulement un croix rouge apparait.

    J'ai cherché sur le forum et ai trouvé des problèmes avec la certification des documents donc j'ai aussi approuvé le dossier où se situe le fichier .accdr. Mais cela n'a rien changé.
    J'ai aussi vu qu'il n'était pas possible d'exécuter les runtime avec Access.Application et qu'il fallait passer par un shell pour ouvrir access mais je n'ai alors pas de solution pour exécuter la macro.

    Existe-il une solution pour travailler avec Access.Application en .accdr ?
    Sinon, peut-on exécuter une macro par un autre moyen depuis Excel ?

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 15 031
    Points : 22 880
    Points
    22 880
    Par défaut
    Bonjour.

    Le access runtime ne nécessite pas que tu nommes le fichier .accdr.
    En fait c'est juste une illusion.
    Tu devrais pouvoir utiliser directement le format accdb.

    Si tu veux simuler le fonctionnement du runtime tu peux le faire en mettant /runtime sur la ligne de commande.
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\TonCehminVersAccess\Access.exe x:\TonCheminVersTaBD\bd.accdb /runtime
    Aussi dans une version destinée à utiliser le runtime pour s'exécuter il FAUT que tu t'astreignes à mettre en place le code gestion d'erreur dans tes modules sinon tu n'auras qu'un truc du genre "Une erreur grave est arrivée et Access va fermer".

    Sincèrement, une solution avec des "vrais" Access sur chaque poste est nettement plus facile à vivre.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour marot_r, merci pour ta réponse.

    Après débogage d'application, c'est bien un soucis à l'ouverture de Access, erreur d'exécution 7866. sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objAccess.OpenCurrentDatabase CheminComplet
    Pour l'ouverture d'un .accdb en runtime j'ai donc modifier mon chemin en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheminComplet = "C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE C:\Users\...\Commandes.accdb"
    Je ne sais pas si cela fonctionne avec des Access.Application car avec un shell(CheminComplet) l'application s'ouvre bien en runtime

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Access.Application instancie Microsoft Access comme si un processus ou une personne de chargeait de l'ouvrir.

    Il semble que votre application et la base de donnée ne font qu'un.
    Il serait alors judicieux de séparer la base.


    Toutefois, pour votre problème Excel, quelque soit la base, il faut user d'un objet Database qui pilote un DBEngine.OpenDatabase avec les options qui vont bien (voir aide en ligne).
    Vous pourrez alors user de la méthode Execute pour exécuter des requêtes ou procéder à de simples interrogations SQL via un Recordset de l'objet Database sus suggéré ci-avant.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci argyronet pour ta réponse,

    En effet, je peux bien interagir avec la base de donnée avec cette méthode.
    Cependant je souhaiterai exécuter un module d'access qui va ouvrir un formulaire avec les informations lié aux variables échangé.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Le problème semble venir de la sécurité Microsoft. J'ai pu observer tes anciens commentaire sur le sujet argyronet.

    Je passe donc par l'éditeur de registre pour retirer l'avis de sécurité qui apparait à chaque ouverture.
    Cependant j'ai beau écrire le chemin en pointant sur le fichier Access ou en spécifiant un dossier mais cela n'a pas fait disparaitre l'avis de sécurité.

    Par ailleurs, j'ai modifier les flux de données entre Excel et Access en interagissant directement par SQL sur la base de donnée.
    Cela fonctionne si j’exécute le code VBA Excel si Access est ouvert avec l'avis de sécurité accepté mais ne fonctionne pas si Access est fermé.

  7. #7
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Ah...

    Puis-je voir ce que (comment) vous avez inscrit dans le Registre ?

    >>> Cependant je souhaiterai exécuter un module d'Access qui va ouvrir un formulaire avec les informations lié aux variables échangé.
    Donc donner temporairement accès à l'application Access à l'utilisateur.

    Pourquoi ne pas piloter le tout depuis Access alors ?

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ci-joint le registre

    Nom : Sans titre.png
Affichages : 84
Taille : 58,6 Ko

    Piloter excel depuis access a aussi été une solution proposé auprès de mon tuteur mais semble apparemment compliqué à faire (même si je n'y ai pas trop réfléchi pour le moment)

    UPDATE :
    Le chemin n'était pas le bon..

    Je suis allé dans le centre de gestion de la confidentialité d'Access et ajouté un document approuvé. Cela me créer bien une clé dans l’éditeur de registre. J'ai testé si cette clé faisait bien disparaitre l'avis de sécurité sur ma machine en passant le fichier en .accdr (le message n'apparait pas alors qu'il le fait en temps normal)

    J'ai ensuite exporté cette clé sur le réseau en .Reg puis double clic pour l'ajouter à une autre machine. La clé est bien présente mais sur la nouvelle machine l'avis de sécurité apparait toujours..

    UPDATE 2 :
    Solution actuel, ouvrir avec un call shell l'application Access, temporiser Excel avec un MsgBox box qui demande d'accepter l'avis de sécurité avant de continuer, l'avis de sécurité s'affiche, l'utilisateur clic sur ok puis ok sur le MsgBox et ça roule..
    Cette solution n'est pas viable.
    J'ai aussi passé le AllowSubFolders à 0 (cela permet de désactiver le mode sandbox pour tout exécutant ? )

  9. #9
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Hummm...
    Si l'image de votre chemin est correcte, alors le chemin est faux !
    le chemin doit rester un chemin sans spécifier la base.
    C'est un chemin approuvé ; pas une application approuvée.
    Ne pas oublier le \ en fin de chaîne...

    Du coup, la clé Path doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S:\BE New\Amelioration Continue\Achat\02_Projet ENSIBS\BDD Access\test\
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    C'est ce que je reprenais dans la 2ème partie de mon message quand je disais que le chemin était faux

  11. #11
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    J'ai ensuite exporté cette clé sur le réseau en .Reg puis double clic pour l'ajouter à une autre machine.
    La clé est bien présente mais sur la nouvelle machine l'avis de sécurité apparait toujours..
    Même en lancement manuel sur l'autre machine ?

    Toujours sur l'autre machine...
    Essayez alors avec un raccourci sur le bureau avec un argument /runtime et en le laissant en accdb (ou accde d'ailleurs).
    Qu'est-ce que ça donne ?

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai réussie à faire disparaitre l'avis de sécurité, pas en passant par les trusted Locations mais par les trusted documents. Comme désormais je communique seulement avec la base de donné séparé "ça tient la route".

    Ce que je ne comprend pas c'est que sur les machines avec AccessRuntime, je ne peux pas me connecter à la bdd, SAUF si celle-ci est ouverte (pour faire fonctionner l'application je passe par un shell de la base de donnée que je referme à la fin de l'insertion de donnée).
    Si je ne fais pas cela j'ai l'erreur système &H80080005(-2146959355). Échec de l'exécution du serveur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Base = DBEngine.OpenDatabase(CheminComplet)
    Je ne comprend pas ce qui peut bloquer sachant que la communication fonctionne avec l'application Access.

  13. #13
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Le risque avec "trusted document" est que tout changement de version de l'application va s'annuler - autrement dit, une maj d'une nouvelle version et hop, il faut réapprouver.

    Si la méthode OpenDatabase échoue avec cette erreur, c'est qu'il y a un possiblement problème sur le chemin...
    Comment est-il défini ?
    Mais comme ça, ce n'est pas simple, sans voir le code.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Voici comment je construis le chemin aujourd'hui :
    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
    22
     Chemin = Workbooks(ActiveWorkbook.Name).Sheets(F05_parametres.Name).Range("H4").Value & "\"
     
        ' La fonction Dir(chemin, mode) permet de parcourir un dossier, "*.accdb" pour ne retrouver que mes fichiers Access, vbNormal permet de ne récupérer que des fichiers,
        FichierCmd = Dir(Chemin & "*.accdb", vbNormal)
        FichierExistant = False
     
        ' Boucle pour trouver les fichier Excel dans le dossier
        Do While FichierCmd <> vbNullString
            If Left(FichierCmd, 17) = "CommandesV0.02_be" Then 'Test si c'est bien le fichier de commande
                'MsgBox MonFichier
                FichierExistant = True
                Exit Do                              'Sort de la boucle dès que le fichier est trouvé
            End If
            FichierCmd = Dir                         ' Permet de passer au fichier suivant
        Loop
     
        If FichierExistant = False Then
            MsgBox "Il n'y a pas de fichier de 'Commandes' dans le dossier." & Chr$(10) & Chr$(10) & "Il n'est pas possible de passer la commande."
            End
        End If
     
        CheminComplet = Chemin & FichierCmd

    Comme je le disais, le chemin est correcte vu qu'il fonctionne sur l'ordinateur que j'utilise pour le développement.
    Il fonctionne aussi sur les autres machines, sauf si access a été ouvert au préalable.
    Je ne pense donc pas que le problème vienne du code.

    Pour le trusted document je vois bien le risque. Mais comme je communique seulement avec une bdd séparé, cela ne devrait pas poser trop de problème. (La bdd ne changera pas à chaque MAJ)

  15. #15
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Humm...

    Pour info, lorsque l'objet Worksheet possède un "code name", le simple fait d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Range("H4").Value
    suffit.

    Bien, compliqué cette procédure de vérification de fichier...

    Donc si j'ai bien suivi, la base à ouvrir devrait être quelque chose sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S:\BE New\Amelioration Continue\Achat\02_Projet ENSIBS\BDD Access\test\CommandesV0.02_be.accdb.
    et qui semble ne pas correspondre à un fichier valide.

    Donc grossièrement, tu essayes d'ouvrir une base qui n'existe potentiellement pas (à cause de la syntaxe des tes variables) ce qui justifierait sans doute l'erreur...
    car de ce que je lit car je ne sais pas ce qu'il y a dans la cellule H4, le chemin est non valide.
    Davantage de précision m'aiderais à t'aider.

    Dans un premier temps, je mettrais toutes les valeurs de chemin et fichier en dur dans le code avant de chercher à dynamiser ce dernier, qui plus est, pas avec la bonne méthode.



    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Dans la cellule H4 se trouve le début du chemin. Précisément : S:\BE New\Amelioration Continue\Achat\02_Projet ENSIBS\BDD Access\test
    Chemin utilisé pour éviter de rentrer dans le code pour modifier un chemin.

    Les tests avec les chemins en dure avait déjà été fait. J'ai réessayé dans le doute mais je me retrouve avec la même finalité.

    Je ne sais pas quoi te dire de plus pour t'aider à m'aider.
    A l’exécution du code depuis excel pour me connecter à la base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CheminComplet = "S:\BE New\Amelioration Continue\Achat\02_Projet ENSIBS\BDD Access\test\CommandesV0.02_be.accdb"
    Set Base = DBEngine.OpenDatabase(CheminComplet)
    L'erreur système &H80080005(-2146959355). Échec de l'exécution du serveur survient.
    Sauf que cette erreur est présente sur la machine utilisant un runtime. Les machines utilisant MS Access n'ont pas se soucis.

    Cependant, cette connexion peu ce faire sur les machines avec runtime SI l'application .accdb est ouverte (à travers un shell ou ouverture manuel)

  17. #17
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Ooops, au temps pour moi , je n'ai pas bien lu le début . Désolé, je suis un peu dans le cloud en ce moment.

    Effectivement, c'est Access Runtime.
    On ne peut pas faire ce que l'on veut avec ce truc là !

    Il est donc normal que ça marche avec la pleine version et qu'avec le Runtime, c'est bridé par conception ; il faut lui passer un chemin de BDD valide...

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "%Program Files%\Office....\MSACCESS.EXE" "S:\BE New\Amelioration Continue\Achat\02_Projet ENSIBS\BDD Access\test\CommandesV0.02_be.accdb"
    Donc, tu ne pourras pas instancier Access et lancer ta base via un OpenDatabase avec le Runtime (erreur 429).

    Solution :

    Il faut alors viser l'usage d'un ShellExecute (API) et passer en paramètre le chemin de ta base.
    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
     
    Option Explicit
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const SW_SHOWNORMAL = 1
     
    Sub testBDDRuntimeI()
    Const ACCESS_EXE                                       As String = "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE"
    Const MA_BDD                                           As String = "C:\Users\Argyronet\Documents\Comptoir.accdb"
     
        If Dir(MA_BDD, 0) <> "" Then
            If ShellExecute(Application.hwnd, vbNullString, ACCESS_EXE, MA_BDD, "C:\", SW_SHOWNORMAL) <= 32 Then
                MsgBox "Problème à l'ouverture de l'application !", vbExclamation
            End If
        Else
            MsgBox "L'application est introuvable !", vbExclamation
        End If
    End Sub
    ou un Shell simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub testBDDRuntimeII()
    Const ACCESS_EXE                                       As String = "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE"
    Const MA_BDD                                           As String = "C:\Users\Argyronet\Documents\Comptoir.accdb"
     
        If Dir(MA_BDD, 0) <> "" Then
            If Shell(ACCESS_EXE & " " & MA_BDD, 1) = 0 Then
                MsgBox "Problème à l'ouverture de l'application !", vbExclamation
            End If
        Else
            MsgBox "L'application est introuvable !", vbExclamation
        End If
    End Sub
    Et ensuite, soit via un AutoExec, soit via un formulaire à l’ouverture se chargera d'exécuter le code à exécuter au sein de ton application Access.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour le temps que tu me consacre. Je n'étais pas revenu sur le forum non plus.
    J'arrive donc à insérer des données dans ma BDD si je l'ouvre au préalable avec un shell.

    En réfléchissant à une alternative, n'est-il pas possible de créer une connexion entre Excel et Access avec une connexion ODBC OU ADODB ? Tout en passant par un RunTime

    Je ne m'y connais pas du tout sur ce sujet.
    J'ai enregistré une macro pour importer une table dans l'Excel qui ma permis d'avoir mon code avec un ODBC mais plutôt que faire un SELECT, est-il possible de l'a modifier pour faire du INSERT INTO ou UPDATE ?

    J'ai obtenu ce code :
    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
    22
    23
    24
    25
    26
    27
    Sub Macro2()
        Application.CutCopyMode = False
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
            "ODBC;DBQ=S:\BE New\Amelioration Continue\Achat\02_Projet ENSIBS\BDD Access\test\2021\CommandesV0.03.accdb;DefaultDir=S:\BE New\Ameli" _
            ), Array( _
            "oration Continue\Achat\02_Projet ENSIBS\BDD Access\test\2021;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DriverId=25;FIL=" _
            ), Array( _
            "MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;" _
            )), Destination:=Range("$J$11")).QueryTable
            .CommandType = 0
            .CommandText = Array( _
            "SELECT Commandes.NCmd, Commandes.Revision" & Chr(13) & "" & Chr(10) & "FROM Commandes Commandes")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Tableau_Lancer_la_requête_à_partir_de_Commande"
            .Refresh BackgroundQuery:=False
        End With
    End Sub

  19. #19
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    mai 2004
    Messages
    5 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 5 086
    Points : 11 941
    Points
    11 941
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Pour attaquer la base de données qu'il y ait un Runtime ou pas, puisque ce dernier n'est là que pour l'utilisateur, on peut procéder ainsi :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Public Sub DemoSQLADORuntime(ByVal NomDuPays As String)
     
        Const NOM_BDD = "C:\Users\Argyronet\Documents\Comptoir.accdb"
        Const SQL = "SELECT Société, Contact, Pays, Fonction FROM Clients WHERE Ville=?;"
     
        Dim oCnx As ADODB.Connection
        Dim oCommand As ADODB.Command
        Dim oRs As ADODB.Recordset
     
        'Connexion...
        Set oCnx = CreateObject("ADODB.Connection")
        With oCnx
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=" & NOM_BDD & ";Persist Security Info=False"
            .Open
        End With
     
        'Définition de la commande
        Set oCommand = CreateObject("ADODB.Command")
        With oCommand
            .ActiveConnection = oCnx
            .CommandText = SQL
            .CommandType = adCmdText
            .Parameters.Append .CreateParameter("Param1", adVarChar, adParamInput, 30)
        End With
     
        'Execution
        With oCommand
            .Parameters(0).Value = NomDuPays
            Set oRs = .Execute
        End With
     
        With oRs
            Do While Not .EOF
                Debug.Print .Fields(0).Value & " - " & .Fields(1).Value & " - " & .Fields(2).Value
                .MoveNext
            Loop
        End With
        oRs.Close
        oCnx.Close
        Set oRs = Nothing
        Set oCommand = Nothing
        Set oCnx = Nothing
     
    End Sub
     
    Sub test_DemoSQLADORuntime()
        'Test avec Londres sur la table Clients
        Call DemoSQLADORuntime("London")
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ton aide, j'ai pu modifier toutes les exécution de requête et l'application se porte beaucoup mieux maintenant avec la connexion.

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

Discussions similaires

  1. [XL-2007] Piloter Autocad 2009 avec Excel
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/11/2010, 09h08
  2. Etat access ouvert avec excel
    Par shaka17 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/11/2009, 08h29
  3. piloter port parallele avec excel vba
    Par elephanto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/03/2009, 15h46
  4. "Piloter" VB 2005 avec Excel 2003
    Par marine18 dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/01/2008, 23h11
  5. Réponses: 1
    Dernier message: 23/07/2006, 22h15

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