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 :

[E-02] : utilisation de matrice dans Vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 19
    Par défaut [E-02] : utilisation de matrice dans Vba
    Bonjour,

    je cherche a affecter a des cellules (m,n) la valeur retournee par la fonction sommeprod(A;B) où A et B sont 2 matrices variables.

    Par exemple A est une matrice colonne qui contient les cellules de (1,1) a (i,1)
    et B une matrice ligne contenant les cellules (i+1,1) a (i+1,i)

    J'ai essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For j = 1 To i
        A(i) = Cells(j, 1)
        B(i) = Cells(i + 1, j)
    Next i
     
    Cells(m,n) = Application.WorksheetFunction.sommeprod(A()*B())
    mais je n'arrive pas a passer les tableaux Vba en matrice dans la fonction excel.


    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    hmm on part du principe que les tableau sont bien déclaré et que le problème ne viens pas de là
    Excel ne connais pas la multiplication de tableau
    A()*B() n'a pas de sens (du moins dans les exemples que j'ai testé)
    C'est a toi de définir la fonction produit de matrice, ainsi que l'addition la soustraction la puissance la transposition, etc...
    Puisque a ma connaissance excel ne connait pas les matrices.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 19
    Par défaut
    Le produit ne peut se faire entre une matrice ligne et colonne la solution "Excel" est : sommeprod(A;transpose(B))

    J'ai en outre stocke dans des variables les adresses des cellules de debut et de fin de matrice afin de passer par l'assignation de formules dans une cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AA = Cells(1,1).Address
    AZ = Cells(i,1).Address
    BA = Cells(i+1,1).Address
    BZ = Cells(i+1,i).Address
     
    Cells(m,n).Formula = "=SOMMEPROD(" & AA & ":" & AZ & "*(TRANSPOSE(" & BA & ":" & BZ & ")))"
    La formule apparait bien dans la cellule voulue mais me retourne une erreur #NOM?
    Lorsque je sors de la macro et que je clique sur cette cellule, edite la formule puis fais Ctrl+Maj+Entree la cellule prend la bonne valeur...

    Connaissez-vous un moyen de lui faire valider la cellule en matrice ?
    J'ai essaye de placer la formule entre {} dans la macro mais ca ne marche pas.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 19
    Par défaut
    Pour info, voila une solution qui marche :

    J'ai remplace le sommeprod par le sum du produit des matrices.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Cells(m,n).Select
    Selection.FormulaArray = "=SUM(R1C1:R" & i & "C1*(TRANSPOSE(R" & (i + 1) & "C1:R" & (i + 1) & "C" & i & ")))"
    Etrange mais il faut absolument passer par le Cells.Select puis le Selection.FormulaArray....sinon ca marche pas.


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

Discussions similaires

  1. Utiliser une matrice dans Proc Factor
    Par Invité dans le forum SAS STAT
    Réponses: 0
    Dernier message: 30/05/2014, 15h23
  2. [XL-2007] Utiliser un solveur dans vba
    Par pmp87 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/05/2013, 15h16
  3. [XL-2003] Utiliser fonction excel dans VBA
    Par bebel9313 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2009, 05h55
  4. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  5. [VBA]xl*-Utiliser F1...F12 dans un form
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 40
    Dernier message: 27/01/2006, 11h34

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