Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Runtime
Runtime Forum destiné à recevoir toutes vos questions concernant le Runtime (empaquetage, déploiement...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/02/2007, 14h26   #1
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
Par défaut XLS vers MDB sous runtime

Bonjour à tous !

Depuis ce matin, je seche sur la communication entre excel et access. Il y'a bien des FAQ et des Tutoriaux, mais aucun ne répond à mon probleme.
Voila la description:

J'ai crée une appli sous access (toto.mbd), qui envoie des données vers Excel.
Un fichier tata.xls s'ouvre donc automatiquement et l'utilisateur effectue d'autre manipulation dessus, jusqu'a (imprimer) et fermer ce fichier par le biais d'un bouton procédural, et juste avant la fermeture du fichier (tata.xls), Excel communique avec la base access (toto.mdb) en exécutant une requete d'action qui va faire un INSERT INTO dans une des tables avec des données contenu dans des cellules du fichier tata.xls.
Jusque la, pas de probleme, j'arrive a répondre a mes attentes sans trop de souci et avec du code VBA sur toto.mdb et tata.xls, en effet j'ai effectuer l'ensemble de mes phase de test avec succes sur un poste possedant Access 2003 et Excel 2003. (mon poste de travail).

Par contre, mon souci viens du fait que je dois aussi faire fonctionner ces 2 fichiers sur des poste en Windows XP, qui possede Excel 2003, mais qui n'ont pas Access ...

J'ai donc déployer sur un poste de test (ne possedant pas Access donc), le Runtime Microsoft access.
et voila mes résultats:
Apres installation avec succes du Runtime, le fichier toto.mdb deviens exécutable. Je l'ouvre, et j'obtiens bien ma communication avec tata.xls (qui s'ouvre aussi).
J'effectue mes manip sur tata.xls, et au final, qd je clique sur le bouton qui va lancer la requete SQL INSERT INTO contenu dans toto.mdb, j'obtiens un message d'erreur :

Citation:
"Un composant ActiveX ne peut pas créer d'objet. Erreur d'éxécution '429'"
J'ai chercher un peu sur le net, et on signale sur des forums qu'il faut utiliser la référence Microsoft DAO 3.6.
Je l'active donc sur Excel mais pas sur access, car je n'ai toujours pas access sur le poste de test, et par l'intermédiaire du Runtime, on doit pas avoir access a VBA editor.
Meme apres l'installation de la référence DAO3.6 sur excel, j'ai toujours le meme probleme.
J'ai aussi essayer de rajouter des références du type Microsoft ActiveX vX.X, sous excel, mais toujours rien ...

-------------------------------------

J'en déduit avec défétisme que l'on ne peut pas communiquer d'excel (tata.xls) vers "access" (toto.mdb) ou plutot le runtime access.

Je laisse en commentaire mon code VBA sous excel, qui me permet de lancer la requete SQL sous toto.mdb

Code :
1
2
3
4
5
6
7
Dim MonAccess As New Access.Application
MonAccess.OpenCurrentDatabase "\\h3msbs2003\BDC$\BDD_BDC.mdb"
'J'appelle la procédure nommé "insintBONDECOMMANDE" avec 2 parametres
MonAccess.Run "insintBONDECOMMANDE", Sheets("DATA").Range("A10").Value, Sheets("DATA").Range("B10").Value
MonAccess.Quit acquitsaveNone
Set MonAccess = Nothing
La ligne qui est en gras, est la ligne mise en surbrillance quand, apres le message d'erreur (Un composant ActiveX ne peut pas créer d'objet. Erreur d'éxécution '429') je clique sur déboguer.

Je rappel, que la meme manip fonctionne parfaitement entre Excel et Access , si access et non pas le Runtime est installé

Quelqu'un a t'il une idée pour résoudre mon probleme ???
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 14h54   #2
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 47
Points : 33
Points : 33
salut
il semblerait que la fonction OpenCurrentDatabase ne fonctionne pas avec le runtime (ca fonctionne qu'avec la version complete d'access)

essaye d'utiliser plutot : OpenDatabase qui se trouve dans la librairie DAO (n'oublie donc pas d'ajouter cette reference)
Shoryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 15h10   #3
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
Merci à toi de répondre aussi rapidement!

J'ai ajouter sous excel la librairie Microsoft DAO3.6, mais comment on utilise cette fonction ?
J'ai tester MonAccess.Opendatabase ca marche pas :s

si t'as un exemple d'utilisation ca serait sympa
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 15h14   #4
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 47
Points : 33
Points : 33
Code :
1
2
3
 
Dim db As DAO.Database
Set db = DAO.OpenDatabase("C:\Temp\MaBase.mdb", False, False)
j'ai piqué ca du tuto de caféine
ca pourrait t'interesser:

http://www.developpez.net/forums/sho...d.php?t=269383
Shoryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 15h31   #5
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
ok merci!
je vais tester, si ca marche, je tagg le post.

Bonne continuation !
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 15h48   #6
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
OK, bon deja j'ai plus le message d'erreur "erreur d'éxécution 429, un composant activeX ....."
donc ca me rassure de savoir cette métohde compatible avec le runtime Access.

Par contre, je ne connais que tres peu la programation DAO, comment est ce que je pourrai lancer l'exécution a partir de tata.xls, d'un module sur toto.mdb comprennant 2 arguments.

avec mon ancienne méthode qui ne fonctionne pas avec le runtime, j'avais ce code la:

Code :
1
2
3
4
 
Dim MonAccess As New Access.Application
MonAccess.OpenCurrentDatabase "\\h3msbs2003\BDC$\BDD_BDC.mdb"
MonAccess.Run "insintBONDECOMMANDE", arg1, arg2

Avec ta méthode DAO, j'imagine que c'est un truc dans le style, mais y me manque la suite:

Code :
1
2
3
4
 
Dim db As DAO.Database
Set db = DAO.OpenDatabase("\\h3msbs2003\BDC$\BDD_BDC.mdb", False, False)
db.??????????? ("insintBONDECOMMANDE", arg1, arg2)
tu as la réponse :S ???
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h02   #7
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
j'ai regarder le lien vers le tuto de cafeine que tu a posté, c'est pas mal mais ca ne répond pas a mes besoins, étant données que le tuto permet de récupérer des donner de access vers excel, tandis que moi je veux envoyer des données de excel vers access en lancant une procédure contenu dans un module du fichier access.

j'ai essayé de regarder les différents possibilités qu'offre l'objet DAO.database, mais je n'ai rien vu qui me permet d'éxécuter a distance une procédure.
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h09   #8
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 938
Points : 30 938
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Salut

DAO te permettra de travaillere sur les données, pour lancer une procédure il va falloir passer par automation pour contrôler Access depuis Excel.

Regarde dans le moteur de recherche du site à GETOBJECT pour prendre possesion d'Access, et regarde aussi dans la faq VBA. Par contre je ne sais pas si cela fonctionnera avec le runtime.

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h10   #9
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 47
Points : 33
Points : 33
le Run est une méthode d'Access.Application pas de la database

dao.database ne te propose que des methodes pour effectuer des requetes pas des procédures

donc essaye comme ca:

Code :
1
2
3
4
5
6
 
Dim MonAccess As New Access.Application
Dim db As DAO.Database
Set db = DAO.OpenDatabase("\\h3msbs2003\BDC$\BDD_BDC.mdb", False, False)
MonAccess.CurrentDb = db
MonAccess.Run "insintBONDECOMMANDE", arg1, arg2
c'est juste une idée, testes pour voir si ca marche
Shoryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h27   #10
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 47
Points : 33
Points : 33
Code :
1
2
 
MonAccess.CurrentDb = db
ca ne devrait pas marcher :/

sinon
Code :
1
2
 
Set MonAccess = GetObject(, "Access.Application")
et
Code :
1
2
 
Dim MonAccess As New Access.Application
ca revient au meme non?
on ne pourra pas utiliser opencurrentdatabase ni newcurrentdatabase :/
Shoryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h29   #11
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
j'ai tester ton idée, ca ne marche pas, la ligne :
MonAccess.CurrentDb = db
est en surbrillance, avec l'erreur : Errreur de compilation : Utilisation incorrecte de la propriété

On ne peut vraiment pas exécuter une procédure a partir de DAO.database ??? il doit y avoir un méthode qui équivaut au Run de Access.application non ?
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h30   #12
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
réponse a Shoruy:
Oui, ca revient au meme, c'est la meme instanciantion mais écrit de 2 manieres différentes :s
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 16h57   #13
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 47
Points : 33
Points : 33
ayant cherché un peu le probleme sur le net
j'ai trouvé 2 façons, je sais pas si elles fonctionnent mais bon :

lancer d'abord la base grace a l'executable runtime d'access avec shell() et apres utilise getobject()

Code :
1
2
3
4
5
 
'remplacer par le vrai chemin
Shell("c:\runtime\MSACCESS.exe " & """\\h3msbs2003\BDC$\BDD_BDC.mdb"" ", vbNormalFocus)
 
Set accObj = getObject(, "Access.Application")

ou :

Code :
1
2
3
4
 
Set db = DAO.OpenDatabase("\\h3msbs2003\BDC$\BDD_BDC.mdb", False, False)
 
Set accObj = getObject("\\h3msbs2003\BDC$\BDD_BDC.mdb", "Access.Application")
Shoryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 14h06   #14
Membre régulier
 
Inscription : juillet 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 195
Points : 77
Points : 77
Envoyer un message via MSN à tomo0013
OK, j'ai trouver une autre solution pour répondre a mes problemes.
J'utilise simplement :

Code :
1
2
3
4
5
Dim strSQL as string
Dim db As DAO.Database
Set db = DAO.OpenDatabase("\\h3msbs2003\BDC$\BDD_BDC.mdb", False, False)
strSQL = "SELECT * FROM TABLE WHERE champs = 'condition';"
db.execute strSQL
car en fait, ma procédure que je souhaitais lancer à partir d'excel, sous access, exécute un code qui concatene une chaine de string et exécute une requete SQL.


Je vous remercie tous les 2 pour votre implication dans mon probleme, bonne continuation a vous.
tomo0013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h46.


 
 
 
 
Partenaires

Hébergement Web