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 :

Switchboard Executer code


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut Switchboard Executer code
    Bonsoir,

    J'ai incorporé a mon appli un menu basé sur un switchboard, que j'ai récupéré sur le net.
    Je découvre que je peut faire appelé do code aux boutons de ce menu (Executer Code).
    Il suffit apparement d'entrer le nom d'une fonction!

    Mes questions sont :
    quelle est la forme du nom de cette fonction ?
    Ou doit-elle être placé ? (module, classe)

    Merci pour votre aide !

  2. #2
    Membre confirmé Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    Je me paermet de faire remonter mon post car je me rends compte que je n'est pas mis le code, donc cela ne doit pas être facile à comprendre !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set rs = CreateObject("ADODB.Recordset")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Case conCmdRunCode
                Application.Run rs![Argument]
    En fait je cherche la valeur que doit prendre [Argument]

    Merci

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu peux expliquer ce que tu souhaites réaliser?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    Si Argument doit être remplacé par le nom d'une fonction : ça en sert à rien d'ouvrir un recordset

    Comme le dit Pierre : plus de précisions seraient les bienvenues

  5. #5
    Membre confirmé Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    En fait je souhaite que l'évenement click du dit bouton ouvre un UserForm VBA !

    Je pense que doit être du genre

    Mais je ne sait pas pas comment lui passer le "Argument" !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je ne vois pas à quoi sert ton recordset dans ce cas.

    Il serait intéressant que tu donnes le code événementiel du switchboard, et que tu précises ce qu'est ce "switchboard"...

    Pour ouvrir un formulaire, tu as plusieurs solutions, et parmi elles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Monformulaire.Show
    si tu connais à l'avance le nom du formulaire, ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms(Formulaire).Show
    avec Formulaire comme variable texte contenant le nom du formulaire à ouvrir.

    Si ton switchboard contient un bouton VBA, tu incorpores la ligne souhaitée dans le code de l'évènement click dudit bouton

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre confirmé Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    Mon Switchboard : est le menu dynamique de mon application

    Voila le code (désolé les com était sont en parti en anglais je n'ai pas finit de la traduire !

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    Option Compare Database
     
    Private Sub Form_Open(Cancel As Integer)
    ' Minimise la fenêtre base de donnée et initialize le formulaire.
     
        Dim dbs As Database
        Dim rst As Recordset
     
    On Error GoTo Form_Open_Err
     
        ' Minimise la fenêtre base de donnée.
        DoCmd.SelectObject acForm, "Menu Général*", True
        DoCmd.Minimize
     
        '
        'Placement à la page standard marquée par défaut
        Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Par défaut' "
        Me.FilterOn = True
     
    Form_Open_Exit:
        Exit Sub
     
    Form_Open_Err:
        MsgBox Err.Description
        Resume Form_Open_Exit
     
    End Sub
     
    Private Sub Form_Current()
    ' Met à jour la légende et compléte la liste d'options.
     
        Me.Caption = Nz(Me![ItemText], "")
        Me.TB_TitreMenu.Caption = "> " & Me.Caption
        FillOptions
     
    End Sub
     
    Private Sub FillOptions()
    ' Complète les options pour la page standard
     
        ' Le nombre de boutons du formulaire :
        Const conNumButtons = 8
     
        Dim con As Object
        Dim rs As Object
        Dim stSql As String
        Dim intOption As Integer
     
        'place le focus sur le premier bouton du formulaire,
        'et puis cache tous les boutons sur la forme
        'Vous ne pouvez pas cacher le champ avec le focus.
     
        Me![Option1].SetFocus
        For intOption = 2 To conNumButtons
            Me("Option" & intOption).Visible = False
            Me("OptionLabel" & intOption).Visible = False
        Next intOption
     
        ' Open the table of Switchboard Items, and find
        ' the first item for this Switchboard Page.
        Set con = Application.CurrentProject.Connection
        stSql = "SELECT * FROM [Switchboard Items]"
        stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
        stSql = stSql & " ORDER BY [ItemNumber];"
        Set rs = CreateObject("ADODB.Recordset")
        rs.Open stSql, con, 1   ' 1 = adOpenKeyset
     
        ' If there are no options for this Switchboard Page,
        ' display a message.  Otherwise, fill the page with the items.
        If (rs.EOF) Then
            Me![OptionLabel1].Caption = "Il n'y a aucun élément pour cette page de Menu Général"
        Else
            While (Not (rs.EOF))
                Me("Option" & rs![ItemNumber]).Visible = True
                Me("OptionLabel" & rs![ItemNumber]).Visible = True
                Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText]
                rs.MoveNext
            Wend
        End If
     
        ' Close the recordset and the database.
        rs.Close
        Set rs = Nothing
        Set con = Nothing
     
    End Sub
     
    Private Function HandleButtonClick(intBtn As Integer)
    ' This function is called when a button is clicked.
    ' intBtn indicates which button was clicked.
     
        ' Constants for the commands that can be executed.
        Const conCmdGotoSwitchboard = 1
        Const conCmdOpenFormAdd = 2
        Const conCmdOpenFormBrowse = 3
        Const conCmdOpenReport = 4
        Const conCmdCustomizeSwitchboard = 5
        Const conCmdExitApplication = 6
        Const conCmdRunMacro = 7
        Const conCmdRunCode = 8
        Const conCmdOpenPage = 9
     
        ' An error that is special cased.
        Const conErrDoCmdCancelled = 2501
     
        Dim con As Object
        Dim rs As Object
        Dim stSql As String
     
    On Error GoTo HandleButtonClick_Err
     
        ' Find the item in the Switchboard Items table
        ' that corresponds to the button that was clicked.
        Set con = Application.CurrentProject.Connection
        Set rs = CreateObject("ADODB.Recordset")
        stSql = "SELECT * FROM [Switchboard Items] "
        stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
        rs.Open stSql, con, 1    ' 1 = adOpenKeyset
     
        ' If no item matches, report the error and exit the function.
        If (rs.EOF) Then
            MsgBox "Une erreur s'est produite lors de la lecture de la table d'élément du Menu général."
            rs.Close
            Set rs = Nothing
            Set con = Nothing
            Exit Function
        End If
     
        Select Case rs![Command]
     
            ' Go to another switchboard.
            Case conCmdGotoSwitchboard
                Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rs![Argument]
     
            ' Open a form in Add mode.
            Case conCmdOpenFormAdd
                DoCmd.OpenForm rs![Argument], , , , acAdd
     
            ' Open a form.
            Case conCmdOpenFormBrowse
                DoCmd.OpenForm rs![Argument]
     
            ' Open a report.
            Case conCmdOpenReport
                DoCmd.OpenReport rs![Argument], acPreview
     
            ' Customize the Switchboard.
            Case conCmdCustomizeSwitchboard
                ' Handle the case where the Switchboard Manager
                ' is not installed (e.g. Minimal Install).
                On Error Resume Next
                Application.Run "ACWZMAIN.sbm_Entry"
                If (Err <> 0) Then MsgBox "Commande non disponible."
                On Error GoTo 0
                ' Update the form.
                Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Par défaut' "
                Me.Caption = Nz(Me![ItemText], "")
                FillOptions
     
            ' Exit the application.
            Case conCmdExitApplication
                CloseCurrentDatabase
     
            ' Run a macro.
            Case conCmdRunMacro
                DoCmd.RunMacro rs![Argument]
     
            ' Run code.
            Case conCmdRunCode
                Application.Run rs![Argument]
     
            ' Open a Data Access Page
            Case conCmdOpenPage
                DoCmd.OpenDataAccessPage rs![Argument]
     
            ' Any other command is unrecognized.
            Case Else
                MsgBox "Option inconnue."
     
        End Select
     
        ' Close the recordset and the database.
        rs.Close
     
    HandleButtonClick_Exit:
    On Error Resume Next
        Set rs = Nothing
        Set con = Nothing
        Exit Function
     
    HandleButtonClick_Err:
        ' If the action was cancelled by the user for
        ' some reason, don't display an error message.
        ' Instead, resume on the next line.
        If (Err = conErrDoCmdCancelled) Then
            Resume Next
        Else
            MsgBox "Une erreur s'est produite lors de l'exécution de la commande.", vbCritical
            Resume HandleButtonClick_Exit
        End If
     
    End Function

    Je veux donner à un bouton de ce menu la valeur 8 ("RunCode")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Const conCmdRunCode = 8
    Lorsque je donne cette valeur à un bouton (Exévuter Code), il faut que j'entre le nom d'une fonction.
    C'est cette dernière qui doit ouvrir mon formulaire VBA!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         Case conCmdRunCode
                Application.Run rs![Argument]

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

Discussions similaires

  1. dbms_sql.execute : code retour & aide oracle
    Par macben dans le forum Oracle
    Réponses: 5
    Dernier message: 07/04/2006, 10h02
  2. [VBA-E] executer code d'un userform depuis un autre
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 03/04/2006, 19h35
  3. Executer code sur un nouveau terminal en C
    Par progamer54 dans le forum Linux
    Réponses: 8
    Dernier message: 28/03/2006, 13h31
  4. Problème execution code
    Par Sayrus dans le forum Général Python
    Réponses: 2
    Dernier message: 09/03/2006, 11h09
  5. Fenetre Action Macro "Executer Code" pour Module
    Par beurnoir dans le forum Access
    Réponses: 16
    Dernier message: 21/10/2005, 16h15

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