Recherche sous conditions

momain

XLDnaute Nouveau
Bonjour,

Pour automatiser la saisie d'absences de salariés, je voudrais relier mon tableau d'absences (onglet "absences") à la base du personnel, celle-ci ayant la particularité d'être constituée de plusieurs lignes par salarié, de façon à historiciser le parcours professionnel de chacun dans l'entreprise. Ces lignes sont appelées "historiques de poste", et ont chacune une date de début et une date de fin. Lorsqu'un salarié change de poste et/ou de statut et/ou d'établissement (etc.), on "clôture l'historique de poste à un date J et on ouvre un nouvel historique de poste à une date J+1.

Je souhaite donc qu'Excel retrouve automatiquement certaines informations du salarié pour lequel ses nom et prénom auront été saisis, en retrouvant l'historique de poste correspondant au 1er jour de son absence.

Le fichier joint sera plus clair.

Ma difficulité réside dans le fait que pour un salarié (une valeur recherchée), il existe potentiellement plusieurs lignes. Avec RECHERCHEV, je n'aurai donc pas le bon résultat car je ne peux pas filtrer ma recherche en fonction de la date de début et de fin de l'historique. J'ai aussi essayé avec SOMMEPROD mais les valeurs recherchées sont au format texte, ce qui empêche de les traiter.

J'ai enfin recherché s'il était possible de le faire avec INDEX et EQUIV, mais je ne vois pas comment insérer mes conditions de type >=, et <=.

Voici récapitulées mes conditions :
NOM&PRENOM = NOM&PRENOM (quite à créer une colonne intermédiaire pour concatener les deux)
ET début historique <= début absence
ET [fin historique >= début absence OU fin historique = ""] (pour repérer les historiques en cours)

Je suppose qu'avec une boucle VBA on doit pouvoir s'en sortir, mais si je peux me passer de cette solution, ça serait mieux (je ne me suis pas encore mis à la programmation).

Auriez-vous une idée pour résoudre mon problème ? Un grand merci pour votre aide.
 

Pièces jointes

  • Recherche avec conditions.xlsx
    12.4 KB · Affichages: 53
  • Recherche avec conditions.xlsx
    12.4 KB · Affichages: 57
  • Recherche avec conditions.xlsx
    12.4 KB · Affichages: 60

CISCO

XLDnaute Barbatruc
Re : Recherche sous conditions

Bonjour

Une possibilité en pièce jointe, avec une formule matricielle à valider avec Ctrl+maj tempo+entrer, en INDEX EQUIV.

Le principe :
* Le premier EQUIV recherche la position du début de la plage correspondant à NOM&PRENOM en cours.
* Le deuxième EQUIV recherche la date du début de l'absence dans la la colonne "début historique", sur les bonnes lignes, celles-ci étant déterminées grace au DECALER.

Tu peux nommer la partie EQUIV(absences!A2&absences!B2;'base personnel'!A$2:A$7&'base personnel'!B$2:B$7;0) que l'on trouve deux fois dans la formule.

On doit certainement pouvoir faire cela avec uniquement des DECALER.

Je n'ai fait le travail que pour la colonne poste. Je suppose que tu pourras adapter la formule aux autres colonnes.

@ plus

PS 1 : Avec cette formule, il faut absolument que les lignes correspondant à une personne soient placées les unes en dessous des autres, les unes après les autres. De plus, il faut que les dates soient mises dans l'ordre croissant dans chacune de ces plages. C'est le cas du fichier mis en exemple.

PS 2 : Si tu as beaucoup de lignes, cette méthode, avec une formule matricielle, prendra peut être trop de temps de calcul. Dans ce cas, il faudra certainement passer par une macro, ce que je ne sais faire.
 

Pièces jointes

  • Recherche avec conditions.xlsx
    12.7 KB · Affichages: 44
  • Recherche avec conditions.xlsx
    12.7 KB · Affichages: 47
  • Recherche avec conditions.xlsx
    12.7 KB · Affichages: 50
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : Recherche sous conditions

Bonjour le Forum,
Bonjour momain, CISCO:),

@CISCO la seule chose que je vois en ouvrant ton fichier dans la colonne poste c'est

=INDEX($'base personnel'.C$2:C$7;)

en matricielle donc soit j'ai un soucis a l'ouverture soit il c'est passer quelque chose chez toi au moment de l'enregistrement (je pense plutot à la première solution):)

autrement je poste quand même ce que j'ai fait qui je pense doit être différent de toi

Pas besoin que la feuille base personnel soit triée par nom ni que les dates soient par ordre croissant

j'ai aussi créé des plages nommée dynamique si tu ajoutes des données en feuillle base personnel elles seront prises en compte sans toucher aux formules

ce sont aussi des formule matricielle donc même soucis que l'explique CISCO quand a la quantité de données a traité avec risque d'un besoin de macro (et la je ne pourrais pas t'aider je suis une bille à ce jeu la)

Cordialement
 

Pièces jointes

  • Recherche avec conditions-1.xls
    13 KB · Affichages: 48

CISCO

XLDnaute Barbatruc
Re : Recherche sous conditions

Bonsoir

@ Jocelyn : Agrandis, STP, la barre des formules vers le bas, et tu en verras un peu plus :). J'ai mis la formule sur plusieurs lignes, histoire de la rentre plus lisible... Autrement, ta proposition est pas mal non plus...Peut être faut-il y mettre un <= et/ou un >= dedans ?

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Recherche sous conditions

Bonsoir

Une variante de ma proposition précédente que l'on peut écrire de façon beaucoup plus courte en utilisant des plages (dynamiques) si on le veut.

@ plus
 

Pièces jointes

  • Recherche avec conditionsbis.xlsx
    12.7 KB · Affichages: 52

momain

XLDnaute Nouveau
Re : Recherche sous conditions

Un grand merci à vous deux pour le temps passé sur ma requête. Je ne maîtrise pas encore bien INDEX, EQUIV et DECALER, mais votre proposition va me permettre de m'y mettre vraiment car les possibilités sont très étendues.
 

Discussions similaires

Réponses
14
Affichages
544

Statistiques des forums

Discussions
312 368
Messages
2 087 661
Membres
103 633
dernier inscrit
Surfer