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 Discussion :

Renvoyer un tableau depuis une fonction


Sujet :

VBA

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Renvoyer un tableau depuis une fonction
    Bonjour à tous,

    après plusieurs recherche je ne trouve pas solution à mon problème, que voici :

    Depuis une fonction, je lis des données dans un fichier texte que j'enregistre dans un tableau (DonneesFichier), j'enregistre ensuite ce tableau dans le nom de la fonction (Traitement_Fichier) pour pouvoir récupérer les données dans ma procédure principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function Traitement_Fichier(ByVal intFic As Integer, ByVal searChar As String) As Variant()
    Dim DonneesFichier(24) As Variant
     
    Traitement_Fichier = DonneesFichier()
    End Function
    Tout fonctionne parfaitement, sauf au moment de récupérer les valeurs de mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub Ma_Procedure()
    Dim DonneesRecuperer(24) As Variant
     
    Set DonneesRecuperer(24) = Traitement_Fichier(IntFic, searchChar)()
     
    End Sub
    J'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Run-time error '9': Subscript out of range
    J'ai pu voir sur cette page :
    http://www.developpez.net/forums/d65...-out-of-range/

    qu'en modifiant le tableau, nous obtenons toujours un tableau à deux dimensions. Est-ce ça mon problème ?

    Merci de votre aide.

    Mick.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    le problème est la ligne n°5 du second code étant une hérésie, Vade Retro Satanas

    Rien qu'en lisant l'aide VBA intégrée de l'instruction Set ‼ Donc à supprimer …

    Il y a juste à affecter le nom du tableau par la fonction
    comme pour la ligne n°5 du premier code, même pas obligé de le pré-dimensionner …

    Un peu de lecture : Utiliser les variables tableaux en VBA Excel

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Mon sauveur ! Sa fonctionne !

    Si je comprends bien, le tableau non pré-dimensionner hérite automatiquement de la dimension du tableau qu'on lui affecte ?

    C'est un projet pour mon travail sous MS Visio, celui-ci étant entièrement en Anglais, aide VBA comprise. Comme mon Anglais est un peu approximatif, il m'est parfois un peu difficile de tout comprendre !

    J'ai d'ailleurs trouvé un cours pour débuter en VBA qui mettait le Set pour retourner la valeur d'une fonction, j'ai donc suivis bêtement l'exemple.

    Merci pour le lien (je m'en vais le lire de ce pas !) et pour l'aide apporter.

    Bonne journée,
    Mickael.

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par Kiwitosor Voir le message
    Si je comprends bien, le tableau non pré-dimensionner hérite automatiquement de la dimension du tableau qu'on lui affecte ?
    Oui. Il peut aussi être dimensionné identiquement au préalable mais ta ligne n° 5 affecte l'indice 24 du tableau
    sans compter le Set réservé aux objets …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    OK je comprends mieux mon erreur. Je pensais qu'en lui indiquant '24' c'est la totalité du tableau qui allé être pris en compte et non l'indice 24 du tableau.

    Mais j'avoue que ce n'était pas logique et qu'un peu de réflexion m'aurait un peu aidé !!
    Je me sert déjà du 'Set' pour instancier les objets MS Visio, cela aurait du m’interpeller aussi.
    Enfin, il parait qu'il faut bien faire des erreurs pour s'améliorer ! Merci en tout cas, cela fait plusieurs points nettement plus clair pour moi.

    - Déclaration et affectation des variables.
    - Utilisation des fonctions.
    - L'instruction Set.

    Merci de ton aide,
    Bonne journée.

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

Discussions similaires

  1. [Toutes versions] Faire renvoyer un tableau par une fonction
    Par Wanaka dans le forum Excel
    Réponses: 5
    Dernier message: 01/07/2009, 21h49
  2. Renvoyer plusieur champs depuis une fonction
    Par djorfe dans le forum Langage
    Réponses: 2
    Dernier message: 29/02/2008, 09h54
  3. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49
  4. Ecrire dans un tableau html depuis une fonction js ?
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 12h48
  5. Réponses: 6
    Dernier message: 18/05/2005, 14h04

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