Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Existe-t-il une fonction permettant d'empiler deux matrices?

  • Initiateur de la discussion Initiateur de la discussion pruvieros
  • Date de début Date de début

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 !

pruvieros

XLDnaute Nouveau
J'ai deux matrices:
une dans les cellules A1 et A2 comportant les valeurs 55 et 66
une autre dans les cellules C1 et C2 comportant les valeurs 77 et 88

J'aimerais savoir s'il existe une fonction permettant d'obtenir une matrice en E1:E4 effectuant l'empilement de ces deux matrices, c'est-à-dire les valeurs 55,66,77,88.

L'idéal serait que je puisse entrer en E1:E4 quelque chose du genre {=empilement(A1:A2;C1:C2)}

Si possible, j'aimerais ne pas passer par un tableau créé en vba, et me limiter aux fonctions Excel

Merci pour vos lumières...

Pruvieros
 

Pièces jointes

Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Bonsoir,
c'est pas clair manques des exemples et des explications, à tout hasard,
en E1 :
Code:
=PETITE.VALEUR(A$1:C$2;LIGNE())

ou :
Code:
=SI(LIGNE()>NB(A:C);"";DECALER(A$1;MOD(LIGNE()-1;NB(A:A));(NB(A:A)<LIGNE())*2))

@ tirer vers le bas





@ + +
 
Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Merci beaucoup pour vos réponses.
Je réalise que j'ai mal posé ma question.

J'ai deux matrices A et B de dimensions identiques:1 colonne et 50 lignes chacune.

Je souhaite construire grâce à une fonction une troisième matrice C, résultant de l'empilement des matrices A et B.
Cette matrice C a donc pour dimension 1 colonne et 100 lignes.

Je ne souhaite pas faire apparaître cette matrice C; mon objectif final est d'utiliser une fonction statistique dont cette matrice C serait un argument. (Il s'agit de la fonction DROITEREG pour des calculs de régression linéaire)

Ainsi, si je disposais d'une fonction d'empilement qui me permettait par exemple d'écrire DROITEREG(EMPILEMENT(A;B)) ou DROITEREG(A.B), cela m'éviterait de créer ma matrice C dans les cellules de mon classeur.

Ce que je cherche est donc une fonction qui accepte en argument des matrices, et qui fournit en sortie une matrice.
Excel gère très facilement, via des fonctions matricielles, les besoins d'addition de matrices (A+B), de multiplication (A*B), ou de concaténation(A&B) mais je ne trouve pas la fonction matricielle d'empilement...

Cela m'arrangerait car j'ai des centaines de matrices A et B dans mon classeur, et j'aimerais éviter de créer un nouvel onglet pour les matrices C (empilement des A et B).

En espérant que cette fois-ci j'ai été plus clair,
Merci encore pour vos lumières.

Pruvieros
 
Dernière édition:
Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Bonjour pruvieros, R@chid, JB,

Si vous ne voulez pas utiliser VBA il est impératif de passer par une plage auxiliaire de cellules pour empiler les matrices.

En VBA voyez cette fonction qui renvoie un vecteur ligne :

Code:
Function empilement(matA, matB)
Dim a(), e, n&
matA = matA: matB = matB
ReDim a(1 To UBound(matA) + UBound(matB))
For Each e In matA
  n = n + 1
  a(n) = e
Next
For Each e In matB
  n = n + 1
  a(n) = e
Next
empilement = a 'vecteur ligne
End Function
Voyez son utilisation sur la plage E1:E4 (validation matricielle) avec TRANSPOSE.

Fichier joint.

A+
 

Pièces jointes

Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Voir PJ

1-La fonction peut être utilisée comme fonction matricielle dans le tableur

-sélectionner D2😀9
=empilement(A2:A5;B2:B5)
Valider avec maj+ctrl+entrée

2- On peut lui donner des tableaux ou des champs en paramètre
3- On peut emboiter les fonctions Empilement()


e= Empilement(Empilement(a, b), a)

Code:
Sub Essai()
   a = [a2:A5]
   b = [b2:b5]
   c = Empilement(Range("a2:A5"), Range("b2:b5"))
   [K2:K9] = c
   e = Empilement(Empilement(a, b), a)
   [N2:N13] = e
End Sub

Function Empilement(Tab1, Tab2)
   Dim c()
   On Error Resume Next
   tmp = Application.Caller.Rows.Count
   If Err = 0 Then
     ReDim c(1 To Application.Caller.Rows.Count)
   Else
      ReDim c(1 To UBound(Tab1) + UBound(Tab2))
      If Err > 0 Then ReDim c(1 To Tab1.Count + Tab2.Count)
   End If
   On Error GoTo 0
   For Each k In Tab1: i = i + 1: c(i) = k: Next
   For Each k In Tab2: i = i + 1: c(i) = k: Next
   Empilement = Application.Transpose(c)
End Function

http://boisgontierjacques.free.fr/fichiers/Cellules/FusionTableaux.xls

JB
 

Pièces jointes

Dernière édition:
Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Re,

On peut quand même se passer de VBA en utilisant :

- la fonction MCONCAT de la macro complémentaire Morefunc

- la fonction macro Excel 4.0 EVALUER.

Voyez le fichier joint et le nom défini matC :

Code:
=EVALUER("{"&MCONCAT(matA;";")&";"&MCONCAT(matB;";")&"}")
Nota: la macro complémentaire Morefunc de Laurent Longre est une bibliothèque de fonctions.

Téléchargez-la sur le web, c'est gratuit, puis installez-la.

A+
 

Pièces jointes

Dernière édition:
Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Voir PJ

=DROITEREG(empilement(A2:A5;B2:B5))
=SOMME(empilement(A2:A5;B2:B5))

Code:
Function Empilement(Tab1, Tab2)
   Dim c()
   ReDim c(1 To Tab1.Count + Tab2.Count)
   For Each k In Tab1: i = i + 1: c(i) = k: Next
   For Each k In Tab2: i = i + 1: c(i) = k: Next
   Empilement = Application.Transpose(c)
End Function

JB
 

Pièces jointes

Dernière édition:
Re : Existe-t-il une fonction permettant d'empiler deux matrices?

Re,

La formule du post #7 n'est valable que pour des matrices de nombres.

S'il s'agit de textes il faut ajouter des guillemets :

Code:
=EVALUER("{"""&MCONCAT(matA;""";""")&""";"""&MCONCAT(matB;""";""")&"""}")
Fichier (2).

A+
 

Pièces jointes

- 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
22
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…