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

VBA Access Discussion :

Avec VBA ouvrir une macro en mode design.


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Avec VBA ouvrir une macro en mode design.
    * Bonjour *

    J'essaye d'ouvrir avec VBA une macro en mode design, mais je ne trouve pas l'instruction.

    Pour créer une nouvelle macro c'est : RunCommand acCmdNewObjectMacro
    Pour executer une macro c'est : DoCmd.RunMacro Item

    Mais pour ouvrir en mode design une macro

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Je suis un peu curieux... Dans quel but ?

    Argy

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Je passe de Access 2003 à Access 2010. J'ai beaucoup d'habitudes avec 2003 que je veux garder. C'est pourquoi je développe un addins qui reproduit la fenetre d'Access 2003.

    Malheureusement, je ne trouve pas l'instruction ou il est possible d'ouvrir avec VBA une macro en mode design.

    Voila le pourquoi de ma question.

    Pascal

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Ouh là !!! Je suis toujours comme la fosse


    Il y a un (autre) truc que je ne comprends pas...
    Pourquoi veux tu pouvoir créer des macros via VBA si tu as les compétences pour créer un complément ?
    Que veux tu pouvoir créer comme macro que tu ne peux exécuter en VBA !!!
    Si c'est dédié utilisateur, il est inutile de continuer car ce n'est pas une bonne apporche de la conception d'une application que de donner la main aux utilisateurs dans ce sens.

    N'importe comment, je ne crois pas me tromper en te confirmant que ce n'est possible de faire ce que tu souhaites, d'une part parce que le Designer de macros est fait pour les néophytes en VBA et que d'autre part, je n'en vois pas du tout l'intérêt...
    C'est un peu comme si tu demandais comment créer une macro Excel 4.0 (que tu n'a certainement pas connu) avec VBA - même si c'est possible.

    Argy

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Ma mission est de publier le complément aux utilisateurs qui ne connaissent pas le vba et qui ont déja créé des bases avec macros en access 2003.

    On passe en Access 2010 et pour que ce soit simple, je réécrit la même fenêtre qu'en 2003. (jpg ci joint)

    J'ai un autre souci, la commande pour créer une nouvellle table ne marche pas dans le complément. Elle marche dans un programme, mais pas dans un complément

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdNewObjectTable

    Pascal

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    jpg de ma fenetre .
    Images attachées Images attachées  

  7. #7
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Pascal
    Elle marche dans un programme, mais pas dans un complément
    Comment se constitue ton complément ou plutôt qu'appelles-tu complément ?
    C'est un MDA, une DLL ?

    Argy

  8. #8
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    un mda

  9. #9
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Un MDA avec des DoCmd !!!? et en plus des RunCommand !!!

    Passes-tu l'objet Application en paramètre (au moins) dans tes procédures ?
    Cet élément est nécessaire pour exploiter ton DoCmd qui ma foi est un très mauvaise idée de l'utiliser là...
    Pour créer une table, tu prends le CurrentDB passé à une variable que tu exploites la méthode CreateTable.

    Sincèrement, je ne sais pas si c'est de ton propre chef cette initiative mais sincèrement, Access 2010 est on ne peut plus simple et a été justement pensé pourt des utilisateurs non expérimentés.
    Je ne veux pas te décourager, loin de là, l'idée est bonne mais tel que tu me présentes le peu de bout de code que tu utilises ne serait-ce pour créer une table, j'ai un gros doute sur l'aboutissement de ton projet.
    Par ailleurs, gères-tu au moins l'erreur 2501 pour la circonstance ? (Annuler)

    Dans cette idée, j'aurais plutôt développé un assistant sous forme de Popup avec Suivant/Précédent comme il en existe déjà dans Access et eux, n'ont pas changé de look ou si peu...
    Redéfinir une interface look 2003 ne va pas aider tes utilisateurs à progresser.

    Argy

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    je n'ai pas testé, c'est marqué freeware, c'est en anglais :
    http://www.avenius.de/en/index.php?ProductsBC2007

    si ça fonctionne bien, un petit lexique anglais<=>français pour les anglophobes coutera moins cher de redévelopper toute la fenêtre

    écrire une petite doc sur l'utilisation du volet de navigation et l'emplacement des boutons dans le ruban suffirait également, ce n'est quand même pas si compliqué!

  11. #11
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Un grand merci à vous deux argyronet et Arkham46,

    J'ai trouvé une solution de contournement pour la création d'une nouvelle table à partir d'un complément, mais toujours rien pour ouvrir une macro en mode design.

    Je ne peux pas utiliser un autre complément que le mien car il permet d'autres choses afin d'être une aide aux développeurs (scanner une base, afficher les différences entre les versions.. ) et évoluera en fonction des demandes.

    Donc ma solution de contournement est (puisqu'il est impossible de créer une nouvelle table directement à partir d'un formulaire d'un complément) : de la faire à partir de la base.

    Dans le complément avoir un formulaire "frm_Complement" ayant juste un libelle.

    1) copier le formulaire "frm_Complement" du complément dans la base avec un autre nom "CREATION EN COURS".
    2) ouvrir le formulaire "CREATION EN COURS" en mode icon.
    3) Enfin créer la nouvelle table (car maintenant on est dans la base et plus dans le complément)
    4) fermer la fenetre "CREATION EN COURS".
    5) détruire la fenetre "CREATION EN COURS".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    Private Sub Cmd_New_Table_Click()
      Dim str_Ecran As String
      Dim str_Ecran_1 As String
      Dim i As Integer
     
      i = 1
      ' Vérifier qu'il n'y a pas déja une fenêtre du même nom
      str_Ecran = "CREATION EN COURS"
      str_Ecran_1 = "CREATION EN COURS"
      While Est_Une_Form(str_Ecran)
        str_Ecran = str_Ecran_1 & i
        i = i + 1
      Wend
     
     
      DoCmd.CopyObject CurrentDb.Name, str_Ecran, acForm, "frm_Complement"
      DoCmd.OpenForm str_Ecran, acNormal, , , , acIcon
      On Error Resume Next
     
      CurrentProject.Application.DoCmd.RunCommand acCmdNewObjectTable
     
      DoCmd.Close acForm, str_Ecran, acSaveNo
      DoCmd.DeleteObject acForm, str_Ecran
     
    End Sub
     
     
     
    Function Est_Une_Form(str_Form As String) As Boolean
      Dim db As Database
      Dim ctr As Container
      Dim doc As Document
     
      Est_Une_Form = False
     
      Set db = CurrentDb
      Set ctr = db.Containers("Forms")
      ctr.Documents.Refresh
      For Each doc In ctr.Documents
        If doc.Name = str_Form Then
          Est_Une_Form = True
          Exit Function
        End If
      Next doc
     
    End Function

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Methode tetratomique capilaire verticale que celle-là...

    Citation Envoyé par Pascal 999
    puisqu'il est impossible de créer une nouvelle table directement à partir d'un formulaire d'un complément
    Ah bon !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set NewTable = DB.CreateTableDef(TableName)
    DB est l'objet Database passé en paramètre à ta fonction dans ton MDA et TableName est le nom de la table...

    Un peu de DAO stuffs seraient à implémeter dans ton complément

    Sinon, si tu veux rester pro-assistant mode 2003, voici le script qu'il te faut dans ton MDA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub CreateTableWizard(ByRef AccessApp As Application, Optional ByVal ShowMessageOnCancel As Boolean = False)
        On Error Resume Next
        AccessApp.DoCmd.RunCommand acCmdNewObjectTable
        If Err <> 0 Then
            If ShowMessageOnCancel Then
                MsgBox "Vous avez annulé l'assistant création de table.", vbInformation
            End If
        End If
        On Error GoTo 0
    End Sub
    Argy

  13. #13
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci pour ton code argyronet, mais je ne sais pas comment passer en paramètre le bon AccessApp et comment l'obtenir dans mon complément.

    J'ai essayé beaucoup de choses :

    CurrentProject.Application , en retour j'ai une erreur
    Run-time error '2046' : The command or action "NewObjectTable" isn't available now.

    CodeProject.Application ce n'est pas ce que je veux faire.

    J'ai essayé des trucs dingues avec une fonction dans le module de la base qui était appelée dans le complément par Eval("Create_New_Table()") , retour de la même erreur Run-time error '2046' : The command or action "NewObjectTable" isn't available now.

    J'ai essayé en créant une autre instance access dans le complément, mais j'avais deux fenêtres access et c'est pas ce que je veux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    '--------- exemple avec Access.Application --------------------
      Dim app_Access As Object
      Dim str As String
     
      Set app_Access = CreateObject("Access.Application")
      app_Access.Visible = True
      str = CurrentDb.Name
      app_Access.OpenCurrentDatabase str
      app_Access.DoCmd.RunCommand acCmdNewObjectTable
    Et quand j'ai trouvé la méthode "tetratomique capilaire verticale" j'étais content parce que j'ai pas trouvé mieux pour l'instant.

    Je suis d'accord, c'est tetratomique, mais ca marche.

    Pascal

Discussions similaires

  1. [XL-2013] Suppression de doublons dans un classeur Excel avec utilisation d'une macro VBA
    Par gblassel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2014, 16h18
  2. ouvrir une requete en mode sql via vba
    Par moimemessssssssss dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/09/2008, 11h43
  3. VBA : ouvrir une macro depuis une autre BDD
    Par crovette51101 dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/05/2007, 08h09
  4. (VB6)Ouvrir une form en mode ajout à parti d'une autre
    Par djancof dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 13/02/2006, 14h40
  5. Ouvrir une base en mode partagé ?
    Par soad029 dans le forum Access
    Réponses: 5
    Dernier message: 10/01/2006, 20h08

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