Lancer du code au démarrage puis fermer la base. [Access/VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 22-06-2004 à 16:10:44
Cree une sub de nom "autoexec" (Access 97) ou "application_onload" (Access 2000)
PS: Pour Access 2000 je ne suis plus sûr que c'est bien ce nom.
PS²: Dans tous les cas, l'utilisateur peut désactiver l'éxécution automatique de la macro de démarrage (option sécurité/macros)
Marsh Posté le 22-06-2004 à 16:13:07
A priori sous 2000 c'est plutôt : Form_Load
Mais je trouve ça chelou, logiquement ça ne se lancera que lorsque tu ouvriras la form en question... Essaie quand même Application_Load
http://www.tek-tips.com/gfaqs.cfm/ [...] 5/fid/4998
Marsh Posté le 22-06-2004 à 16:24:29
Oui, ca marche aussi avec un macro autoexec, mais mon soucis est surtout de fermer l'appli une fois mon code exécuté... Quil ne reste plus rien a l'écran quoi.
Marsh Posté le 22-06-2004 à 16:30:46
quit ?
ou application.quit
Je sais plus, je crois qu'il faut passer par l'objet application.
Marsh Posté le 22-06-2004 à 16:34:57
--> Ajuna: Affirmatif, c'est l'objet application qui permet de quitter tout.
--> Yoyo@: Attention! Tu ouvres Access, ton code se lance et quitte Access. Il faut pouvoir interrompre la macro, sinon tu ne peux plus ouvrir ta base !
Marsh Posté le 22-06-2004 à 16:37:19
JihemAir a écrit : --> Ajuna: Affirmatif, c'est l'objet application qui permet de quitter tout. |
Si, il suffit de démarrer Access sans base de données. Onglet sécurité, désactiver toutes les macros, puis ouvrir la base
Marsh Posté le 23-06-2004 à 00:56:32
Bon, écoutez, si je mets un Application.Quit dans le code s'exécutant, j'obtiens comme précécemment une erreur du type :
Cannot find the file 'C:\Documents and Settings\Administrator\Desktop\CallNodes\copy.mdb' (or one of its components). Make sure the path and filename are correct and that all required libraries are available.
Je ne comprends pas...
Par contre, si j'enleve le Application.quit, tout marche bien...mais la fenetre Access ne se ferme pas apres exécution (normal...)
Marsh Posté le 23-06-2004 à 09:28:30
Je résume donc la situation:
Je créée une base Access .mdb.
A l'intérieur de celle la, je crée une unique macro au doux nom de AutoExec, et avec comme unique Action un "Quit" (qui a pour effet d'appeler Application.Quit).
Alors, quand je clique pour ouvrir mon .mdb, le tout se ferme bien, mais avec le message d'erreur dont je vous parle plus haut...
Par contre, si je me contente d'exécuter la macro de maniere indépendante, ca ferme bien ma base sans probleme...
Voila.
Que faire?
Marsh Posté le 23-06-2004 à 10:07:04
Essaie la commande:
DoCmd.Quit
Marsh Posté le 23-06-2004 à 10:16:57
C'est fait...
Meme constat, ca ne marche pas!
(pour infom la commande Docmd.Quit appelle Application.Quit)
Marsh Posté le 23-06-2004 à 10:24:19
Je suis sous Access 97. J'emploie DoCmd.Quit à partir d'un bouton sur un formulaire, et ça marche (Access se ferme complètement). Je n'ai pas testé à partir d'une macro Autoexec, mais je suppose que ça doit faire pareil...
Marsh Posté le 23-06-2004 à 10:46:21
C justement avec la macro Autoexec que ca ne marche pas... La est tout mon probleme!!!
Marsh Posté le 23-06-2004 à 10:50:10
Yoyo@ a écrit : C justement avec la macro Autoexec que ca ne marche pas... La est tout mon probleme!!! |
Dans ta macro, fait appel à un timer qui va lui-même lancer la fermeture d'access, ça marchera peut-être
Marsh Posté le 23-06-2004 à 11:07:55
Comment faire pour faire appel a un Timer dans ma macro?
Le seul moeyn que je connaisse, c'est de faire appel a un form, qui lui meme contienne un Ontimer Event. Mais c'est pas tres tres beau je trouve...
Marsh Posté le 23-06-2004 à 11:28:06
BOn, a priori, meme en utilisant une form avec un Timer, ca ne marche pas, et ca me fait la meme erreur.
C'est quand meme bizarre que je ne puisse pas arriver a mes fins. Ca ne paraissait pourtant pas compliqué comme situation...
Marsh Posté le 23-06-2004 à 11:29:06
J'ai testé en Access 97, avec la macro Autoexec qui contient l'action "Quitter" et ça marche super bien. A tel point que je ne peux plus ouvrir ma base!!! Et je n'ai pas l'onglet "Sécurité" pour désactiver les macros.... Heureusement que c'est une base vide, créée pour les tests. En tout cas, perso, je ne sais pas quoi dire de plus. C'est vrai que le timer n'est pas très chouette, mais si c'est une solution. Autrement, peut-être peux-tu écrire une fonction Access_Quit que tu appelles depuis ta macro ?
Marsh Posté le 23-06-2004 à 11:49:16
La fonction Access_Quit appelée depuis la macro, c'est déja fait, et ca ne résoud pas le probleme (ce qui nest pas illogique)
Le Timer, ca ne marche pas non plus.
Et avec la macro Autoexec, je suis surpris que ca amrche sous 97 (mais lol, si y a le pb avec la sécu) Je vais tester sous Access 2000.
Mderci de ton aide
Marsh Posté le 23-06-2004 à 12:04:19
Yoyo@ a écrit : Comment faire pour faire appel a un Timer dans ma macro? |
ben tu le met pas visible ton form
Marsh Posté le 23-06-2004 à 12:06:19
Yoyo@ a écrit : C'est quand meme bizarre que je ne puisse pas arriver a mes fins. Ca ne paraissait pourtant pas compliqué comme situation... |
Je pense que c'est pour éviter les applis "qui font rien".
Le truc tu clique dessus, ca pédale 5 minutes, puis plus rien, tu comprends pas pourquoi. Tu t'excites alors dessus à le lancer 25 fois et paf y'a tout qui plante.
Je vois pas trop ce que tu veux faire, mais un simple msgbox indiquant au gars que tout est pour le mieu dans le meilleur des mondes possible, et qu'il fait grand beau temps dehors, c'est pas un luxe, et je suis sûr que ca va te débloquer.
Marsh Posté le 23-06-2004 à 12:27:25
En fait, c'est fou...
Je viens de faire la meme chose sous AccessXP, sous mon PC de bureau (Macro Autoexec, avec un commande Quit) et ca marche. Alors, je prends le meme fichier, et je le mets sur mon portable (toujours AccessXP) et la...il me balance l'erreur que je vous ai dite...
---------------------------
C:\Documents and Settings\Administrator\Desktop\SentEmails\Nouveau Microsoft Access Application.mdb
---------------------------
Cannot find the file 'C:\Documents and Settings\Administrator\Desktop\SentEmails\Nouveau Microsoft Access Application.mdb' (or one of its components). Make sure the path and filename are correct and that all required libraries are available.
---------------------------
OK
---------------------------
Pour info, mon PC de bureau tourne sous Windows XP alors que mon PC portable tourne sous Win2000...
Marsh Posté le 23-06-2004 à 12:30:43
Faut peut-être réinstaller le Office......
Marsh Posté le 23-06-2004 à 12:37:40
Je me demande si ca ne vient pas du fait que sous 2000, il y a un utilisateur implicite du genre "Administrator"?
Je ne pense pas que le fait de réinstaller résolve quoi que ce soit... Je vais continuer a enqueter...
Marsh Posté le 23-06-2004 à 13:28:56
Euh... Si tu vire le "quit", t'as pas l'erreur ?
Parceque je ne vois pas du tout quel peut être le rapport entre le message d'erreur et ton quit...
Marsh Posté le 23-06-2004 à 13:39:07
Tout a fait.
Si je vire le "Quit", pas derreur.
Et si je le laisse, mais que je lance la macro a la main, pas d'erreur non plus...
Ca na rien a voir donc avec la macro, mais plutot avec le fait de quitter la base de cette maniere. (car jobtiens la meme erreur avec une form que je mets dans le startup avec un Quit dans le On Open de la form (si tu vois ce que je veux dire))
Marsh Posté le 23-06-2004 à 13:59:55
Arf.
Crée un racourcis vers ta base.
Edite le racourcis, et met comme espace de travail le répertoire qui contient la base. Ca résoudra peut-être ton problème.
Marsh Posté le 23-06-2004 à 14:00:47
Le répertoire "SentEmails", c'est bizarre non? Je ne vois pas de rapport avec la messagerie !
Marsh Posté le 23-06-2004 à 14:02:08
A tout les coups il a mis sa base dans outlook et l'éxécute depuis Outlook.
Marsh Posté le 23-06-2004 à 14:05:29
Arjuna a écrit : A tout les coups il a mis sa base dans outlook et l'éxécute depuis Outlook. |
C'est possible ça ????
Marsh Posté le 23-06-2004 à 15:25:10
Nan, nan, lol, c un répertoire temporaire que javais créé comme pont entre mes deux ordis. C un répertoire comme un autre, rien a voir donc!
Marsh Posté le 23-06-2004 à 15:47:32
Et quand tu fais "Outils", "References" sous VB, t'as pas des librairies manquantes ?
Marsh Posté le 23-06-2004 à 15:50:51
Mais non.
Et en plus, ca n'a forcément rien a voir, car le meme fichier mdb marche sous mon PC fixe (WinXP) mais pas sous le portable (Win2000)
Marsh Posté le 23-06-2004 à 15:57:19
T'aurais pu avoir des DLL mal installées sur ton portable...
Marsh Posté le 23-06-2004 à 17:55:01
T'as essayé avec mon truc ?
Sur les deux PC, Access est installé dans le même répertoire ? Même langue ? Style y'a plein de trucs succeptibles de foutre la merde...
Marsh Posté le 10-11-2004 à 17:55:36
Bonjour,
Nous rencontrons le meme pb sous windows 2000.
As tu trouvé une solution ?
Merci d'avance.
Marsh Posté le 22-06-2004 à 14:55:54
Salut,
J'ai besoin de lancer sous Access un petit morceau de code, basé sur un traitement type Base De Données, puis de fermer automatiquement Access.
J'ai pensé faire ca avec une macro qui se lance automatiquement au démarrage (Autoexec), qui lance un morceau de code, puis qui contienne une clause Quit.
Mais ca ne marche pas, j'obtiens un message derreur me disant que ma base de données est introuvable.
Comment faire?
Message édité par Yoyo@ le 22-06-2004 à 15:27:09