|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
Bonjour, voila je suis debutante en VBA, j'ai trouvé un code sur internet qui permet de lancer une macro access depuis un fichier excel. Tout fonctionne la premiere fois, c'est genial. Mais en relançant une fois la macro, il y a un hic... ça ne marche plus:
Citation:
Code :
|
|||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : octobre 2008 Messages : 327 ![]() |
Bonjour lahila,
Ton code fonctionne chez moi, à plusieurs reprises aussi... ajoute peut-être un au début du code, Access devrait apparaître et ça te permettra peut-être de vérifier si ta macro s'est exécutée correctement et s'il ferme bien la base et Access à la fin Au pire, peut-être essayer d'ajouter la ligne Avant de quitter Access
__________________
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
Merci pour votre reponse. C'est bizarre que ca bloque chez moi alors, au niveau d'executer la macro
Code :
MonAccess.DoCmd.RunMacro "Executer les macros" |
|
|
00
|
|
|
#4 | |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Le problème d'Access c'est que ça n'a pas vocation à être multi-utilisateur. Du coup lorsque tu travailles sur une bdd elle est verrouillée par Access pour empêcher que quelqu'un d'autre puisse la modifier en même temps.
Je plussoie donc la solution proposée par tototiti2008, à savoir fermer la bdd courante. Par contre je le ferai plutôt comme cela: Car la méthode: s'applique à un objet DAO qui n'a pas été explicitement instancié dans notre cas (et qui n'existe donc pas forcément). D'ailleurs à ce sujet voici ce que dit l'aide VBA: Citation:
|
|
|
|
10
|
|
|
#5 |
|
Membre éclairé
![]() Inscription : octobre 2008 Messages : 327 ![]() |
Bonjour Sclarckone,
Re, Merci de ta précision, ça clarifie pourquoi la base ne se fermait pas dans ma fenêtre...
__________________
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
Je ne connais que très peu le vba, j'ai essayé vos deux codes, juste avant end sub
Pour le , en regardant les lignes du code une par une, il ya une erreur 438 proprieté non gérée par l'objet. La macro d'access s'execute à chaque fois et application.close.. fonctionne mais juste apres il ya le message d'erreur. Pour , la c'est la meme chose sauf qu'il ya un code d'erreur 91 variable objet ou variable de bloc with non définie. Je ne sais pas trop quoi faire. |
|
|
00
|
|
|
#7 | ||||
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Par rapport au code que tu as proposé au début remplace:
Code :
Code :
|
||||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
merci de ton aide, j'ai fait comme tu m'as dit, helas, la deuxieme fois, ça fonctionne toujours pas, toujours cette erreur 3027;
Tant que je referme pas le fichier excel, le fichier access reste en lecture seule. Et pourtant en ouvrant le gestionnaire des taches, il n'ya pas d'application access ouverte. |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
C'est bien de préciser quelle erreur se produit mais ça serait encore mieux si tu peux nous donner la ligne où elle se produit.
Peux-tu également nous reposter le code tel qu'il est actuellement après les modifications que tu lui a apportées? |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
L'erreur 91 et 438 c'etait juste après et . Après j'ai remplacé comme tu m'as dis les deux derniere lignes, ca marche une fois, et quand je recommence la macro s'arrete ici:
Code :
MonAccess.DoCmd.RunMacro "Executer les macros" |
|
|
00
|
|
|
#11 | |
|
Membre éclairé
![]() Inscription : octobre 2008 Messages : 327 ![]() |
Re,
Comme je n'arrive pas à reproduire ton soucis, peux-tu nous expliquer les traitements lancés par ta macro "Exécuter les macros" ? Citation:
Si tu la lances à la main, ça prend combien de temps ?
__________________
|
|
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
Je crois avoir trouvé le problème. En fait je vais t'expliquer ce que je fais reellement. Donc sur ma page excel, j'ai fait Données => données externes=> importer. Donc j'ai maintenant une plage de donnée en A3 qu'actualise en cliquant droit . Mon code entier est le suivant:
Code :
Encore desolé, j'espere que ca va plus vous eclairer |
||
|
|
00
|
|
|
#13 | ||
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Normalement tu devrais plutôt avoir ça:
Code :
|
||
|
|
00
|
|
|
#14 | ||
|
Membre éclairé
![]() Inscription : octobre 2008 Messages : 327 ![]() |
Re,
essaye peut-être comme ça Code :
__________________
|
||
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
Si je fais ton code sclarkone, ca fonctionne tant que je ne fais pas de mise a jour. Si je rajoute le code, ca marche plus apres. Donc ton code tototiti ca marche une fois, tant qu'il a pas passé la mise à jour, puis apres, erreur 3027 et tant que je n'ai plus fermé le fichier excel.
Je comprends pas ce qui ne va pas avec la Mise a jour, cette lecture seule sur le fichier access. |
|
|
00
|
|
|
#16 | |
|
Membre éclairé
![]() Inscription : octobre 2008 Messages : 327 ![]() |
Re,
Edit : Oups, Erreur de saisie, désolé Bon, j'ai essayé de faire des données externes sur la même base (à la main, les données externes) et je n'ai toujours pas de soucis La macro appelée dans la base ajoute un enregistrement à la table liée par les données externes et pourtant ça fonctionne chez moi, même à plusieurs reprises.... Plus vraiment d'idée en stock, sauf peut-être à répondre à la question Citation:
__________________
|
|
|
|
00
|
|
|
#17 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
A tous les coups, c'est parce que ta QueryTable effectue une requête sur la même bdd (et l'a donc verrouillée).
Comment est effectuée l'import des données externes, à la main ou via du code VBA? Il faut faire en sorte que l'ouverture de la bdd par la QueryTable se fasse en mode non exclusif. |
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
je vais regarder avec un ami, et je vous redis. Compliquée cette histoire
Probleme resolu, dans la requete excel, j'ai remplacé Mode=Share Deny Write par Mode=Share Deny None. Et ca fonctionne. merci vous deux. |
|
|
00
|
|
|
#19 |
|
Membre éclairé
![]() Inscription : octobre 2008 Messages : 327 ![]() |
Bonjour lahila,
Pour que je meure moins bête, peux-tu préciser à quel endroit tu changes ce mode de connexion ? Merci
__________________
|
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 9 ![]() |
Salut, quand t'as importé tes données externes tu cliques droit sur une case de cette base de données, tu cliques sur requête, et il ya du code, et c'est ici que j'ai remplacé. Voila. Merci encore pr ton aide !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com