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

VB 6 et antérieur Discussion :

[VB] Fonction qui retourne un tableau


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut [VB] Fonction qui retourne un tableau
    Bonjour à tous,
    j'aimerai par l'intermédiaire d'une fonction récupérer plusieurs valeurs. Pour cela, j'utilise donc un tableau, ms je galère vis à vis des déclarations je pense.
    Voici mon code en général déclarations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Type Mercredi
        NbJour As Integer
        NbAR As Integer
        NbSR As Integer
    End Type
    Public TabMerc(1 To 3) As Mercredi
    Mon code ds le prog principal qui ne veut pas me prendre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabMerc() = RechercheMerc(nom)
    Et ma fonction :
    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
     
    Public Function RechercheMerc(nom As String)
    Dim Feuille As Worksheet
    Dim i As Integer
    Dim NumColTot As Integer
     
    Workbooks("InscriptionsMercredi.xls").Activate
    For Each Feuille In Worksheets
        If Feuille.Name <> "Liste" Then
             i = 5
            While Cells(i, 1) <> "Total enfants"
                If Cells(i, 1) = nom Then
                    'alors on récupère le total de journée et de 1/2 AR et SR
                    'pr cela il faut trouver la col "total" sur la feuille
                    NumColTot = ColTot()
                    TabMerc(1).NbJour = TabMerc(1).NbJour + Cells(i, NumColTot)
                    TabMerc(1).NbAR = TabMerc(1).NbAR + Cells(i, NumColTot + 1)
                    TabMerc(1).NbSR = TabMerc(1).NbSR + Cells(i, NumColTot + 2)
                End If
                i = i + 1
            Wend
        End If
    Next
    'return TabMerc() ???
    End Function
    Est ce que quelqu'un peu me dire ou je fais une erreur, et meme plutot les erreurs?
    D'avance, merci beaucoup à tous pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut
    Personne n'a d'idée? Je n'arrive vraiment pas à trouver mon erreur...

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Mais tu as un message d'erreur, ou le résultat est faux?
    Dis nous ce qui se passe...

  4. #4
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour
    Il y a probablement un problème entre la déclaration et l'utilisation du type. Dans ta déclaration, tu n'as pas un tableau mais des éléments. Tu dois donc accéder à chacun des éléments. Regardes de ce coté.
    Je regardes plus en détail...

  5. #5
    scr
    scr est déconnecté
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Points : 143
    Points
    143
    Par défaut
    Oui déja si tu precisais tes erreurs ca nous aiderait

    Sinon en VB, pour qu'une fonction retourne une valeur, on n'utilise pas de return mais :
    nom_fonction = valeur_a_retourner.

    Dans ton cas ca donne:
    RechercheMerc=TabMerc

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut
    Quand j'execute mon code, cela bloque au niveau de cette ligne :
    TabMerc() = RechercheMerc(nom)
    et ca me met comme erreur :
    Impossible d'affecter à un tableau
    Voilà... Merci pour votre aide...

  7. #7
    scr
    scr est déconnecté
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Points : 143
    Points
    143
    Par défaut
    Et avec ça ?

    TabMerc = RechercheMerc(nom)

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Au moment où tu définis ta fonction, tu dois décrire la sortie par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function MaFonction(ByVal MonParam As Integer) AS STRING
       ...
    End Function
    Par exemple, si ton résultat est une chaine de caractères.

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bien en VB , je pense pas qu'une fonction puisse retourner un tableau ...?
    de plus je ne connais pas d'instruction permettant d'affecter le contenu d'un tableau à un autre tableau ... ..
    tu pourrai faire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub RechercheMerc(nom As String, MonTab )
    puis à la fin de la procédure ...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        End If
    ...
    Next
     ReDim MonTab(UBound(tabMerc))
     For i = 0 To UBound(tabMerc)
      MonTab(i) = tabMerc(i)
     Next
    End Sub
    et pour l'appel


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
      Dim MonTab()
        RechercheMerc "Toto", MonTab
     
    End Sub

  10. #10
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par bbil
    bien en VB , je pense pas qu'une fonction puisse retourner un tableau ...?
    de plus je ne connais pas d'instruction permettant d'affecter le contenu d'un tableau à un autre tableau ... ..
    Que je sache, on ne peut effectivement pas retourner un tableau, il faut le passer en paramètre.
    Par contre, pour affecter un tableau, le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub TestTab()
        Dim strTest(2) As String
        Dim strRes() As String
     
        strTest(0) = "Bonjour"
        strTest(1) = "Rebonjour"
        strTest(2) = "Rerebonjour"
        strRes = strTest
        For i = LBound(strRes) To UBound(strRes)
            MsgBox strRes(i)
        Next
    End Sub
    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    bonjour a tous,

    pour ce qui est d'une fonction qui retourne un tableau je l'ais déjà fait en vba sous excel j'ai renvoyer le resultat dans une variable déclaré en Variant et cela fonctionne tres bien.

    la question que je me pose est pourquoi désire tu que ta fonction renvoie un tableau que tu as déclaré en public?
    en théorie dés la fin de l'éxecution de ta fonction TabMerc contient automatiquement les bonnes valeurs et est lisible "n'importe ou" dans ton code.

    @+
    BkS.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Points : 59
    Points
    59
    Par défaut
    Oui merci BlackSun, en effet tu avais raison...
    j'ai fait de mes fonctions des procédures, et maintenant ca passe...
    Merci beaucoup à tous et bonnes fetes!

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

Discussions similaires

  1. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  2. [Tableaux] Fonction qui retourne un tableau
    Par benooiit dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2007, 01h50
  3. Réponses: 6
    Dernier message: 22/09/2006, 18h17
  4. Fonction qui retourne un tableau ou 2 variables ? possible ou non
    Par jiojio dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 05/06/2006, 15h00
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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