Transformer un vecteur colonne en une matrice carrée diagonale

Bonjour,

Comme expliqué dans le titre, et même si cela parait simple, je suis à la recherche d'opérations Excel (par ex. produit matriciel? combinaisons linéaires avec matrice identité?) permettant de "construire" de manière automatisée une matrice carrée diagonale (dimension n) à partir d'un vecteur colonne (longueur n).

exemple

Ci-joint, vous trouverez un exemple pour davantage illustrer le problème.

D'avance merci beaucoup pour votre aide !!!

Bonsoir,

Il y a sans doute plus simple.

Option Explicit

Public Matrice() As Variant

Sub TestGenererMatrice()

    GenererMatrice Range("B9:B11"), Range("F9")

End Sub

Sub GenererMatrice(ByVal AireColonne As Range, ByVal CelluleDestination As Range)

Dim I As Integer, J As Integer

    ReDim Matrice(AireColonne.Count - 1, AireColonne.Count - 1)

    For I = LBound(Matrice, 2) To UBound(Matrice, 2)
        For J = LBound(Matrice, 1) To UBound(Matrice, 1)
           Matrice(J, I) = 0
        Next J
    Next I

    J = 1
    For I = LBound(Matrice, 2) To UBound(Matrice, 2)
           Matrice(J - 1, I) = AireColonne(J)
           J = J + 1
    Next I

    For I = LBound(Matrice, 2) To UBound(Matrice, 2)
        For J = LBound(Matrice, 2) To UBound(Matrice, 2)
            With CelluleDestination
                 .Offset(J, I) = Matrice(J, I)
            End With
        Next J
    Next I

End Sub

Bonjour Eric,

Avant tout, merci pour la réponse !

Je cherche en effet une solution simple (et sans VBA) pour obtenir ce résultat.

Avec Excel, j'imaginais écrire les numéros de ligne (i) et colonne (j) sur les bordures de la matrice, puis écrire l'élément du vecteur à la même ligne si i = j. Mais là encore, je suppose qu'il y a plus simple, probablement en réalisant des opérations matricielles ?

Bonsoir,

Une fois n'est pas coutume, j'ai pu trouver réponses à ma question avant le forum en cherchant sur des forums anglophones

Les 2 solutions trouvées passent par des formules matricielles (cf. fichier joint). Ma préférée :

{=IF(A1:A3=TRANSPOSE(A1:A3),A1:A3,"0")}  avec A1:A3 le vecteur initial

Merci encore à Eric pour avoir pris du temps sur le sujet !

Rechercher des sujets similaires à "transformer vecteur colonne matrice carree diagonale"