Besoin aide sur formules matricielles

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 !

erics83

XLDnaute Impliqué
Bonjour,

Comme le dit le titre, j'aurai besoin d'une petite aide pour créer une formule matricielle :

J'ai bien lu les tutos de BOISGONTIER (super merci !!!) sur les matricielles, notamment MatBD et MatricielExtraitLangues.

En fait, mon souci est simple, en M1, j'ai une valeur, je dois chercher dans la colonne A si la valeur correspond et si oui, inscrit les valeurs B,C,etc....dans les case N,O,P, etc... voir PJ

J'ai essayé avec
Code:
=equiv($M$1;$A:$A;0)
mais je n'ai que la première ligne....

J'ai vu que les matricielles pouvaient résoudre ce problème...., que j'ai vu dans MatBD, mais que je n'arrive pas à reproduire car je ne peux nommer la plage...

Et naturellement, si la formule s'inscrivait via une macro, ce serait top du top.....

(je sais que je peux utiliser un
Code:
for i = 1 to 15
if cells(i,1)=cells(1,19) then ....
mais j'ai beaucoup de ligne et cela ralentirai le code, d'où l'idée de passer par les matricielles.....

En vous remerciant pour votre aide,
 

Pièces jointes

Re : Besoin aide sur formules matricielles

JB,

J'ai repris votre code (car j'aime bien explorer différentes possibilités).

En fait, j'ai un soucis car ma BD peut -être variable : Je rapatrie des données chaque semaine (cf mes anciens post), et donc, une semaine, je peux avoir 5000 lignes, l'autre semaine 6000, l'autre semaine 4000 etc.....

Et donc, j'ai fait 2-3 essais avec votre code "Article4-5", et le code se met toujours en #Valeur.....En fait, il faudrait pouvoir compter le nombre de lignes en A et adapter BD en fonction de ce nombre de ligne....
J'ai essayé de mettre en début de votre code
Code:
BD=Range("A1:A5000")
pour essayer, mais rien n'a changé...

Merci pour votre aide,
 
Re : Besoin aide sur formules matricielles

Bonjour erics83, JB, le forum,

J'ai pourtant indiqué au post #10 comment entrer la formule matricielle de JB...

La plage de destination s'adapte au nombre de lignes du tableau source T.

Bonne journée.
 
Re : Besoin aide sur formules matricielles

Gloups, au temps pour moi...🙁

En fait, je n'avais pas compris à l'époque qu'il fallait garder les code (fonction) de JB, et donc j'avais toujours des messages d'erreur, mais maintenant en re-essayant = en mettant votre code dans un module + ceux de JB dans le même module, tout fonctionne .....et j'ai compris la logique....

Merci,

Merci pour votre aide,
 
Dernière édition:
Re : Besoin aide sur formules matricielles

Merci job75,

je viens de voir où se situe l'erreur qui me bloque : en fait dans la colonne A, j'ai des formules matricielles qui font référence à un classeur fermé (merci JB), les formules vont jusqu'à 20000 (par sécurité), mais dans mon cas, j'ai des données jusqu'à 5001.....

Donc quand "T" est calculé, il va jusqu'à 20001, et donc j'ai une erreur "#nom" qui apparait dans le résultat du code.....

j'ai essayé de mettre
Code:
"<>", " "
ou
Code:
With [N2].Resize([t].Rows.CountIf(f.[A:A], "><" & ""), [t].Columns. CountIf(f.[A:A], "><" & ""))
dans le comptage des lignes de la colonne A, pour définir "T", mais....cela ne fonctionne pas.....

Merci pour votre aide,
 
Dernière édition:
Re : Besoin aide sur formules matricielles

Bonjour,

>La solution la plus simple et la plus rapide est d'utiliser des tableaux VBA

C'est la méthode utilisée au post #7


>En fait, j'ai un soucis car ma BD peut -être variable : Je rapatrie des données chaque semaine (cf mes anciens post), et donc, une semaine, je peux avoir 5000 lignes, l'autre semaine 6000, l'autre semaine 4000 etc.....


IL suffit de prévoir 10.000 lignes

-Sélectionner N2:Q3000
=filtrebd(A2😀10000;1;L2;{1;2;3;4})
-valider,avec maj+ctrl+entrée

L'intérêt de cette fonction FiltreBD:
- Est de pouvoir être utilisée comme une fonction standard sans connaître le VBA (écrire cette fonction par VBA n'a aucun intérêt)
- Les champs peuvent être déplacés sans modifier le code VBA
- Cette fonction est Ré-utilisable pour d'autres applications


JB
 

Pièces jointes

Dernière édition:
Re : Besoin aide sur formules matricielles

Merci job75,

ligne 5001 à 20000 = elles sont vides, mais il y a des formules qui recherchent dans un classeur fermé et rapatrient les données. Là en l'occurence, de 5001 à 20000, il n'y en a pas, donc vide...mais comme il y a des formules, "T" compte les lignes jusqu'à 20000....



Super merci JB,

Par contre, pour mon info perso, car je n'ai pas tout compris à la logique, mais il semblerait qu'on ne s'intéresse pas à la dernière ligne = on prend 10000, quelque soit le nombre de lignes renseignées (4000, 5000,6000, etc....)

C'est bien ça ?

En vous remerciant à nouveau,

Merci pour votre aide,
 
Re : Besoin aide sur formules matricielles

ligne 5001 à 20000 = elles sont vides, mais il y a des formules qui recherchent dans un classeur fermé et rapatrient les données. Là en l'occurence, de 5001 à 20000, il n'y en a pas, donc vide...mais comme il y a des formules, "T" compte les lignes jusqu'à 20000....

Toujours pas clair, vous parlez de cellules vides, ensuite vous dites qu'il y a des formules 😕

Dans le code que j'ai donné T est défini à partir du CurrentRegion qui s'arrête avant les lignes vides.

A+
 
Re : Besoin aide sur formules matricielles

Merci job75,

la valeur de la cellule est vide, mais elle contient une formule matricielle, qui cherche une valeur dans un fichier fermé, et à la ligne 5002, la valeur de la cellule est vide, mais il y a la formule faisant référence au classeur fermé...et donc "T" va jusqu'à 20001....

En vous remerciant pour votre aide,
 
Re : Besoin aide sur formules matricielles

Merci job75,

En fait, je ne comprends pas ce qui se passe : dans un autre code inscription des matricielles en A1 : D20000 , j'ai bien vérifié, même fait une nouvelle feuille (on ne sait jamais, des essais oubliés....) Je n'ai rien sur la ligne 20001....

et pourtant lorsque votre code tourne, il me met en valeur "T" A1: D20001. ....et don, je me retrouve avec #nom. ....

En vous remerciant pour votre aide,
 
Re : Besoin aide sur formules matricielles

Je suis retourné sur le code de JB, et j’ai un petit souci : admettons que j’ai des données en A1 : I20000, et que modifié la formule matricielle en mettant "1;2;3;4;5;6;7;8;9" j’ai le message d'erreur #valeur. ...

Je n'arrive pas à trouver où je peux indiquer au code qu’il n'y a pas 4, mais 9 colonnes à lire et analyser...

Merci pour votre aide,
 
- 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
4
Affichages
163
Réponses
5
Affichages
144
Réponses
5
Affichages
449
  • Question Question
Microsoft 365 styles et formules
Réponses
9
Affichages
296
Réponses
8
Affichages
471
Retour