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
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]]))))
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
Ca, ce n'est pas un nombre. C'est une chaine.
Donc je ne comprends vraiment pas :

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.
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
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]]))))
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
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.
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 😕
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87