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 17/01/2012, 11h07   #1
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
Par défaut Exécution macros via batch

Bonjour,


J'ai crée un fichier .bat me permettant d'ouvrir une macro("Macro_Jour") Access;


Code :
Start /WAIT msaccess.exe    "C:\Users\S8Robert\Documents\Mesprojets\BDD.accdb" /x Macro_Jour

Le souci est que cette macro ouvre une requête qui elle même dépend d'une table liée via un ODBC et aussi d'un module VBA contenant une fonction.

J'aimerai donc savoir s'il existe un moyen d' indiquer dans mon script Batch:
- le mot de passe pour l'ouverture les tables liées
-Activer l'option "Activer ce contenu" de l'alerte sécurité Macro VBA.


Pour que l'éxécution de mon batch se fasse sans problème.

Je vous remercie d'avance.
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h41   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Hello,

la partie activer le contenu me parait très peu envisageable niveau automatisation.
Pour la partie mdp et compagnie, tu peux effectivement passer les informations depuis ton fichier batch.

Un peu de lecture à ce sujet
http://jpcheck.developpez.com/tutori...ge-parametres/
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h50   #3
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
Salut,

justement c'est ce tuto qui m'a permi d'écrire mon script par contre je n'y ai pas vu comment spécifier le mot de passe. pourrais -tu m'indiquer?



Merci.
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h55   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Le mot de passe reste une chaine de caractères.
Il te faut donc le passer en complement de la macro que tu souhaites exécuter. Tu peux donc te référer au chapitre
http://jpcheck.developpez.com/tutori...tres/#LXII-E-2

Reste à toi de créer la nomenclature adéquate.
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 09h48   #5
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
Salut, j'ai essayé suivant et au finish ça marche pas (le mot de passe pour la connection à SQL Server est joiedevivre


Code :
Start /WAIT msaccess.exe    "C:\Users\S8Robert\Documents\Mesprojets\BDD.accdb" /cmd Macro_Jour

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function StartUp( )
Dim monparam as Variant  ' déclare une variable 
Dim Mot_dePass as character 
Mot_dePass="joiedevivre"
 
monparam = Command( )     ' affecte la valeur transmise à la variable
 
	If Not IsNull(monparam) Then 	'si la variable est nulle
		If Len(monparam)>0 Then 	'on s'assure qu'un paramètre a été passé, sinon pas de comportement particulier
		RecuperationSplit = Split(monparam,Mot_dePass)
 
                   DoCmd.RunMacro monparam
		End If
	End If				
End Function
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 09h54   #6
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Hello,

