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

VBA Access Discussion :

Utiliser Access via une application VBA sur un poste ne disposant pas d'Access


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 129
    Points : 45
    Points
    45
    Par défaut Utiliser Access via une application VBA sur un poste ne disposant pas d'Access
    Bonjour à tous,

    Le sujet a surrement déjà été traité mais je n'en ai trouvé aucun qui ressemblait point pour point à mon soucis.

    Le Contexte :
    Je suis en entreprise et je travail sur un poste avec Access d'installé (Les autres postes ne l'ont pas). J'ai créé une application VBA Excel qui utilise Access comme base de données et j'y accéde parfaitement sur mon pc MAIS les autres postes de l'entreprise ne possédant pas Access ne peuvent pas y accéder.

    Les contraintes sont :
    Je ne peux pas acheter d'autres licences Access
    Je ne peux pas utiliser d'autres bases de données
    Je ne peux pas me passer d'Access
    Je ne peux pas installer Access sur un Windows Server

    Ce que j'ai actuellement :
    la connection à ma base de données s'effectue via un module de classes :
    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
    Public db As DAO.Database
    Public rst As DAO.Recordset
    Public wrkCurrent As DAO.Workspace
     
    Public dbname As String
     
     
     
    Public Sub class_initialize()
        Dim message
        'Instanciation variable
        dbname = ThisWorkbook.Path & "\Application\BDD\RA.accdb"
     
        'Déclaration de la variable de connexion
        On Error Resume Next
        Set db = OpenDatabase(dbname)
        Set wrkCurrent = DBEngine.Workspaces(0)
     
        If err.Number <> 0 Then
            message = MsgBox("Impossible de se connecter à la base de données. Application inutilisable !", vbCritical, "erreur base de données")
        End If
     
    End Sub
    Voilà, si la solution est de passer par autre chose que DAO je suis preneur tout en sachant que j'aimerai garder un maximum de code tel quel (La DeadLine est pour bientôt, et je preferai pas changer la syntaxe de toutes mes requetes et/ou structure de mon application.. ^^)

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Et si tu utilises un DSN ODBC, ça doit fonctionner sans Access sur les postes.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    Salut,

    la seule piste que je pourrais te proposer est le Runtime
    http://argyronet.developpez.com/office/access/runtime/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 129
    Points : 45
    Points
    45
    Par défaut
    Merci pour vos réponse, pour le runtime j'essairai mais j'y crois pas trop car on ne peut pas installer certain logiciel sur le pc de mon entreprise. Dans le cas contraire, et ça serait mieux que rien, faudrait que je mette à disposition le runtime sur le disque partagé de l'entreprise.

    A propos du disque partagé (mon application est sur ce disque), pour le DSN je sais pas du tout comment faire.. D'après ce que j'ai vu, c'est une chaine de connexion avec id et mdp à renseigner. Je sais pas trop ce que je dois renseigner par rapport à ce disque partagé justement.
    J'ai vu qu'avec ADO je peux me connecter à une base de données sans DSN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Déclaration de la variable de connexion
    Dim cnx As ADODB.Connection
    Set cnx = New ADODB.Connection
     
    'Définition du pilote de connexion
    cnx.Provider = "Microsoft.Jet.Oledb.3.51"
    'Définition de la chaîne de connexion
    cnx.ConnectionString = "C:\maBase.mdb"
    'Ouverture de la base de données
    cnx.Open
    Vous en pensez quoi ? (en attendant j'essaye de tester ce code, je vous tiens au courant)

    EDIT : J'ai testé le code ci dessus avec une simple base de données .accdb (et non MDB comme dans l'exemple, je sais pas si ça importe) et il ne trouve pas le provider Microsoft.Jet.Oledb.3.51

  5. #5
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=votes.mdb"

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 129
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    J'ai testé ta solution en remplaçant la connstring par "DRIVER={Microsoft Access Driver (*.accdb)}; DBQ=votes.accdb". (j'ai changé les .mdb étant donné que ma base est en .accdb c'est important ?)
    Donc en appliquant le code ci dessous, ça ne marche toujours pas : "Pilote ISAM introuvable".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Définition du pilote de connexion
    cnx.Provider = "Microsoft.ACE.OLEDB.12.0"
    'Définition de la chaîne de connexion
    cnx.Connstring = "DRIVER={Microsoft Access Driver (*.accdb)}; DBQ=mabase.accdb"
    'Ouverture de la base de données
    cnx.Open
     
    rst.Open "Select * from RA where DATE_RA = '" & Vdate & "'", cnx
    Dim res As String
    res = rst.Fields("AUTHENTIFICATION_RA")
    MsgBox res
     
    cnx.Close
    PS : je rappel que les postes cibles sont des postes d'entreprise avec un OS entreprise donc comprenant pas forcément tous les drivers etc.

  7. #7
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    -1- As-tu vérifié que les drivers sont installés sur les postes ?

    -2- Tu déclares connstring et tu fais cnx.Open !!!

    -3- Essaye avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connstring = "driver= microsoft access driver (*.mdb *.accdb)"

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 129
    Points : 45
    Points
    45
    Par défaut
    Oui pour cnx.connstring je m'en suis rendu compte juste avant que tu poste ta réponse ^^' j'étais d'ailleurs entrain de modifier mon post.

    Pour le pilote ISAM, je vais regarder mais si moi je l'ai pas alors les postes cibles encore moins.
    J'ai utilisé ici ACE.OLEDB au lieu de JET car j'ai pas de serveur, ce n'est pas grave ?

    Sinon deuxième question : Si il me manque ce pilote, est-ce qu'en installant juste le runtime Access 2010 sur ma machine + postes cibles et en appliquant le même code ça pourrait marcher ? J'ai déjà essayé d'installer le runtime mais l'installation est bloquée par l'entreprise, si tu me dit que ça peut marcher : je me débrouillerai pour débloquer cela

    EDIT : Ou à la place d'installer le runtime Access 2010 qui est assez lourd (~200Mo) ce moteur de base de données ne ferait pas l'affaire ?
    http://www.microsoft.com/fr-fr/downl....aspx?id=13255

  9. #9
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Pour les pilotes ODBC, le composant MDAC est téléchargeable gratuitement chez Microsoft.

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 129
    Points : 45
    Points
    45
    Par défaut
    re,

    Mais ce que j'aimerai savoir, c'est : est-ce que c'est sûr à 100% ou du moins en théorie, qu'en installant MDAC ça va fonctionner ?
    Parce-que je ne peux pas tester avant de prévenir l'admin informatique de l'entreprise

  11. #11
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    J'ai déjà fait cette manip sans problème.
    Tu installes MDAC sur les postes. Les drivers ODBC seront installés.
    Ensuite, soit tu utilises un DSN ODBC, mais il faudra le créer sur chaque poste, ou tu utilises la méthode que je t'ai indiquée.

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 129
    Points : 45
    Points
    45
    Par défaut
    D'accord, merci ! je vais voir cette après-midi Lundi après -midi avec l'admin et je te tiens au courant

Discussions similaires

  1. Déployer une application java sur un poste utilisateur
    Par patnership dans le forum NetBeans Platform
    Réponses: 2
    Dernier message: 04/03/2015, 19h25
  2. Lancer une application locale (sur un poste client) depuis une application web
    Par Dev95VV dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 24/10/2014, 10h53
  3. Utilisation locale d'une application access
    Par Tintou dans le forum Access
    Réponses: 7
    Dernier message: 02/08/2007, 18h04
  4. Réponses: 2
    Dernier message: 30/04/2007, 11h18
  5. Réponses: 8
    Dernier message: 24/01/2007, 16h49

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