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 :

Passer le résultat (tableau) d'une fonction


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut Passer le résultat (tableau) d'une fonction
    Bonjour j'ai créé une fonction qui renvoit un résultat de type tableau.
    mais je ne résussis pas a affecter au tableau local le résultat de la fonction..

    local() = fct() ' ne fonctionne pas cf doc access vba

    j'ai le message d'erreur suivant :
    "Impossible d'affecter à un tableau"

    quelle est la syntaxe a respecter ?

    merci d'avance
    ps : je suis sous access 97

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Tu peux contourner cette difficulté en encapsulant un tableau dans un Type

    exemple une fonction de décomposition de chaîne qui renvoie un tableau.

    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
    Option Explicit
     
    Type typTabResult
      items() As String * 1
    End Type
     
    Function stringTab(ByVal str) As typTabResult
     
    Dim i As Integer
    For i = 1 To Len(str)
        ReDim Preserve stringTab.items(i)
        stringTab.items(i) = Mid(str, i, 1)
    Next i
     
    End Function
     
     
    Function TestTab()
     
    Dim monTab As typTabResult
    Dim i As Integer
     
    monTab = stringTab("Hello World !")
     
    For i = 1 To UBound(monTab.items)
        Debug.Print i, monTab.items(i)
    Next i
     
    End Function
    en mode debug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    testtab
     1            H
     2            e
     3            l
     4            l
     5            o
     6             
     7            W
     8            o
     9            r
     10           l
     11           d
     12            
     13           !
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tu dois pouvoir au lieu de renvoyer avec la fonction un tableau
    servir une variable globale et lui faire juste renvoyer "salut"
    ou la transformer en procédure

    auquel cas tu dois pouvoir faire après la fonction
    tontableaulocal =tontableauglobal
    ou utiliser directement tableau global pour la suite
    Elle est pas belle la vie ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Citation Envoyé par Aide en ligne VBA Office 97
    type returned by a function
    Data type of the value returned by the Function procedure; may be Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String, or (except fixed length), Object, Variant, or any user-defined type.
    Arrays of any type can't be returned, but a Variant containing an array can.
    Tu as donc intérêt à définir une fonction qui retourne un type variant.
    Ce variant contiendra (encapsulera) le tableau.

    Ensuite, le variant (qui contient le tableau) retourné par la fonction doit être affecté à une variable de type variant (voire un tableau dynamique ?).

    Voilà, tu as l'embarras du choix !!!

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/12/2006, 17h02
  2. Réponses: 3
    Dernier message: 28/11/2005, 12h15
  3. Réponses: 8
    Dernier message: 14/11/2005, 11h27
  4. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49
  5. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    Réponses: 9
    Dernier message: 10/04/2003, 17h56

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