plusieurs petites choses :
- le mot de passe doit non pas etre stocke dans le code VBA mais le passage du parametre batch
Code :
Start /WAIT msaccess.exe    "C:\Users\S8Robert\Documents\Mesprojets\BDD.accdb" /cmd "Macro_Jour|joiedevivre"
une fois ce parametre envoyé, il faut le lire convenablement dans le code VBA.
Code :
1
2
Dim Mot_dePass as character 'il faut un String et non character
Mot_dePass="joiedevivre"
disparaissant du code
- la fonction split sert a decomposer sous forme de tableau un ensemble de donnees séparées par une valeur précise (dans mon cas le caractère "pipe" (alt gras + 6 = |)
Code :
RecuperationSplit = Split(monparam,"|")
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 10h20   #7
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
J'ai apporté toutes ces modifications et en exécutant le batch j'obtiens:

Erreur '2485'

Microsoft access ne paut pas trouver l'objet <<Macro_Hebdo| >>

J'ai voulu ouvrir une macro dont la connection à sql server est " " le vide (car en fait la majorité des tables liées ont pour mot de pass ce vide ).

Code :
start /WAIT msaccess.exe "C:\Users\S0085374\Documents\Mesprojets\BDD_ITCE_CAISSE.accdb" /cmd "Macro_Hebdo|" ""


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Function StartUp()
Dim monparam As Variant  ' déclare une variable
Dim Motdepass As String
Motdepass = " "
monparam = Command()      ' affecte la valeur transmise à la variable
 
    If Not IsNull(monparam) Then    'si la variable est nulle
        If Len(monparam) > 0 Then   'on s'assure qu'un paramètre a été passé, sinon pas de comportement particulier
            RecuperationSplit = Split(monparam, "|")
            DoCmd.RunMacro monparam
        End If
    End If
End Function
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h00   #8
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Attention,

je n'avais pas tout donné d'un coup

-la chaine de caractères vide est "" et non pas " "

une fois le caractère | détecté dans la chaine de caractères, il faut utiliser les deux infos

Code :
1
2
3
4
5
6
7
8
9
10
11
Function StartUp()
Dim monparam As Variant  ' déclare une variable
monparam = Command()      ' affecte la valeur transmise à la variable
 
    If Not IsNull(monparam) Then    'si la variable est nulle
        If Len(monparam) > 0 Then   'on s'assure qu'un paramètre a été passé, sinon pas de comportement particulier
            RecuperationSplit = Split(monparam, "|")
            DoCmd.RunMacro RecuperationSplit(0), RecuperationSplit (1) 
        End If
    End If
End Function
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h13   #9
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
J'ai erreur '2498'

Le type d'un expression entrée pour un des arguments est incorrect


Code :
start /WAIT msaccess.exe "C:\Users\S0085374\Documents\Mesprojets\BDD_ITCE_CAISSE.accdb" /cmd "Macro_Jour|"" "
Code :
1
2
3
4
5
6
7
8
9
10
11
Function StartUp()
Dim monparam As Variant  ' déclare une variable
monparam = Command()      ' affecte la valeur transmise à la variable
 
    If Not IsNull(monparam) Then    'si la variable est nulle
        If Len(monparam) > 0 Then   'on s'assure qu'un paramètre a été passé, sinon pas de comportement particulier
            RecuperationSplit = Split(monparam, "|")
            DoCmd.RunMacro RecuperationSplit(0), RecuperationSplit(1)
        End If
    End If
End Function
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h37   #10
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
a quelle ligne as-tu cette erreur ?

La ligne batch est a corriger aussi :
Code :
start /WAIT msaccess.exe "C:\Users\S0085374\Documents\Mesprojets\BDD_ITCE_CAISSE.accdb" /cmd "Macro_Jour|"
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h48   #11
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
J'ai corrigé le batch et j'ai toujours une erreur au niveau la ligne suivante:

Code :
DoCmd.RunMacro RecuperationSplit(0), RecuperationSplit(1)
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 10h07   #12
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Hello,

s'il s'agit de mot de passe au niveau des tables utilisées dans la macro, tu peux regarder comment utiliser le code issu de la
http://access.developpez.com/faq/?pa...kTablePassword

Concernant l'erreur, c'est moi qui l'ai initiée en croyant que la fonction RunMacro prenait ces 2 paramètres, ce qui n'est pas le cas

Il faudra donc passer par le code d'activation des tables liées avec le mot de passe avant de lancer la macro en consequence

Est-ce clair pour toi ??
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 14h11   #13
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
Salut, jpcheck

J'ai bein examiné le code VBA de la FAQ, je t'apporte cependant les précisions ci-après
Ma base de données access n'est pas protégée par un mot de Pass c'est plutôt la table qu'elle contient(table déjà liée à Access qu'on va nommer Check) qui appartient à une source de données ODBC dont la connection à SQL Server nécéssite un mot de passe (qu'on va nommer bien).

Avec la table Check j'ai fait plusieurs requêtes et macros, je ne peux donc ouvrir ces requêtes ou ces macros sans avoir au préalable rentrer le mot de pass
bien.


Mon problème n'est plus de lier Check à ma BDD access mais :
-d'activer automiquement la connection de ma source de données ODBC à sql server
-Lancer une de mes macros via un batch.


Or d'après ce que je comprends, le code de la FAQ liera Check à ma BDD access, ce qui est déjà fait.


Je te remercie par avance et espère t'avoir apporté plus de précisions
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 14h41   #14
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Et le fait de stocker le mot de passe lors de la liaison n'est pas envisageable ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 20h21   #15
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
Pourrais-tu être plus explicite?
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 15h27   #16
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
dans la chaine de connection de ta table, tu peux stocker le mot de passe par VBA. Si le mdp est stockée, pas besoin de le redonner au début
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 09h52   #17
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 181
Points : 34
Points : 34
Bonjour jpcheck,
désolé pour cette réponse tardive . Je ne vois pas comment stocker le mot de passe par VBA dans la chaine de connection comme tu le dis.
kedmard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h31.


 
 
 
 
Partenaires

Hébergement Web