XL 2016 Recherche a deux conditions dans plusieurs onglets

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 !

thivame

XLDnaute Junior
Bonjour,

J'ai un soucis, dans mon tableau cette formule fonctionne très bien et le renvoi la valeur cherchée

{=SIERREUR(SI(NB.SI($A259;"="&"BAC*")=1;INDEX($E$2:$O$500;EQUIV(1;($E$2:$E$500=E259)*($X$2:$X$500="BAC")*($F$2:$F$500="echec");0);10);"");"")}

Mais si je veux la transformer pour chercher dans plusieurs onglets qui correspondent aux années, cela ne fonctionne pas

{=SIERREUR(SI(NB.SI($A259;"="&"BAC*")=1;INDEX(INDIRECT( "'" & periode2 & "'!$E$2:$O$500");EQUIV(1;(INDIRECT( "'" & periode2 & "'!$E$2:$E$500")=E259)*(INDIRECT( "'" & periode2 & "'!$x$2:$x$500")="BAC")*(INDIRECT( "'" & periode2 & "'!$F$2:$F$500")="echec");0);10);"");"")}

"periode2" représente le nom définissant les onglets 2021; 2022; 2023.

Comment faire cette recherche sur plusieurs onglets,sachant que la valeur cherchée " e259" peut se retrouver plusieurs fois dans les onglets mes l'ensemble des critères 1 seule fois ? De plus j'ai été obligé de modifier mon tableau car il n'accepte pas ($X$2:$X$500="BAC*)

Merci par avance pour votre aide

Cordialement
 
Dernière édition:
Bonjour Thivame, Gbinforme,
Si vous n'avez que trois onglets, pourquoi ne pas faire simplement quelque chose du genre :
VB:
=SIERREUR(Formule1;"") & SIERREUR(Formule2;"") & SIERREUR(Formule3;"")
Dans votre fichier cela ferait :
Code:
=SIERREUR(SI(NB.SI('2021'!$A259;"="&"BAC*")=1;INDEX('2021'!$E$2:$O$500;EQUIV(1;('2021'!$E$2:$E$500='2021'!E259)*('2021'!$X$2:$X$500="BAC")*('2021'!$F$2:$F$500="echec");0);10);"");"") &
SIERREUR(SI(NB.SI('2022'!$A259;"="&"BAC*")=1;INDEX('2022'!$E$2:$O$500;EQUIV(1;('2022'!$E$2:$E$500='2022'!E259)*('2022'!$X$2:$X$500="BAC")*('2022'!$F$2:$F$500="echec");0);10);"");"") &
SIERREUR(SI(NB.SI('2023'!$A259;"="&"BAC*")=1;INDEX('2023'!$E$2:$O$500;EQUIV(1;('2023'!$E$2:$E$500='2023'!E259)*('2021'!$X$2:$X$500="BAC")*('2023'!$F$2:$F$500="echec");0);10);"");"")
En matriciel bien sur.
 
Avec un seul nom ("periode2") je ne vois pas comment tu pourrais définir 3 onglets.
Je pense qu'il te faut les trois noms en clair ou enregistrés dans une cellule.
Bonjour,
Le nom "période" fait référence aux cellules A1,A2,A3 .de mon onglets "bases".qui reprennent le nom des onglets..
Cela marche pour une autre formule.



Bonjour Silvano,
Malheureusement en réalité pour le moment j'ai 5 onglets et cela va augmenter au fil des années

Mais je sèche mise à part faire des formules a rallonge...mais plus de 3 onglets c'est vraiment lourd, surtout que je dois faire plusieurs recherche la suite....

Cordialement
 
Juste deux questions, si j'ai bien compris.
1- S'agissant d'un historique, la première feuille ne peut pas contenir de données en colonne F et G ?
C'est ce qu'on pourrait considérer comme la feuille de départ.
2- Pour une année donnée on traite les années en "reculant" ?
Par ex en 2023 on regarde par rapport à 2022, si pas trouvé on regarde en 2021 ....
Mais on s'arrête au premier item trouvé ?
( par ex 2021 échec, 2022 réussi, on remonte pour 2023 "réussi" qui serait le résultat du dernier test passé ? )

NB: Si j'ai bien compris, alors je ne pense pas que ce soit faisable en formules. Après vos réponses je regarderais en VBA.
 
les deux premières feuilles ne sont pas des année..
La feuille 2019 peut contenir des infos en "f" et "I" venant de la même année ou des années suivantes pour indiquer en "I" quel examen a passé la personne ayant fini le test de sélection..
La colonne "G" indique: vide= fini, malade : non fini pour maladie, parti: non fini pour raison autre... Cette colonne se rempli automatiquement par un code vba venant d'un autre classeur....
Concernant le colonne "F" j'arrive à la remplir par formule quand il s'agit d'un "retour" d'un test de sélection , mais pour l'examen non, je pense que c'est parce qu'il prend la première occurrence...et que j'ai eu de la chance jusqu'à ce jour.. Ou autre chose
 
Bonjour,
Je pense que par formule ce ne soit l'usine à gaz, car il y a tout à parier qu'il s'arrêtera à la première occurrence, et si ce n'est pas le cas il faudrait analyser toutes les situations pour voir quelle est celle à traiter.
Et ce sur toutes les années précédentes.

En VBA on peut faire une fonction comme celle là :
VB:
Function ChercheSituation(Id$)
    ChercheSituation = ""
    With Sheets("2019")
        If Application.CountIf(.[D:D], Id) > 0 Then
            DL = .Cells(.Cells.Rows.Count, "D").End(xlUp).Row
            For L = 2 To DL
                If .Cells(L, "D") = Id And .Cells(L, "E") <> "" Then
                    ChercheSituation = .Cells(L, "E") & " en 2019 à " & .Cells(L, "A")
                    Exit Function
                End If
            Next L
        End If
    End With
End Function
mais qui ne traite que l'année précédente.
Et comme je n'ai pas compris s'il fallait traiter toutes les années antérieures et postérieures je ne peut en faire plus.
Mais vous pouvez l'adapter plus précisément avec vos besoins.
 

Pièces jointes

Bonjour,
En fait j'ai trouvé un semblant de solution
Dans chaque onglet j'ai créé des colonnes cachées a la suite représentant chaque onglet (année) et je fais les recherches par année...je n'ai pas finalisé..mais je pense que ça va ramer un peu.
Merci pour votre aide
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Retour