A quoi servent les formules matricielles ?

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'914
Appréciations reçues : 876
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 16 août 2019, 00:27

Je viens de découvrir aussi une autre utilisation : faire une fonction VBA qui renvoie un tableau, ce dernier est alors affecté à non plus une seule cellule excel mais un groupe de cellules par le biais d'une matrice ={ma_fonction} validée sur plusieurs cellules contiguës.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 16 août 2019, 00:35

Bonsoir le fil, bonsoir le forum,

Pourquoi j'ai lu ça hein !?... Z'auriez pas un doliprane s'il vous plaît. Non, non, pas un, la boite !... Hello Dolly, qu'elle chantait l'autre....
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 16 août 2019, 07:04

Bonjour à toutes et tous !
Je viens de découvrir aussi une autre utilisation : faire une fonction VBA qui renvoie un tableau, ce dernier est alors affecté à non plus une seule cellule excel mais un groupe de cellules par le biais d'une matrice ={ma_fonction} validée sur plusieurs cellules contiguës.
Effectivement, il est possible de retourner plusieurs valeurs d'une même fonction à condition qu'elle soit validée en matricielle pour que ceci fonctionne, la fonction doit être terminée par une paire de parenthèses () afin d'indiquer qu'elle retourne un tableau et non une simple valeur, comme celle-ci par exemple :
Function MaFonction(Chaine As String) As Variant()

    Dim T()
    '...
    MaFonction = T
    
End Function
et comme le précise Eric, les cellules à sélectionner doivent l'être en horizontal et si on souhaite avoir le résultat en vertical, le tableau au sein de la fonction doit être dimensionné en conséquence. Une simple fonction qui compte les mots dans une chaîne :
Function Compter(Chaine As String) As Variant()

    Dim Dico As Object
    Dim Tablo() As Variant
    Dim Cle As Variant
    Dim Tbl As Variant
    Dim I As Long
    
    Set Dico = CreateObject("Scripting.Dictionary")
        
    'splite sur les espaces
    Tbl = Split(Chaine, " ")
    
    'compte le nombre de chaque mot
    For I = 0 To UBound(Tbl): Dico(Tbl(I)) = Dico(Tbl(I)) + 1: Next I
    
    I = 0
    
    'inscrit dans un tableau...
    
    'pour un tableau sur deux colonnes et x lignes, dans le cas de cette fonction, le tableau doit être dimensionné au préalable
    ReDim Tablo(1 To Dico.Count, 1 To 2)
    
    For Each Cle In Dico.Keys
        
        I = I + 1
        Tablo(I, 1) = Dico(Cle): Tablo(I, 2) = Cle

    Next Cle
    
    'pour un tableau sur deux lignes et x colonnes, on peut utiliser "Redim Preserve"
'    For Each Cle In Dico.Keys
'
'        I = I + 1: ReDim Preserve Tablo(1 To 2, 1 To I)
'        Tablo(1, I) = Dico(Cle): Tablo(2, I) = Cle
'
'    Next Cle
    
    Compter = Tablo
    
End Function
1 membre du forum aime ce message.
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'599
Appréciations reçues : 250
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 16 août 2019, 08:16

re

si vous me mettez en plus des macros... 8[]

je crois que dans Excel, à 99,99% je gère des données, tout comme 99,99% d'entre nous
et que par conséquent, on n'a jamais besoin de ces formules

je mets à part SOMMEPROD
car le fond de ma question de départ portait sur les formules avec { }

vu comme tout est compliqué pour ces formules, rassurez-moi : en aurais-je vraiment besoin un jour ? :cry:
ou puis-je dormir tranquille, rester idiot et simplet, et ne plus y penser ?

amitiés
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'914
Appréciations reçues : 876
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 16 août 2019, 08:48

Dans 95% des cas je me satsifait en effet d'excel, surtout depuis que j'ai découvert le SOMMEPROD (j'ai horreur des NB.SI.ENS dont je ne comprends pas la construction, !)
Après le VBA c'est pour le fun, ou juste automatiser un filtre avancé, l'actualisation d'un TCD, la captation de données sur le web. Surtout pas de calcul sauf exception car on ne peut jamais dire jamais.
Et les matricielles, c'est juste pour le décrassage de neurones ... quand j'y arrive !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'599
Appréciations reçues : 250
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 16 août 2019, 09:11

salut Steelson

merci, tu me rassures :)

note : pour récupérer des données du web, essaye Power Query

amitiés
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'704
Appréciations reçues : 701
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 16 août 2019, 09:28

Bonjour,
Un cas pratique qui évite la création d'une table.
Cdlt.
Annotation 2019-08-16 092642.png
Annotation 2019-08-16 092642.png (11.74 Kio) Vu 39 fois
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'599
Appréciations reçues : 250
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 16 août 2019, 10:11

salut Jean-Eric

je ne comprends pas bien...
il y a longtemps que je fais des factures sous Excel, quoique la loi incite à passer sur un progiciel
je n'a pas eu besoin de formules matricielles pour la TVA, ni autres

note : si tu mets un code de TVA (dans ton exemple de 1 à 3) il est bien mieux de créer la table noire
car tout le monde peut vérifier,
on peut modifier facilement les taux (la France en change souvent)
et surtout on ajoute une colonne qui fait la somme de chaque taux : c'est une obligation légale et ça aide les comptables pour leur déclaration de TVA

je sais que tu es capable de faire des formules très condensées (matricielles ou non)
comme tu le suggères ici

à titre personnel, étant bien moins compétent, je préfère des calculs (ou tables) intermédiaires

merci de ton exemple, spectaculaire pour moi je l'avoue
mais bon, apparemment on peut se passer de formules { }

amitiés à toi et à tous
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 5'565
Appréciations reçues : 417
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019 + 365

Message par 78chris » 16 août 2019, 10:30

Bonjour

Il y a des cas où, sauf à accumuler n formules, le matriciel gagne du temps, notamment des traitements de chaînes.

Je recherche quelques exemples et reviens.

J'ai aussi eu à les utiliser en MFC (où les {} n'apparaissent pas mais où le calcul est bien matriciel
J'ai retrouvé 3 exemples (je sais que j'ai plein de cas mais c'est pas noté dans le nom du fichier :lol: ) :
  • longueur la plus élevée d'une colonne de textes
  • association d'un élément d'une table de correspondance par rapport à une lettre extraite d'un mélange avec des chiffres
  • liste classée sans doublons à partir d'une autre liste
En revanche les cas que j'avais en tête, très tordus, ont été fait en sommeprod...
Cas_matriciels.jpg
Cas_matriciels.jpg (64.17 Kio) Vu 30 fois
1 membre du forum aime ce message.
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'914
Appréciations reçues : 876
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 16 août 2019, 11:55

jmd a écrit :
16 août 2019, 09:11
merci, tu me rassures :)

note : pour récupérer des données du web, essaye Power Query
Pour VBA, j'ajoute aussi son utilisation pour remplir une BdD de façon conviviale, mais pas par userform (beurk !), par onglet dédié.

Pour le web, PowerQuery est un super outil ... mais il a quelques limites notamment quand le site est mal structuré (pas de table), quand les données sont récupérables en json directement à partir d'une url ou quand on récupère en rafale des données sur plusieurs url. Je pense que l'outil va mûrir, et puis il a d'autres bénéfices.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message