Recherche par un mot dans une base avec plusieurs mots dans la même case

Bonjour,
j’ai une base (feuille TABLE) avec 3 données dans la première case 1 le NOM puis case 2 le MATRICULE et case 3 le SERVICE, avec 700 agents.
Je dois renseigner un tableau en fonction des actions des agents (feuille différente), donc en tapant le nom de l’agent dans ce tableau cela affiche automatiquement le matricule et le service (ça je sais faire).
=MAJUSCULE(RECHERCHEV(A1;TABLE.A$1:B$700;2;0)) j’obtiens le matricule
=MAJUSCULE(RECHERCHEV(B1;TABLE.B$1:C$700;2;0)) j’obtiens le service
soit
FEUILLE “TABLE”
case 1 NOM, case 2 MATRICULE, case 3 SERVICE
sur ma FEUILLE DE TRAVAIL
je tape le nom en case 1 et le reste s’affiche en case 2 et 3

Mais si dans ma base (feuille TABLE) la première case contient le GRADE, le NOM et le PRÉNOM (ex TECHNICIEN BLANC LUCAS), est-il possible d’écrire juste le nom (dans la feuille de travail) et grâce à une formule les 3 mots s’affichent automatiquement dans ma case 1 puis automatiquement suivront le MATRICULE puis le SERVICE (voir les formules ci-dessus).
Il s’agit d’une recherche par un seul mot pour un gain de temps.
J’espère avoir été assez clair, merci à celui qui me donne cette formule qui me donne du fil à retordre.

Bonjour Manu.S,

Le procédé me semble peu sûr, en raison des homonymies possibles.

En partant du matricule ce risque est éliminé.

Donc en inscrivant le matricule en colonne B de la “Feuille de travail” vous pourrez aisément récupérer les valeurs des colonnes A et C de la feuille TABLE, avec les formules ci-dessous :

En A1 pour le nom =MAJUSCULE(INDIRECT("TABLE.A"&EQUIV(B1;TABLE.B$1:B$700;0);1))

En C1 pour le service =MAJUSCULE(INDIRECT("TABLE.C"&EQUIV(B1;TABLE.B$1:B$700;0);1))

Si TABLE.A contient d’autre valeurs que le nom, et que le nom se retrouve systématiquement en deuxième position

=MAJUSCULE(STXT(SUPPRESPACE(INDIRECT("TABLE.A"&EQUIV(B1;TABLE.B$1:B$700;0);1));TROUVE(CAR(32);SUPPRESPACE(INDIRECT("TABLE.A"&EQUIV(B1;TABLE.B$1:B$700;0);1)));NBCAR(SUPPRESPACE(INDIRECT("TABLE.A"&EQUIV(B1;TABLE.B$1:B$700;0);1)))-TROUVE(CAR(32);SUPPRESPACE(INDIRECT("TABLE.A"&EQUIV(B1;TABLE.B$1:B$700;0);1)))+1))

:slight_smile:

Merci de vous intéressez à mon cas, mais ma feuille de travail me sert justement à retrouver le matricule, il est plus facile pour moi de faire une recherche par nom de famille.

Votre formule hyper complexe je n’arrive pas à l’exploiter, s’agit-il de la formule qui permet d’identifier un nom dans une case avec plusieurs mots?

Si non pouvez-vous me la fournir, ce serait super!

Bonjour

@Manu.S a écrit :

… il est plus facile pour moi de faire une recherche par nom de famille …

C’est le “mélange” de plusieurs informations différentes dans la même cellule (grade, nom, prénom…) qui fait que tout devient difficile ou compliqué (en plus du problème d’homonymie justement évoqué par @njhub).

Mon conseil est de répartir ces informations dans des colonnes différentes afin de pouvoir utiliser les fonctions habituelles et que tu maîtrises.

Il est possible de “traiter” les données existantes pour les répartir automatiquement sur plusieurs colonnes via la commande DonnéesTexte en colonnes

[Ajout 21-12-20 12:50]

@Manu.S a écrit :

Mais le problème je peux avoir deux personnes avec le même nom donc il me faudrait une formule qui reconnaisse le nom et le prénom

Voir une proposition dans le classeur joint RechercheNomPrénom.ods :

  • saisie (ou sélection dans la liste) du nom recherché en E2

  • saisie (ou sélection) du prénom en F2 (la liste des prénoms est réduite aux personnes dont le nom est saisie en E2 par la formule SI($A$2:$A$6=$E$2;$B$2:$B$6;""))

  • affichage de l’id en G2 par la formule

    -EQUIV($F$2;SI($A$2:$A$6=E2;$B$2:$B$6;"");0) : on recherche dans la “liste réduite” des prénoms celui saisi en F2. Cela donne un numéro de ligne, utilisé dans la fonction INDEX

  • INDEX($C$2:$C$6;EQUIV($F$2;SI($A$2:$A$6=E2;$B$2:$B$6;"");0);1) qui va rechercher l’id à cette position

  • on ne calcule que si E2 et F2 sont saisis : =SI(ET(E2<>"";F2<>"");INDEX($C$2:$C$6;EQUIV($F$2;SI($A$2:$A$6=E2;$B$2:$B$6;"");0);1);"")

Cordialement

Super je ne connaissais pas, c’est la solution à mon problème, encore un grand merci pour ton aide.
On n’en apprend tous les jours avec LibreOffice.

Mais le problème je peux avoir deux personnes avec le même nom donc il me faudrait une formule qui reconnaisse le nom et le prénom donc avec 2 conditions.
ex sur ma feuille de NOMS:
A1 VERT A2 Ali A3 (matricule) et B1 VERT B2 Bruno B3 (matricule)

Sur ma feuille de travail:
Quand j’écris VERT par défaut le prénom Ali va s’afficher =MAJUSCULE(RECHERCHEV(A1;NOMS.B$1:C$1000;2;0)) mais je voudrais VERT Bruno donc dans la case suivante j’écris Bruno
c’est là où il me faudrait une formule en B3 qui tient compte de B1 VERT et B2 Bruno.
Pouvez-vous encore m’aider, merci ?