XL 2010 Matrice de passage

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Alex98

XLDnaute Nouveau
Bonjour, j'ai pour but de faire le produit matriciel entre une matrice inverse et une matrice X. Cependant, j'aimerais prendre en compte plusieurs coordonnées X et les sortir d'un seul coup. J'ai testé la technique du Offset pour pouvoir prendre toutes les coordonnées d'un coup, mais je suis pas sur que cela va aboutir. J'ai une erreur d'indice au niveau de X = Mat_X(Angle), pouvez vous m'aider svp ?

VB:
Function Mat_ProdPX(Angle As Double) As Variant
    'M1M2 = P
    'X2 = X'
    
    'Initialisation
        Dim Mat_X As Variant
        Dim MatriceX2(3, 1) As Double
        Dim MatIntX(3, 1) As Double
        Dim P As Variant
        Dim X As Variant
        Dim i, j As Integer
      


         'Détermination de la matrice X
        
            Set cell = Cells(5, 8)
            Do While cell <> ""
        
                MatIntX(0, 0) = cell
                MatIntX(1, 0) = cell.Offset(1, 0)
                MatIntX(2, 0) = cell.Offset(2, 0)
            
                Mat_X = MatIntX
      
         'Calcule de X'=Pinv*X
        
                P = Pinv(Angle)
                X = Mat_X(Angle)
              
                
                For i = 1 To 3
                
                        MatriceX2(i - 1, 0) = P(i, 1) * X(0, 0) + _
                              P(i, 2) * X(1, 0) + _
                              P(i, 3) * X(2, 0)
                    
                        Cells(13 + i, 7 + cell) = MatriceX2(i - 1, 0)
                        
                Next i
                
                Set cell = cell.Offset(0, 1)
        
            Loop

    End Function
 
J'aimerais qu'en appuyant sur le bouton, toutes les coordonnées de sorties sortent aussi, pas seulement par rapport à la première colonne de coordonnée
Bonjour.
Déclarez vos tableaux matrices T(1 To LMax, 1 To CMax))
Joignez un fichier montrant ce que vous avez et ce que vous voudriez.
 

Pièces jointes

Je viens d'essayer ça, j'ai pas d'erreur mais ça n'affiche rien sur ma feuille de calcul excel

VB:
 Function Mat_X(Angle As Double) As Variant
        Dim MatIntX(3, 1) As Double
        
         counter = 0
        
         Do While cell <> ""
        
            counter = counter + 1
                    
     'Détermination de la matrice X
    
            MatIntX(0, 0) = Cells(5, 7 + counter)
            MatIntX(1, 0) = Cells(6, 7 + counter)
            MatIntX(2, 0) = Cells(7, 8 + counter)
        
            Mat_X = MatIntX
    
    End Function
    
    
    
    Function Mat_ProdPX(Angle As Double) As Variant
    'M1M2 = P
    'X2 = X'
    
    'Initialisation
        Dim MatriceX2(3, 1) As Double
        Dim P As Variant
        Dim X As Variant
        Dim i, j As Integer
        Dim counter As Integer
        
        counter = 0
        
        Do While cell <> ""
        
            counter = counter + 1
            
         'Calcule de X'=Pinv*X
        
                P = Pinv(Angle)
                X = Mat_X(Angle)
              
                
                For i = 1 To 3
                
                        MatriceX2(i - 1, 0) = P(i, 1) * X(0, 0) + _
                              P(i, 2) * X(1, 0) + _
                              P(i, 3) * X(2, 0)
                    
                        Cells(13 + i, counter) = MatriceX2(i - 1, 0)
                        
                Next i
        
            Loop

    End Function
 
Les tableaux traités par Excel doivent être basés 1
Votre Function PInv, par exemple, renverra un Variant contenant un tableau basé 1.
Expliquez aussi ce que vous voulez. Votre classeur joint ne me permet pas, actuellement de le comprendre. J'ai aussi vaguement l'impression que le plus gros pourrait être réalisé à l'aide de formules.
 
Dernière édition:
Les tableaux traités par Excel doivent être basés 1
Votre Function PInv, par exemple, renverra un Variant contenant un tableau basé 1.
Expliquez aussi ce que vous voulez. Votre classeur joint ne me permet pas, actuellement de le comprendre. J'ai aussi vaguement l'impression que le plus gros pourrait être réalisé à l'aide de formules.
J'ai des coordonnées d'entrée dans un repère MNO'. Le but est de grâce a des angles de rotations, trouver les coordonnée de sortie. J'ai réussi pour une seul coordonnée (x,y,z), j'aimerais que si l'utilisateur ai besoin de rentrer plusieurs coordonnées d'entrée, une boucle les prend en charge pour faire sortir les coordonnées de sorti
 
Actuellement votre classeur joint ne sort rien quand on clique sur le bouton "Coordonnées de sortie", ça fait erreur 9 indice en dehors des limites sur X = Mat_X(Angle) dans la Function Mat_ProdPX(Angle As Double).
Vraiment, commencez par baser 1 tous vos tableaux.
 
Remarque: En H14:H16 validé par Ctrl+Maj+Entrée :
Code:
=PRODUITMAT(INVERSEMAT($B$27:$D$29);H$5:H$7)
Devrait donner le même résultat. il ne resterait qu'à le propager sur le nombre de colonnes voulu
Êtes vous sûr de vos rotations ? Ne devraient-elles pas s'appliquer aux corrdonnées déja réorientées selon les rotations des axes précédents ? (pour l'axe Y notamment ?)
 
Dernière édition:
Remarque: En H14:H16 validé par Ctrl+Maj+Entrée :
Code:
=PRODUITMAT(INVERSEMAT($B$27:$D$29);H$5:H$7)
Devrait donner le même résultat. il ne resterait qu'à le propager sur le nombre de colonnes voulu
Êtes vous sûr de vos rotations ? Ne devraient-elles pas s'appliquer aux corrdonnées déja réorientées selon les rotations des axes précédents ? (pour l'axe Y notamment ?)
Le dernier fichier que je vous ai joint avec en sorti x = -1.0817 y =0.9259 ... est bon car c'est les valeurs que je devais retrouvé.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
467
Réponses
0
Affichages
379
Réponses
7
Affichages
802
Réponses
3
Affichages
907
Retour