Aide fonction Recherche

Bonjour à Tous

J'ai un souci avec la fonction Recherche (H ou V). Je joints le fichier suivant dans lequel, grâce à une formule, je souhaiterai automatiser l'entrée des dates pour chaque formation et chaque salarié. La base de données (1er onglet) contient toutes les données (date de formation). Je souhaite faire apparaître en cellule E16 (voir fichier BASE) la date de formation correspondant au salarié...

J'ai tenter une formule : =SIERREUR(FORMULERECHERCHEV(E5;'Données de base'!A:F;'Données de base'!E:E;FAUX);0) mais j'obtiens la date 00/01/1900 ou RECHERCHEV(E5;'Données de base'!A:F;'Données de base'!E:E;FAUX mais j'obtiens NA !

Quelqu'un pourrait-il m'aider ?

Merci beaucoup d'avance.

Bonjour,

Le 3ème argument de la fonction RECHERCHEV est un indice de colonne, pas une plage de cellules.

La bonne formule est donc :

=SIERREUR(RECHERCHEV(A16;'Données de base'!$A$2:$F$19031;6;0);"")

Bonjour et Merci déjà...

J'ai omis de préciser que la date de formation que je recherche est donc une date (format DD/MM/YY) mais que pour certains des modules (de formation) on peut avoir, pour un même salarié, plusieurs dates de sessions mais moi je cherche à isoler la date de formation la plus récente ... Cela est-il possible?

Désolée pour cet apport que j'aurai dû préciser direct ...

Vous remerciant par avance...

Bonjour,

Le 3ème argument de la fonction RECHERCHEV est un indice de colonne, pas une plage de cellules.

La bonne formule est donc :

=SIERREUR(RECHERCHEV(A16;'Données de base'!$A$2:$F$19031;6;0);"")

Oui c'est possible, voici ma proposition :

=SIERREUR(MAX(SI('Données de base'!$A$2:$A$19031=BASE!A37;'Données de base'!$F$2:$F$19031));"")

C'est une formule matricielle, pour qu'elle fonctionne, elle doit être validée avec MAJ + CTRL + ENTREE et apparaît alors entre { }.

Oui c'est possible, voici ma proposition :

=SIERREUR(MAX(SI('Données de base'!$A$2:$A$19031=BASE!A37;'Données de base'!$F$2:$F$19031));"")

C'est une formule matricielle, pour qu'elle fonctionne, elle doit être validée avec MAJ + CTRL + ENTREE et apparaît alors entre { }.

Bonjour Pedro 22,

J'avoue que voter formule va bien au-delà de mes compétences en Excel, je n'ai jamais fait ça. Je ne comprends pas néanmoins pourquoi : =SIERREUR(MAX(SI('Données de base'!$A$2:$A$19031=BASE!A37;'Données de base'!$F$2:$F$19031));"")

BASE A37 : à quoi cela correspond ? Je pensais qu'il fallait mettre A16 mais l'un ou l'autre ne fonctionne pas....

Sans vouloir abuser de ton temps, je vous joints le fichier en question avec les deux formules en cellules E16/F16... Si vous pouvez m'expliquer la construction de votre formule et savoir si elle pourra être étirée dans le sens vertical grâce à vos $...

Aussi, n'ayant jamais fait de formule matricielle si j'ai bien compris je dois l'encadrer de {=FORMULE}? Mais que je fais ça, cela me marque la formule en entier mais ça ne calcule pas... Dois-je paramêtrer mon Pack Office ?

Je vous remercie beaucoup par avance et espère avoir un retour... Désolée d'avoir autant d'interrogations.

Merci bcp !

Très cordialement

Lyly18

Bonjour Lyly, le forum,

Cette formule fonctionne comme MOYENNE.SI, elle calcule quelque chose en fonction d'une condition (dans ton cas, la condition est un identifiant donné). Sauf qu'Excel n'intègre pas de fonction MAX.SI (ni MIN.SI, ni MEDIANE.SI...), donc il faut se débrouiller autrement. C'est l'intérêt des fonctions SOMMEPROD() que je ne maîtrise pas du tout, ou des fonctions matricielles.

Pour les fonctions matricielles, l'ajout manuel des { } est inefficace, la seule solution est, comme indiqué, de valider par MAJ + CTRL + ENTREE, ce qui fait apparaître les accolades autour de la formule.

Concernant le BASE!A37 dans la formule, je t'ai peut-être induit en erreur en allant un peu vite... J'ai vu après que la première ligne de ton fichier est la ligne 16, et non 37 (1ère visible à l'ouverture de ton fichier). Ma formule est donc bonne pour la ligne 37, mais si tu l'écris pour la ligne 16, c'est bien A16 qu'il faut mettre. Les "$" permettent ensuite d'étirer la formule vers le bas tout en gardant les bonnes références de plage.

Je ne sais pas si j'ai bien compris quelles(s) fonction(s) il faut utiliser pour tes 2 cas : "délivré le" et "expire le". De ce que j'ai compris, dans le premier cas c'est la date la plus ancienne correspondant à l'identifiant, et la plus récente pour le second cas ? Ce qui donnerai comme formules :

=MIN(SI('Données de base'!$A$2:$A$19031=BASE!A16;'Données de base'!$F$2:$F$19031))

=MAX(SI('Données de base'!$A$2:$A$19031=BASE!A16;'Données de base'!$F$2:$F$19031))

Je crois par contre que ces formules retournent 0 si aucune correspondance n'est trouvée. Comme tes colonnes sont au format date, le 0 apparaît sous forme 00/01/1900. Je n'ai pas encore réfléchit à une astuce simple pour éviter ce cas de figure (SIERREUR ne fonctionne pas ici car la formule ne génère pas de code d'erreur).

(suite)

Voilà ton fichier modifié en retour. La liste des modifications :

  • Passage des tes 2 tableaux en tableaux structurés (Insertion --> Tableau), ce qui permet d'actualiser automatiquement la plage de lors de l'insertion ou de la suppression de lignes
  • Conversion des tes identifiants dans l'onglet BASE en texte (formule =TEXTE(A16;"#"), ensuite copiée et collée en valeurs)
  • Modification des formules pour afficher #N/A si l'identifiant dans "BASE" n'est pas présent dans "Données de base"

En espérant que ça te conviendra !

Pedro22...

Je prends le temps de lire ça à tête reposée et reviendrai peut être vers vous si ça ne vous dérange pas bien entendu ! En tout cas merci bcp pour toutes ces précieuses informations, j'étais complètement larguée !

Encore Merci

Rechercher des sujets similaires à "aide fonction recherche"