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 :

Exécuter une fonction via les Macro


Sujet :

VBA Access

  1. #1
    Membre du Club Avatar de Kephuro
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 61
    Points : 48
    Points
    48
    Par défaut Exécuter une fonction via les Macro
    Bonjour à tous !

    Je suis débutant dans l'utilisation d'Access, mais j'ai quand même de bonnes notions de programmation (Bon, pas en VBA, mais bref...).

    J'ai besoin de créer une macro qui permet de réaliser différents traitements, et à la fin de ces traitements j'aurais besoin de renommer un champ d'une table.

    Du coup j'ai regardé dans la FAQ et j'y ai trouvé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub RenommerChamp(PTable As String, POld As String, PNew As String)
    On Error GoTo err:
    Dim VTable As DAO.TableDef
    Dim VField As DAO.Field
    Set VTable = CurrentDb.TableDefs(PTable)
    Set VField = VTable.Fields(POld)
    VField.Name = PNew
    Set VField = Nothing
    Set VTable = Nothing
    Exit Sub
    err:
    MsgBox "L\'action  renommer le champ a échouée"
    End Sub
    Que j'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function RenommerChamp(PTable As String, POld As String, PNew As String)
    On Error GoTo err:
    Dim VTable As DAO.TableDef
    Dim VField As DAO.Field
    Set VTable = CurrentDb.TableDefs(PTable)
    Set VField = VTable.Fields(POld)
    VField.Name = PNew
    Set VField = Nothing
    Set VTable = Nothing
    Exit Function
    err:
    MsgBox "L\'action  renommer le champ a échouée"
    End Function
    (J'ai remplacé Sub par Function)

    Donc, et c'est sûrement là que je me trompe, j'ai créé un nouveau module dans lequel j'ai simplement collé ce code.
    Dans ma macro, j'ai sélectionné pour action ExecuterCode et j'ai tapé le nom de ma fonction avec ses paramètres (j'ai même utilisé leur générateur pour être sûr d'avoir le bon nom de fonction). Et quand j'exécute la macro, j'ai cette erreur :
    Citation Envoyé par Vilain Access
    L'expression entrée comporte un nom de fonction introuvable
    Du coup je me demande si j'ai pas mal compris....ExcecuterCode c'est bien pour exécuter du VBA ? Et si c'est le cas, pourquoi est-ce qu'il n'arrive pas à trouver ma fonction ?

    Je vous remercie d'avance pour votre aide et vos éclaircissements.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    petite question : comment va être utilisé ta macro ?
    va t'elle s'éxécuter lorsque tu cliques sur un bouton ?

    si oui pas besoin de macro, tu va dans les propriété de ton bouton puis tu ajoutes du code dans l'évenement "sur click"

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Ton_Bouton_Click()
     
    [...] ' Tu récupère les données nécessaires pour utiliser ta procedure
     
    call RenommerChamp(PTable As String, POld As String, PNew As String)
     
    end sub
    (sous cette forme ça fonctionne avec ton code de départ, pas ta fonction)

    Essais de donner plus de précision sur l'utilisation de ta macro du genre "où tu récupère les paramètres"

  3. #3
    Membre du Club Avatar de Kephuro
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 61
    Points : 48
    Points
    48
    Par défaut
    Du coup j'ai contourné le problème, mais la solution m'intéresse quand même.

    La macro ne sera pas utilisée via un bouton, mais directement via le menu macro, avec clic sur la macro et exécuter.

    En fait j'ai besoin d'importer des données provenant d'un fichier excel vers une table de ma base de données. Ca j'y arrive bien, le seul truc c'est que je veux qu'un champ de la table (en l'occurence la clé primaire, IDXXXX, avec XXXX quelconque) soit renommé en ID, tout simplement.

Discussions similaires

  1. Exécuter une fonction toutes les 2 minutes en VB.NET
    Par sihammaster dans le forum VB.NET
    Réponses: 3
    Dernier message: 14/10/2012, 00h29
  2. [Débutant] Exécuter une fonction via PHP
    Par Elyadohr dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/08/2010, 19h53
  3. Exécuter une fonction toutes les X minutes ?
    Par corgato dans le forum Qt
    Réponses: 8
    Dernier message: 27/01/2009, 10h29
  4. Exécuter une fonction toutes les 2ms
    Par ditchou dans le forum Langage
    Réponses: 3
    Dernier message: 08/02/2008, 17h54
  5. [Débutant]Comment exécuter une fonction tous les jours
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/06/2006, 16h10

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