Besoin aide sur formules matricielles

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

  • Article4.xls
    26.5 KB · Affichages: 56
  • Article4.xls
    26.5 KB · Affichages: 57

erics83

XLDnaute Impliqué
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,
 

job75

XLDnaute Barbatruc
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.
 

erics83

XLDnaute Impliqué
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:

erics83

XLDnaute Impliqué
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:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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:D10000;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

  • Article4-5-1.zip
    209.7 KB · Affichages: 37
Dernière édition:

erics83

XLDnaute Impliqué
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,
 

job75

XLDnaute Barbatruc
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 :confused:

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

A+
 

erics83

XLDnaute Impliqué
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,
 

erics83

XLDnaute Impliqué
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,
 

erics83

XLDnaute Impliqué
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,
 

Discussions similaires

Réponses
1
Affichages
127

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado