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

Access Discussion :

Lancer une fonction à partir d'un code


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut Lancer une fonction à partir d'un code
    Bonjour,

    Sur le site j'ai trouvé un code qui permet d'identifier d'après une table la durée d'une panne.
    A priori elle correspond à mon besoin.

    Je souhaite à partir d'un bouton éxecuter la fonction ci dessous

    Public Function fctPannePrécédente(dtDatePanne As Date, intTypePanne As Integer) As Variant

    Cette dernière est placée dans un module indépendant.

    J'ai affecté au bouton du formulaire une pocédure évenementielle.


    Private Sub Commande1_Click()
    call fctPannePrécédente(dtDatePanne As Date, intTypePanne As Integer)
    End Sub


    Mais j'ai un message d'erreur concernant une mauvaise synthaxe.

    J'ai regardé sur le forum mais je n'ai pas trouvé de solution.
    D'avance merci pour votre aide.
    Cordialement

    StSym

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Vous êtes en train de confondre la déclaration (définition) d'une fonction et la façon de l'appeler

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Public Function   fctPannePrécédente(dtDatePanne As Date, intTypePanne As Integer) As Variant
    est la déclaration de la la fonction.
    C'est la fonction fctPannePrécédente qui utilise 2 arguments : dtDatePanne et intTypePanne

    Quand vous l'appelez, il faut mettre des valeurs (que vous récupérez normalement à partir de votre formulaire ou code) à la place de dtDatePanne et intTypePanne.
    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     call fctPannePrécédente(Valdate,ValTypedelaPanne)
    Cordialement,

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Madefemere

    Merci pour cette réponse rapide et explicite donnée à un novice du VBA.
    J'ai testé mais cela ne fonctionne pas car je pense ne pas avoir donné assez d'éléments à ma question.
    Je joins le code trouvé et qui correspond à ma demande.
    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
    Public Function fctPannePrécédente(dtDatePanne As Date, intTypePanne As Integer) As Variant
    'on ouvre le recordset
    Dim rs As DAO.Recordset
    'on sélectionne tous les enregistrements ayant une date antérieure et le même type de panne
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Pannes WHERE DatePanne < #" & dtDatePanne & "# AND TypePanne = " & intTypePanne & " ORDER BY DatePanne DESC", dbOpenDynaset)
     
    If rs.EOF = True Then 'pas de panne précédente
    fctPannePrécédente = Null
    Exit Function 'on quitte
    End If
     
    fctPannePrécédente = rs!DatePanne 'date de la panne précédente
     
    'on ferme le recordset
    rs.Close
    Set rs = Nothing
    End Function
    Je n'ai pas compris si "Valdate" et "ValTypedelaPanne" devaient être créés dans la table à analyser.

    Ma table "Pannes" à cette configuration.

    Nom : 2014-07-06 Base 1.mdb (format .png
Affichages : 167
Taille : 15,1 Ko

    Merci pour votre aide apportée.
    Cordialement.
    StSym

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Qu'est-ce que vous voulez faire?

    La fonction va retourner une valeur selon une date et type de panne que vous allez donner (ce sont les arguments de la fonction).
    Pour utiliser la fonction, vous devez donc être à un endroit d'Access (formulaire d'après ce que vous dites dans votre premier message) où vous allez récupérer ces valeurs et les injecter dans votre fonction pour avoir un résultat.
    Soit, dans votre formulaire, vous avez 3 zones de texte :

    - ValDate (Date à partir de laquelle l'analyse va être faite)
    - TypePanne (le type de panne à partir duquel l'analyse sera faite)
    - DateResult (qui va accueillir le résultat de la fonction) où en source, vous mettrez : = fctPannePrécédente(ValDate,TypePanne)

    J'ai pas bien compris la nécessité d'utiliser un bouton de commande pour cela??
    Déjà expliquez mieux (hors termes techniques d'Access) le but de votre manipulation.

    Bonne continuation

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Madefemere,

    Bon je vais essayer de mettre tout cela en application et espérer arriver au résultat souhaité.

    Je vais identifier cette discussion comme résolue car Si j'ai besoin d'aide je reviendrai sur le site mais:

    1 > En postant ma demande sur un "sous forum" spécifique ( et non pas tous)
    2 > En Expliquant mieux le but de mon objectif.

    Encore merci pour votre aide et vos explications détaillées.
    Cordialement
    Stsym

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/03/2014, 22h16
  2. lancer une fonction MATLAB depuis un code Java
    Par Gouasmi_moh dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 23/04/2011, 18h00
  3. Réponses: 4
    Dernier message: 24/02/2011, 15h57
  4. lancer une fonction à partir d'une cell
    Par sellamelie dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/12/2010, 14h49
  5. [PHP-JS] comment lancer une fonction javascript a partir de php
    Par amika dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/06/2005, 19h23

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