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

Macros et VBA Excel Discussion :

Récupération d'une matrice (tableau 2 dimensions dans une autre formule)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut Récupération d'une matrice (tableau 2 dimensions dans une autre formule)
    Bonsoir à tous,

    Je dispose d'une fonction matricielle qui, à partir d'une plage de données entrées en argument me renvoie une matrice (un tableau à double entrée).
    Le code étant long et compliqué je souhaite utiliser cette formule dans une autre formule afin de pouvoir avoir accès au tableau qui m'est renvoyé.

    Le soucis est que, quoique j'essaie cela ne fonctionne pas.
    Ma formule primaire s'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matricedecovariance(prix as range) as variant
    Quand je l'appelle dans ma formule secondaire, je crée une autre matrice nommée matricecov que je définit et dimensionne de la même taille que la matrice censée être renvoyée.
    Je fais ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matricecov = matricedecovariance(prix)       'la formule secondaire utilise aussi prix comme argument ndlr
    Et ensuite je souhaite récupérer des données de cette matrice: par exemple matricecov(1,1) mais cela ne marche pas...

    Quelqu'un pourrait il m'aider à résoudre mon problème?
    Je vous remercie par avance.

    Eidolem

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Si ta fonction doit retourner une matrice (donc, un tableau) il faut l'indiquer avec des parenthèses :
    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 matricedecovariance(prix As Range) As Variant() '<--- ici, les parenthèses pour signifier que la fonction doit retourner un tableau
     
        Dim Tbl() As Variant
     
        'ton traitement...
     
        matricedecovariance = Tbl
     
    End Function
     
    Sub Test()
     
        Dim Tbl() As Variant
     
        Tbl = matricedecovariance(TonRangePrix)
        'ici, traitement des résultats se trouvant dans le tableau et retournés par la fonction
        '...
     
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Un exemple avec une fonction d'isolement des caractères d'une chaîne :
    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
     
    Function Decoupe(Chaine As String) As String()
     
        Dim Tbl() As String
        Dim I As Integer
     
        ReDim Tbl(1 To Len(Chaine))
     
        'isole tous les caractères
        For I = 1 To Len(Chaine): Tbl(I) = Mid(Chaine, I, 1): Next I
     
        Decoupe = Tbl
     
    End Function
     
    Sub Test()
     
        Dim Tbl() As String
        Dim I As Integer
     
        Tbl = Decoupe("Ma chaine de caractères")
     
        'résultat en colonne A de la feuille active
        For I = 1 To UBound(Tbl): Cells(I, 1).Value = Tbl(I): Next I
     
    End Sub

  4. #4
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut
    Merci beaucoup Theze pour la réponse je vais essayer de m'en sortir avec ça ça devrait le faire

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2016, 02h56
  2. [XL-2016] Faire plusieurs selection dans une listbox (tableau) pour coller dans un autre classeur
    Par CEA FRANCE dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 15/04/2016, 11h46
  3. Parcours d'une matrice/tableau à deux dimensions
    Par yal001 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 20/11/2008, 14h59
  4. Passage de tableau à deux dimensions dans une session
    Par keumlebarbare dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 28/11/2006, 18h42
  5. afficher un tableau 2 dimensions dans une fenetre
    Par igor24 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 29/04/2006, 13h50

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