Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Si apparait déjà avant dans journée en cours ...

Julien_m

XLDnaute Junior
Bonjour,

J'ai besoin de votre aide car j'essaie de trouver une formule qui détecte si la personne était déjà là avant dans la journée en cours.

Si c'est la première fois qu'elle apparait dans la journée ça doit sortir une certaine valeur appelée "A".
Et si la personne était déjà présente, la valeur sera "A+10" par exemple.

Voici en pièce jointe un fichier ainsi qu'un exemple du résultat que je souhaite. Je précise que les personne ne suivront pas toujours le même ordre au cours de la journée.

Merci d'avance de votre aide
 

Pièces jointes

  • Classeur1.xlsx
    11.6 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Alors un essai en PJ avec :
VB:
=SI(NB.SI.ENS($A$1:A3;Tableau1[[#Cette ligne];[date]];$C$1:C3;Tableau1[[#Cette ligne];[Personne]])=0;"";SI(NB.SI.ENS($A$1:A3;Tableau1[[#Cette ligne];[date]];$C$1:C3;Tableau1[[#Cette ligne];[Personne]])=1;Tableau1[[#Cette ligne];[Personne]];Tableau1[[#Cette ligne];[Personne]]&REPT("+10";-1+NB.SI.ENS($A$1:A3;Tableau1[[#Cette ligne];[date]];$C$1:C3;Tableau1[[#Cette ligne];[Personne]]))))
 

Pièces jointes

  • Classeur1 (13).xlsx
    11.8 KB · Affichages: 5

Julien_m

XLDnaute Junior
Sur le principe c'est bien ça merci

Par contre pour calculer la 2e apparition de A, il faudrait reprendre la 1ere apparition A +10. Et le résultat devrait être sous forme de nombre.
à moins que je ne me trompe, ici c'est que du texte et ça ne reprendre pas la précédente valeur de A.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Ca, ce n'est pas un nombre. C'est une chaine.
Donc je ne comprends vraiment pas :
il faudrait reprendre la 1ere apparition A +10
Quel intérêt. Si je suis votre fichier : 2eme apparition +10, troisième apparition +10+10 ....
essayez d'être plus clair dans la description de ce que vous voulez, et fournissez un fichier représentatif.
 

Julien_m

XLDnaute Junior
Effectivement c'est une chaine ^^
Enfin ce que je souhaite c'est la formule de base pour ajouter ensuite mes formules qui remplaceront le +10 et la première valeur affectée.
J'espère être un peu plus clair avec cet exemple ... excusez moi
 

Pièces jointes

  • Classeur1.xlsx
    11.8 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour m'en sortir j'ai créé une liste de correspondance Personne Indice sinon je ne vois pas comment initialiser la valeur avec un nombre.
En Pj un essai avec :
VB:
=SI(NB.SI.ENS($A$1:A3;Tableau1[[#Cette ligne];[date]];$C$1:C3;Tableau1[[#Cette ligne];[Personne]])=0;"";SI(NB.SI.ENS($A$1:A3;Tableau1[[#Cette ligne];[date]];$C$1:C3;Tableau1[[#Cette ligne];[Personne]])=1;RECHERCHEV(Tableau1[[#Cette ligne];[Personne]];$A$25:$B$28;2;FAUX);RECHERCHEV(Tableau1[[#Cette ligne];[Personne]];$A$25:$B$28;2;FAUX)+10*(-1+NB.SI.ENS($A$1:A3;Tableau1[[#Cette ligne];[date]];$C$1:C3;Tableau1[[#Cette ligne];[Personne]]))))
 

Pièces jointes

  • Classeur1 (13) (3).xlsx
    12 KB · Affichages: 5

Julien_m

XLDnaute Junior
Bonsoir Sylvanu,

ça me plait comme ça vous vous approchez de ce que je recherche

Cependant j'aimerai bien passer sans le tableau de correspondance en bas...

Au final, ce que je veux c'est :
  • 1ère apparition : ALEA.ENTRE.BORNES(65;85)/10
  • Xème apparition : Apparition précédente + ALEA.ENTRE.BORNES(15;20)/10
Ce qu'il cloche donc encore c'est valeur_si_faux où il faut repartir de la valeur trouvé en début de journée. Donc que ça soit : Apparition précédente + ALEA.ENTRE.BORNES(15;20)/10

Serait-ce possible d'y arriver ?

Julien.
 

Julien_m

XLDnaute Junior
Non car la fonction Alea est recalculée et modifiée à chaque recalcul.
En PJ la table de correspondance est remplacé par l'index ligne de la première occurrence. C'est le mieux que je sache faire.
D'accord.

Petite idée, je ne vois pas trop comment la formuler dans Excel mais ça serait peut être possible en faisant une sorte de rechercheV où le jour est identique, l'heure minimale et personne identique avec en sortie la valeur de la première apparition.
Ou même trouver dans un premier temps l'index ligne avec les conditions (jour et personne identique, heure minimale) puis rechercheV.

Pas possible comme ça non plus ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Stop.
Désolé mais on peux avoir autant d'idée qu'on veut si on met un peu d'effort de recherche.
J'ai fait le maximum, on peut faire encore plein de choses, mais moi j'aime travailler avec un but précis et là c'est tellement fumeux que j'ai l'impression qu'il n'y aura pas de fin.
Peut être qu'un autre contributeur plus compréhensif vous suivra dans vos hypothèses successives.
 

Julien_m

XLDnaute Junior
Certes je n'ai pas été très clair dès le départ, je vous le présentais avec des inconnues en littérale mais sur le post #9 je pense être assez explicite sur le but recherché avec toutes les valeurs souhaitées.
Mais si si il y a une fin, votre formule fonctionne bien, je veux juste ne pas avoir une table de correspondance. Ce qu'il manque maintenant c'est simplement retrouver la première valeur de la journée (chronologiquement).
Je ne sais pas comment retrouver l'index ou la valeur de la première apparition, mis à part ça tout est nickel

Merci beaucoup quand même de votre aide
Si c'est vraiment impossible sans table de correspondance je ferrais avec
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Comme indiqué dans la formule, la ligne où apparait l'occurrence la première fois est :
VB:
=EQUIV(Tableau1[[#Cette ligne];[Personne]];C:C;0)
Après vous l'utilisez comme bon vous semble, tel quel comme dans la PJ où à travers une formule.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…