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 14/01/2011, 15h09   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
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
Pascal 999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 17h11   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Bonjour,

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

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 09h50   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
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
Pascal 999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h27   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h23   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
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 :
DoCmd.RunCommand acCmdNewObjectTable

Pascal
Pascal 999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h27   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
jpg de ma fenetre .
Images attachées
Type de fichier : jpg A2003.JPG (57,8 Ko, 9 affichages)
Pascal 999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 13h04   #7
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 14h25   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
un mda
Pascal 999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 14h42   #9
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2011, 15h09   #10
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 936
Points : 7 936
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é!
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 14h14   #11
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
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 :
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
Pascal 999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 15h19   #12
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
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 :
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 :
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 17h49   #13
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 2
Points : 2
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 :
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
Pascal 999 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 00h47.


 
 
 
 
Partenaires

Hébergement Web