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 :

appeler une fonction


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Apprenti en dévelloppement
    Inscrit en
    Août 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti en dévelloppement

    Informations forums :
    Inscription : Août 2010
    Messages : 81
    Points : 63
    Points
    63
    Par défaut appeler une fonction
    bonjour, j'ai un petit problème au niveau de l'appel de ma fonction. voici mon code:

    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
    Function one()
    
    'variable
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    
    'ouverture de la base de donnée : recordset
    Set db = CurrentDb
    Set rst = db.OpenRecordset("Requête1", dbOpenSnapshot)
    
    'création et ouverture du fichier txt
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set MonFic = FSys.CreateTextFile (ici je veu appeler le résultat de ma fonction two)
    
    'écriture dans le fichier txt
    With MonFich
    .writeline "<?xml version=""" & "1.0" & """ encoding=""" & "windows-1252" & """>"
    .writeline ""
    etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function two(pI As String) As String
    'variable
    Dim db As DAO.Database
    Dim rec As DAO.Recordset
     
    'ouverture de la base de donnée : recordset
    Set db = CurrentDb
    Set rec = db.OpenRecordset("Select [nom],[prenom] From [tbl_nomprenom]Where [ID]='" & num1 & "'", dbOpenSnapshot)
    les valeurs de nom et prenom sont mon chemin d'accès, pouvez-vous m'aider ?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Bonjour,

    La fonction ne renvoie rien.
    Le paramètre "pI"de la fonction n'est pas utilisé.
    La fonction utilise une variable "num1" non déclarée.
    [Access] Les bases du débogage => ici

  3. #3
    Membre du Club
    Homme Profil pro
    Apprenti en dévelloppement
    Inscrit en
    Août 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti en dévelloppement

    Informations forums :
    Inscription : Août 2010
    Messages : 81
    Points : 63
    Points
    63
    Par défaut re
    ok merci de ta réponse, mais quel est mon erreur ou mon oubli?

  4. #4
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    Une fonction renvoie un résultat; une procédure, elle, est la suite de plusieurs instructions.

    Dans ce que vous nous donner, la fonction One, ne semble rien renvoyer.
    C'est à dire qu'on ne trouve pas à un moment donné

    One = "Mon résultat"
    Pour moi, c'est juste des instructions pour écrire dans un fichier.

    Pareil pour la fonction Two, qui est semble juste ouvrir un recordset.


    A revoir donc.

    Pierre

  5. #5
    Membre du Club
    Homme Profil pro
    Apprenti en dévelloppement
    Inscrit en
    Août 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti en dévelloppement

    Informations forums :
    Inscription : Août 2010
    Messages : 81
    Points : 63
    Points
    63
    Par défaut re
    Merci pour votre réponse mais voila j'ai changer ma fonction "two", elle devrait renvoyer un résultat, et je voudrais l'appeler à l'endroit en gras de la focntion "one", comment fait-on?
    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
    Function two()
     
    Dim db As DAO.Database
    Dim rec As DAO.Recordset
     
    Set db = CurrentDb
    Set rec = db.OpenRecordset("Select [nom],[prenom]From [tbl_nomprenom] Where [ID]='" & num2 & "'", dbOpenSnapshot)
     
     
    If rec.EOF = False Then
     
    rec! [nom]
    rec! [prenom]
    Else
    MsgBox ("Erreur")
    End If
    orst.Close
    db.Close
     
    Set orst = Nothing
    Set db = Nothing
     
    End Function

  6. #6
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    je pense que tu devrais prendre le temps de lire un ou deux tutos sur les bases de la programmation. Mais comme je suis dans un bon jour...

    Pour qu'une fonction puisse renvoyer une valeur, il faut que :
    1) tu déclares le type de variable qu'elle va renvoyer. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function toto (Argument As Variant) As String
    Cette fonction comprend un argument de type Variant, et renvoie une variable de type String.

    2) A l'intérieur de la fonction, tu dois clairement exprimer la valeur retourner par la fonction (VBA ne le devinera pas). Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function toto () As String
        toto = "valeur retournée"
    End Function
    Et c'est tout. Pour appeler ta fonction, il suffit de taper son nom. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function AfficherToto()
        MsgBox toto()
    End Function
    Mais encore une fois, prends le temps de lire les tutos et les FAQ. Tu te dis sûrement que ce n'est pas ce qui va faire avancer ton projet, mais crois-moi, c'est un gain de temps dont tu te rendras compte plus vite que tu ne le penses.

  7. #7
    Membre du Club
    Homme Profil pro
    Apprenti en dévelloppement
    Inscrit en
    Août 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti en dévelloppement

    Informations forums :
    Inscription : Août 2010
    Messages : 81
    Points : 63
    Points
    63
    Par défaut
    Merci bcp, je viens de débuter en vba, mais je vais suivre ton conseil et regarder les tutos, bonne journée!

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

Discussions similaires

  1. appeler une fonction connaissant son nom (en string)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 20/07/2004, 00h46
  2. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  3. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  4. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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