Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 25/09/2011, 11h38   #1
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Par défaut Lancement d'une macro dans une autre BD

Bonjour,

Je cherche à lancer un code à l'intérieur d'une autre base de données (base 2), à partir de ma base principale (base 1). Le hic, c'est que ça ne marche (et c'est impec) que quand je lance ce code directement dans la base 2. Après, cela marche à partir de la base 1 aléatoirement (ça peut fonctionner comme ça peut ne pas fonctionner), mais toujours en arrière plan (une fenêtre pour sélectionner un fichier s'ouvre en arrière plan et il faut aller la chercher avec alt-tab.

Voici le code de lancement dans la base 1:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function import_BCM()
 
On Error GoTo err_import_BCM
Dim obj As New Access.Application
obj.OpenCurrentDatabase ("D:\Métrévit\Keynotes.accdb"), True
 
obj.DoCmd.RunMacro "ImportBCM_utilise_nom_cree_keynote"
 
SendKeys "%{TAB}" 
 
obj.CloseCurrentDatabase
Set obj = Nothing
 
err_import_BCM:
 
Resume Next
  '
 
End Function
Qu'est ce qui cloche ici ?

Merci de votre aide.

O.
oreoolep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 11h56   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 087
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 087
Points : 11 622
Points : 11 622
Bonjour,

Pourquoi ne lance-tu pas directement ta macro par ligne de commande au moyen d'un shell ?

Regarde le tuto sur les options de la ligne de commande sur ma page.

Il y a une option pour lancer une appli en spécifiant la macro à exécuter.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 14h51   #3
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Par défaut changement de démarche

Bonjour,

Je viens de changer de démarche comme suggéré. ça fonctionne de cette manière :

lancement de la base 2 via un code shell :
Code :
1
2
 
Shell ("C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE D:\Métrévit\Keynotes.accdb"), vbHide

lancement d'un autoexec dans la base 2 pour faire le travail.

Pour ce qui est du code, c'est assez direct et basique. Je n'ai pas encore pu faire fonctionner la partie /x "macro", parce que je reçois une erreur relative à la syntaxe.


Maintenant, pour être perfectionniste, est-il possible d'éviter l'affichage -durant une fraction de seconde- du splash screen d'Access ? ensuite comment afficher un message indiquant que le travail a été effectué dans la base 2, sans que celui-ci ne s'affiche en arrière plan.

En tout cas, merci pour l'idée. C'est effectivement plus simple.

Bien cordialement,

O.
oreoolep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 16h48   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 087
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 087
Points : 11 622
Points : 11 622
Concernant la syntaxe il faut doubler les double cote. C'est une règle générale du langage et non de la commande.

Code :
shell "c:\...\MSACCESS.EXE c:\...\monfichier.accdb /x ""maMACRO""",vbhide
Non avec un shell tu auras toujours le splash access qui s'affiche.
Pour afficher un message écrit-le dans un formulaire Modal/independant.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 00h26   #5
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Par défaut Compris

OK. Merci beaucoup pour ton aide.

Ore
oreoolep 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 17h58.


 
 
 
 
Partenaires

Hébergement Web