IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Macro au démarrage d'une base


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut Macro au démarrage d'une base
    Bonjour,

    Je souhaite exécuter une macro plus ou moins (autrement dit, avec un script Batch) automatiquement à l'ouverture d'une base Access.

    J'ai découvert deux choses :
    - l’existence de la macro Autoexec qui permet d'exécuter automatiquement des instructions au démarrage.
    - le commutateur /x à préciser à mon batch.

    Je préviens tout de suite que la macro Auto exec ne correspond pas à mon besoin, puisque je dois, en fonction du contexte (définit dans mon batch) lancer l'une ou l'autre des macro.

    J'écrit donc un commande du genre [chemin de mon Access]/MonAccess.mdb /x maSuperMacro.

    Et là ... ... ... rien ne se passe (hormis l'ouverture de mon Access !)
    Avez vous une idée sur la provenance de ce "non déclenchement" ?

    Merci d'avance !

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    Et bien merci pour ces deux liens, mais il se trouve que j'ai déjà testé ces deux méthodes, sachant que comme indiqué dans le tutoriel, la méthode en passage de paramètre fait le même effet que le /x...

    Donc toujours rien de changer, un beau et grand rien du tout se passe lors du lancement de ma base.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Par macro tu entends Macro ou code VBA ? Sous Access ce sont deux choses différentes par rapport à Excel où là tout est macro.

    Philippe

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    Je parle bien de Macro, de se qui se crée avec l'éditeur "made in Access" ou tu enchaines les étapes en déclarant ton action dans un combo, etc...

    et non de VBA ou là tu as éditeur de code (Alt+f11) avec des fonction et tout et tout ...

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    J'écrit donc un commande du genre [chemin de mon Access]/MonAccess.mdb /x maSuperMacro.
    Il n'y a pas de slash (/) devant le nom de la base de données.

    Tu peux aussi avoir un problème de guillemets doubles.

    Exemple nom de macro sans espace(s)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" "C:\Tmp 2\bdd.mdb" /x toto
    Exemple nom de macro avec espace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" "C:\Tmp 2\bdd.mdb" /x "La Macro"
    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    si si il y a bien un slash, mais pour moi il fait partie du chemin ;-)

    Ca ne vient pas non plus des guillemets, testé avec et sans, même réactions !
    Il touvre bien l'accès puisqu'il l'ouvre, mais il ne lance pas la macro...

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Si tu regardes ici et tu verra qu'il n'y a pas de commutateur de ligne de commande devant le nom de la base de données,
    et par conséquent pas de slash (/).
    A la limite un antislash (\) je veux bien , par exemple \\NomServeur\DossierPartage\etc..\bdd.mdb

    Ou alors, si le chemin commence par / ce n'est pas un système de fichier Windows.

    A+

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut Philippe JOCHMANS , LedZeppII et Arcann,

    Citation Envoyé par Arcann
    Je préviens tout de suite que la macro Auto exec ne correspond pas à mon besoin, puisque je dois, en fonction du contexte (définit dans mon batch) lancer l'une ou l'autre des macro.
    tu t'avances un peu vite...
    il existe de multiple façon de conditionner le lancement avec un simple autoexec ou une ouverture de formulaire:
    la condition peut être transmise par variable d'environnement, par fichier... et il est très souvent possible de traiter le contexte en vb sans avoir besoin de générer un batch. au pire éxécuter le batch au démarage et traiter son résultat...

    enfin...

    c'est curieux que tu n'ai pas de message d'erreur:
    -soit le paramètre n'est pas transmis auquel cas: serait mieux c'est que tu nous donnes la ligne de commande.
    -soit un pb de sécurité??? peut être voir les valeurs au centre de gestion de confidentialité?


  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    Slash antislash, tu chipotes... (en plus c'est toi qui à parlé de slash en premier :-P)
    Mais effectivement, je veux être précis ce sont bien des antislash définissant le chemin ou se situe ma base accès...


    En gros ma ligne de commande ressemble à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\Hote\partage\DEV\_Access\MaBase.mdb /x Auto

  11. #11
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    J'écrit donc un commande du genre [chemin de mon Access]/MonAccess.mdb /x maSuperMacro.
    Je croyais que [chemin de mon Access] était le chemin vers Access.exe
    Ça change tout si la ligne de commande ne commence pas par le fichier exécutable.

    Un raccourci ou une ligne de commande qui ne commence pas par le chemin vers Access.exe fonctionne différemment.
    Il met en oeuvre l'association d'un exécutable à une extension de fichier.
    Par défaut, et si cela est possible, DDE est utilisé.
    Cela signifie que si Access est déjà ouvert, et si la ligne de commande commence
    par le chemin et le nom de la base de données, alors elle est ouverte via DDE.
    Dans ce cas, les options de la ligne de commande sont ignorées.
    La ligne de commande vue du nouveau processus Access.exe ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /NOSTARTUP /SHELLSYSTEM [ShellOpenDatabase "\Hote\partage\DEV\_Access\MaBase.mdb"]
    Solution 1
    Utiliser une ligne de commande traditionnelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Chemin vers Access\Access.exe" "\\Hote\partage\DEV\_Access\MaBase.mdb" /x Auto
    Solution 2
    Désactiver DDE.
    Sous XP, depuis l'explorateur Windows :
    Outils > Options des dossiers ...
    Onglet "Type de fichiers"
    Localiser et sélectionner l'extension MDB
    Cliquer sur le bouton "Avancé".
    Sélectionner l'Action "Ouvrir" et cliquer sur le bouton "Modifier..."
    Décocher "Utiliser DDE"
    Cliquer "OK"
    Cliquer "OK"
    Cliquer "Fermer"

    Slash antislash, tu chipotes...
    Non c'est pas moi
    C'est le système d'exploitation qui interprète la ligne de commande
    et l'exécutable qui décode les options de la ligne de commande.

    A+

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    Merci pour ces deux solutions...
    quand on se comprend, tout va mieux ;-)

    La première me gênait vu que je ne trouvait pas l'emplacement de mon exécutable...
    Mais la deuxième me pose un pb -> j'ai pas les droits...

    Donc finalement, en fouinant plus méthodiquement, j'ai trouvé le msaccess.exe... reste à espérer que tout mes utilisateur auront le même emplacement...

    J'ai juste une petite question subsidiaire sur ta deuxième proposition : est ce que le fait de décocher le DDE fait que lors d'un dblclic sur un mdb, le système ne détectera plus automatiquement l'application à utiliser ?

  13. #13
    jojo5650
    Invité(e)
    Par défaut
    regarde dans l'aide d'access l'instruction command$
    cette instruction mémorise les paramètres envoyés à ton appli access
    fait une fonction qui est appelée par la macro autoexec, et dans cette fonction, libre à ton imaginiation pour les actions a effectuer.
    bien à toi
    jojo5650

    Citation Envoyé par Philippe JOCHMANS Voir le message

  14. #14
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,
    Citation Envoyé par Arcann Voir le message
    J'ai juste une petite question subsidiaire sur ta deuxième proposition : est ce que le fait de décocher le DDE fait que lors d'un dblclic sur un mdb, le système ne détectera plus automatiquement l'application à utiliser ?
    Non, cela ne casse pas l'association entre .mdb et Access.exe
    C'est juste la méthode d'ouverture qui change.

    La méthode classique est la ligne de commande, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exécutable fichier_a_ouvrir options de la ligne de commande
    De manière optionnelle on peut choisir la méthode d'ouverture par DDE.
    Celle-ci ne s'applique que lorsque l'exécutable est déjà chargé en mémoire.

    A+

  15. #15
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,
    Citation Envoyé par Arcann Voir le message
    en fouinant plus méthodiquement, j'ai trouvé le msaccess.exe... reste à espérer que tout mes utilisateur auront le même emplacement...
    J'ai une troisième solution à l'aide d'un programme qui lancera Access avec sa ligne de commande.

    Au lieu de lancer Access avec MSAccess.exe, on le lance avec LaunchAccess ou LaunchAccessConsole.

    Exemple de ligne de commande avec Access:
    "C:\Program Files\...\MSACCESS.EXE" "G:\Silica\...\EOL_DISTRIB2.mdb" /WRKGRP "My Documents\ACC_MOP_Security.mdw" /user %USERNAME% /pwd

    Je remplace C:\Program Files\...\MSACCESS.EXE par mon programme :
    "C:\OP\...\LaunchAccess.exe" "G:\Silica\...\EOL_DISTRIB2.mdb" /WRKGRP "My Documents\ACC_MOP_Security.mdw" /user %USERNAME% /pwd
    Il me génère et exécute la ligne de commande suivante
    "C:\Program Files\...\MSACCESS.EXE" "G:\Silica\...\EOL_DISTRIB2.mdb" /WRKGRP "My Documents\ACC_MOP_Security.mdw" /user "MonUserNT" /pwd

    Les programmes LaunchAccess et LaunchAccessConsole vont en fait recréer la première ligne de commande,
    en retrouvant l'emplacement de MSACCESS.EXE à l'aide de AssocQueryString, laquelle permet de retrouver
    l'exécutable associé à une extension de fichier et un verbe (ici "open").

    LaunchAccess est la version GUI et LaunchAccessConsole la version console (CMD.exe).
    Bien sûr, pour tirer pleinement avantage de ce "lanceur Access" il faut qu'il soit stocké dans un emplacement connu et toujours identique.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/11/2010, 11h16
  2. Problème au démarrage d'une base de données 10g
    Par fred_04510 dans le forum Administration
    Réponses: 3
    Dernier message: 16/10/2009, 12h53
  3. Problème de démarrage d'une base 10g
    Par fred_04510 dans le forum Administration
    Réponses: 3
    Dernier message: 13/10/2009, 15h39
  4. Réponses: 3
    Dernier message: 28/04/2008, 17h15
  5. Problème au démarrage d'une base
    Par ambre dans le forum Oracle
    Réponses: 35
    Dernier message: 05/10/2006, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo