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

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

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

Bah avec un tableau A1: D20000 mon code définit T sur A2: D200001 à cause du Offset(1) qui est là pour éviter les titres.

La ligne vide 20001 n'a pas d'importance et ne crée pas d'erreur...

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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. ...

-Sélectionner S2:AA3000
=filtrebd(A2:I10000;1;Q2;LIGNE(1:9))
-valider,avec maj+ctrl+entrée

ou

=filtrebd(A2:I10000;1;Q2;{1;2;3;4;5;6;7;8;9})

JB
 

Pièces jointes

  • Article4-5-1 (2).zip
    421.8 KB · Affichages: 26
Dernière édition:

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

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

Eh bien adaptez le code du post #10 :

Code:
Application.ScreenUpdating = False
Range("N2:V" & Rows.Count).Delete xlUp 'RAZ
If [M1] = "" Then Exit Sub
[A1].CurrentRegion.Offset(1).Name = "T" 'plage nommée
With [N2].Resize([t].Rows.Count, [t].Columns.Count)
  .FormulaArray = "=IF(FiltreBD(T,1,M1,{1;2;3;4;5;6;7;8;9})=0,"""",FiltreBD(T,1,M1,{1;2;3;4;5;6;7;8;9}))"
  .Value = .Value 'facultatif, supprime les formules
  .EntireColumn.AutoFit 'ajustement largeur
End With
Edit : comme JB vous pouvez remplacer {1;2;3;4;5;6;7;8;9} par ROW(1:9)

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

Re,

Vous dites obtenir des valeurs d'erreur #NOM?...

La fonction de JB doit impérativement être dans un module standard.

Si vous la placez dans le code de la feuille son nom n'est pas reconnu...

Bonne nuit.
 

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

Bonjour erics83, JB, le forum,

Ci-joint mon fichier avec la fonction de JB sur 9 colonnes.

Notez le texte vide en A14:A17, il n'a pas d'importance.

Bonne journée.
 

Pièces jointes

  • Article4 fonction JB(1).xls
    79.5 KB · Affichages: 30

erics83

XLDnaute Impliqué
Re : Besoin aide sur formules matricielles

Super merci JB,
J’ai passé mon temps à analyser et comprendre le code, et j’ai réussi à l'adapter à mon cas...merci,
Merci,

Super merci job75,
Effectivement mon erreur était toute bête : j'avais mis le code à l'intérieur d'un USF, et C’est pour cette raison que je me retrouvais éternellement avec des erreurs....je l'ai mis dans un module, et tout fonctionne parfaitement. ...Merci, (je viens de voir que nos messages se sont croisés...:) )

Dernière petite question : je souhaite afficher dans une listbox tous les résultats de la colonne 2 (=donné par LIGNE 2 = colonne O = "entreprise" dans le tout dernier post de job75), comment faire ? Faut il que je fasse une boucle ou y a t il une méthode plus simple ?

En vous remerciant pour votre aide,
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

Dernière petite question : je souhaite afficher dans une listbox tous les résultats de la colonne 2

Ci-joint mon fichier du post #13 puisque c'est la solution la plus simple et la plus rapide.

Il suffit de terminer la macro par :

Code:
If n = 0 Then Exit Sub
With UserForm1
  .ListBox1.List = [O2].Resize(n, 2).Value 'au moins 2 éléments
  .Show 0 'non modal
End With
Edit : il vaut mieux ouvrir l'USF en non modal.

A+
 

Pièces jointes

  • Article4 tableaux VBA(2).xls
    88 KB · Affichages: 29
Dernière édition:

erics83

XLDnaute Impliqué
Re : Besoin aide sur formules matricielles

Super merci job75,

En fait, je viens de m'apercevoir d'où viennent les bugs incessants que j'avais....je suis sous Mac, et apparemment, toutes les fonctionnalités d'Excel Win ne sont pas identiques....

je viens de faire tous les essais sous Win, et tout fonctionne parfaitement......

Merci pour votre aide,

A+ pour de prochaines aventures.....

Merci,
 

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

Re,

Il vaut mieux ouvrir l'USF en non modal, j'ai modifié le post #37.

Pour faire la même chose en utilisant la fonction de JB voyez le fichier joint.

A+
 

Pièces jointes

  • Article4 fonction JB(2).xls
    95 KB · Affichages: 40
Dernière édition:

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

Re,

Une amélioration qui ne fonctionne que sur les PC car sur MAC l'objet Dictionary n'existe pas.

Les lignes vides et les doublons sont éliminés de la ListBox :

Code:
'---remplissage ListBox---
t = [O2].Resize(n, 2).Value 'au moins 2 éléments
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t)
  If t(i, 1) <> "" Then d(t(i, 1)) = ""
Next
With UserForm1
  If d.Count Then .ListBox1.List = d.keys
  .Show 0 'non modal
End With
Fichiers (3) joints.

Bonne fin de soirée.
 

Pièces jointes

  • Article4 tableaux VBA(3).xls
    77.5 KB · Affichages: 35
  • Article4 fonction JB(3).xls
    93.5 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : Besoin aide sur formules matricielles

Re,

Avant d'aller dormir, voyez si ces fichiers fonctionnent sans bug sur MAC.

Les macros utilisent des collections pour éliminer les doublons.

Bonne nuit.
 

Pièces jointes

  • Article4 tableaux VBA pour MAC(1).xls
    87.5 KB · Affichages: 32
  • Article4 fonction JB pour MAC(1).xls
    97 KB · Affichages: 31

erics83

XLDnaute Impliqué
Re : Besoin aide sur formules matricielles

Merci job75,

excusez le retard, mais la grippe...a eu raison de mon neurone....:)

J'ai essayé sur le MAC, en fait, le problème vient de la Combobox qui est "vue" comme une image....et donc cela ne fonctionnait pas, par contre en passant par M2 (et en mettant la valeur recherchée en M2), tout est nickel....

Merci pour votre aide très précieuse,

A bientôt,
 

Discussions similaires

Réponses
1
Affichages
127

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 458
dernier inscrit
Vulgaris workshop