Mix entre recherchev et formule matricielle

  • Initiateur de la discussion Initiateur de la discussion stef92230
  • 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 !

stef92230

XLDnaute Junior
Bonjour à tous,

Je vous contacte car je n'arrive pas à trouver de solution bien que je sois dessus depuis ce matin... La formule que je cherche ressemble à d'autres que je fais régulièrement mais rien n'y fait car, au final, je recherche un mot (Gxxxxxx)...

J'ai un tableau récap", qui puise dans différentes feuilles de "base" (compta, adid ou hrv)... mes critères sont :
* matricule
* nb (colonne A : pour définir l'imputation concernées)
résultats recherchés : la section et le %. (G125485 et 100% par exemple..)

Mon but est de croiser les données des 3 tableaux (cpta, adid, hrv) afin de corriger là où les éléments sont mal renseignées

La petite formule (en jaune pale) dans la colonne A des 3 tableaux de base sert à alimenter les colonnes "IMPUTATION" dans récap. Par exemple, si je recherche l'imputation 1 du matricule 100250, je croise le matricule avec si A:A=1, j'aurai G924470 (colonne U dans récap) avec le pourcentage correspondant : 80 (col.v). Quant à l'imputation pour ce même matricule : G925128 et % : 20. Rien pour les imputations 3 et 4 col. w et x)....

J'ai laissé différents tests en exemple... quelqu'un aurait une soluce ???

Je vous remercie par avance car là, je galère... !

Thanks, Stef
 

Pièces jointes

Re : Mix entre recherchev et formule matricielle

Bonjour Stef, Le forum,

avec =SI(MAX((Compta!$B$2:$B$13=Récap!$A5)*(Compta!$A$2:$A$13=1))=0;"";INDEX(Compta!$D$1:$D$13;MAX((Compta!$B$2:$B$13=Récap!$A5)*(Compta!$A$2:$A$13=1)*(LIGNE(Compta!$B$2:$B$13)))😉)
en matriciel en D5 j'ai l'impression que ça fonctionne. Valable seulement si l'item recherché est présent une seule fois !

Cordialement

pour les % imputation :
=SI(MAX((Compta!$B$2:$B$13=Récap!$A5)*(Compta!$A$2:$A$13=1))=0;"";INDEX(Compta!$J$1:$J$13;MAX((Compta!$B$2:$B$13=Récap!$A5)*(Compta!$A$2:$A$13=1)*(LIGNE(Compta!$B$2:$B$13)))😉)
 
Dernière édition:
Re : Mix entre recherchev et formule matricielle

Bonjour.
Vous auriez intéret à remplacer les formules des colonnes A par
Code:
=SI(B2=DECALER(B2;-1;0);DECALER(A2;-1;0);0)+1
Enfin bon ce n'était pas la question.
Si vous pouviez mettre tout à droite de chaque feuille une concaténation du matricule et du N°Imp le plus simple serait d'y rechercher cette même combinaison et de restituer la section à la même ligne. Sinon je pourrais vous écrire une fonction personnalisée qui restitue l'information souhaitée.
À+
 
Re : Mix entre recherchev et formule matricielle

Bonjour et merci pour vos réponses.
@ dugenou, j'ai testé, j'ai eu un #nom? ...!!??
@ Dranreb : je suis preneur de toute solution 🙂 ... idem pour la colonne A si vous avez qqchose de moins moche ou même la retirer (s'il existe par exemple une façon de dire si on trouve 1 fois ce matricule = alimente la l'imputation 1, 2 fois ce matricule = alimente imputation 2,...

Merci par avance, Stef
 
Re : Mix entre recherchev et formule matricielle

Stef,

il faut enlever les espaces qui se mettent dans les noms de plage et valider avec ctrl+maj+entrée
Code:
=SI(MAX((Compta!$B$2:$B$13=Récap!$A5)*(Compta!$A$2:$A$13=1))=0;"";INDEX(Compta!$D$1:$D$13;MAX((Compta!$B$2:$B$13=Récap!$A5)*(Compta!$A$2:$A$13=1)*(LIGNE(Compta!$B$2:$B$13)));))
pour l'imputation : =NB.SI($B$2:B2;B2) comme le propose Dranreb (que je salue !)
 

Pièces jointes

Dernière édition:
Re : Mix entre recherchev et formule matricielle

Je vous ai fabriqué cette fonction à mettre dans un module ordinaire :
VB:
Function RechOcc(ByVal Arg As Variant, ByVal NuOcc As Long, ByVal PlageClé As Range, ByVal Restituer As Range) As Variant
Rem. 1) - Arg:       La valeur cherchée
'    2) - NuOcc :    Le numéro d'occurence  1: le premier, 2: le 2ième de ceux en double, 3: le 3ième des triples etc.
'    3) - PlageClé:  La plage dans laquelle l'argument Arg doit être recherché.
'    4) - Restituer: La colonne entière contenant l'information à la ligne trouvée à restituer.
Dim L As Long
On Error GoTo ÇaCoince
Do
   L = WorksheetFunction.Match(Arg, PlageClé, 0): If NuOcc = 1 Then Exit Do
   NuOcc = NuOcc - 1: Set PlageClé = PlageClé.Rows(L + 1).Resize(PlageClé.Rows.Count - L)
   Loop
RechOcc = Intersect(PlageClé.Rows(L).EntireRow, Restituer.EntireColumn).Value
Exit Function
ÇaCoince: Resume Bredouille
Bredouille: RechOcc = "": Exit Function
End Function
En W9 par exemple
Code:
=RechOcc($A9;DROITE(W$3;1);'HRV_GV IMPUTATIONS'!$B$2:$B$13;'HRV_GV IMPUTATIONS'!$E:$E)
renvoit "G205" sur cette seule ligne de la colonne
À+
 
- 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
15
Affichages
3 K
Membre supprimé 341069
M
Réponses
5
Affichages
982
Membre supprimé 341069
M
Retour