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 :

Sélection pour un calcul matriciel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Par défaut Sélection pour un calcul matriciel
    Bonjour,

    Je commence tout juste à utiliser le VBA sur Excel pour me faciliter la vie cependant, j'ai un problème concernant un calcul matriciel, je pense que le problème vient de la sélection que j'ai réalisé. J'aimerai savoir ce que vous en pensez.
    La formule s'affiche bien dans la sélection "I466:N471" mais sous la forme #NOM?


    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
     
    Dim LigneMax As Long
    Dim Tito, Bob As Range
     
    LigneMax = 200
     
    Worksheets("Ma page").Activate
    Set Tito = Range(Cells(20, 14), Cells(LigneMax, 19))
    Set Bob = Range(Cells(20, 7), Cells(LigneMax, 12))
     
    Range("I466:N471").Select
       Selection.FormulaArray = _
           "=TRANSPOSE(MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(Bob),Bob)),TRANSPOSE(Bob)),Tito))"
     
    End Sub
    Merci à vous

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tes variables tito et bob doivent être sorties de ta chaine représentant la formule matricielle, et il faut (sauf erreur) en utiliser la propriété .Address

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=TRANSPOSE(MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(" & Bob.Address & ")," & Bob.Address & ")),TRANSPOSE(" & Bob.Address & "))," & Tito.Address & "))"
    ensuite, savoir s'il faut une référence relative ou absolue, je te laisse continuer

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il serait sans doute plus simple d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim LigneMax As Long
    Dim Tito As String, Bob As String
     
    LigneMax = 200
     
    Worksheets("Ma page").Activate
    Tito = "N20:S" & LigneMax
    Bob = "G20:L" & LigneMax
     
    Range("I466:N471").FormulaArray = "=TRANSPOSE(MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(" & Bob & ")," & Bob & ")),TRANSPOSE(" & Bob & "))," & Tito & "))"
    Petit détail : quand tu écris Dim Tito, Bob As Range, seul Bob est définit de type Range. Tito est définit de type Variant.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Par défaut
    Merci beaucoup à vous j'ai pu résoudre mon problème.

    J'ai utilisé ta forme Menhir avec les variables qui bien plus simple et efficace que ce que j'avais fait. Surtout que le produit matriciel dans la formule n'accepte que les variables et non les sélections. (J'avais uniquement regardé pour la transposé qui accepte les 2.)

    Et merci aussi pour le conseil !

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Patatvore Voir le message
    Surtout que le produit matriciel dans la formule n'accepte que les variables et non les sélections.
    Je pense que le problème vient plutôt du paramétrage de la propriété Address.

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

Discussions similaires

  1. Quelle librairie c++ pour calcul matriciel ?
    Par jeanpeuplu dans le forum C++
    Réponses: 7
    Dernier message: 15/06/2011, 13h11
  2. Réponses: 11
    Dernier message: 06/05/2011, 15h48
  3. [Débutant] Remplacement boucle for pour calcul matriciel
    Par LoicS dans le forum MATLAB
    Réponses: 3
    Dernier message: 26/03/2009, 19h26
  4. calculs matriciels pour CDT et ICDT
    Par leberger6183 dans le forum Mathématiques
    Réponses: 1
    Dernier message: 14/05/2007, 16h30
  5. Réponses: 2
    Dernier message: 26/07/2006, 09h44

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