Signaler

Conditions à définir sur une partie d'une liste [Résolu]

Posez votre question JFL - Dernière réponse le 22 nov. 2016 à 21:38
Bonjour,

Je souhaiterai, parmi un tableau contenant plusieurs agents, définir pour chacun d'eux en fonction de la date, si c'est la situation actuelle, passée ou à venir :

Agent Situation au : Affichage recherché
B 01/01/2000 Passé
B 01/05/2006 Actuelle
B 01/01/2017 A venir
C 01/02/2006 Passé
C 01/08/2010 Passé
C 13/11/2016 Actuelle
C 15/11/2016 A venir (date du post 14/11/2016)

Je ne sais pas comment travailler les conditions pour chacun des agents qui sont dans cette liste.
Vous remerciant de votre aide,
Afficher la suite 
Utile
+0
moins plus
Bonjour,

Avec ton exemple,je te propose cette formule qui donne les résultats attendus :
=SI(B1>AUJOURDHUI();"A venir";SI(A2=A1;SI(B2<AUJOURDHUI();"Passé";"Actuelle");"Actuelle"))
JFL- 15 nov. 2016 à 07:42
Bonjour,
Merci beaucoup cela fonctionne, à condition de bien mettre les agents dans l'ordre alphabétique et dans l'ordre chronologique des dates.
J'ai juste ajouté un = dans la condition B2 par rapport à aujourd'hui sinon on avait une difficulté le jour du changement.
Est-il possible de faire la même chose si les données ne sont pas classées ?
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonsoir,

Est-il possible de faire la même chose si les données ne sont pas classées ?

C'est possible mais il faut passer par une formule matricielle un peu plus complexe et plus gourmande :
=SI(ET(MAX(SI($A$2:$A$3000=A2;$B$2:$B$3000))=B2;B2>AUJOURDHUI());"A venir";SI(MAX(SI(A2=$A$2:$A$3000;SI($B$2:$B$3000<=AUJOURDHUI();$B$2:$B$3000)))<>B2;"Passé";"Actuelle"))

La formule doit être validée par crtl+maj+entrée simultanées (2 doigts au moins !)
Si tu as plus de 3000 lignes tu adaptes (et pour moins aussi !)
JFL- 21 nov. 2016 à 16:17
Bonjour,
Autant la première formule fonctionne quand on écrit les choses dans l'ordre, autant le résultat est étonnant quand les choses ne se suivent pas pour un agent :

B 01/01/2000 Passé
B 01/05/2006 Passé
B 01/01/2017 A venir
C 01/02/2006 Passé
C 01/08/2010 Passé
C 02/05/2014 Passé
B 20/11/2016 Passé
C 13/11/2016 Passé
C 16/11/2016 Passé
C 17/11/2016 Passé
D 01/01/2016 Passé

Avec la première formule lorsque les agents sont dans l'ordre mais pas les dates on a : B 01/01/2000 Passé
B 01/05/2006 Actuelle
B 01/01/2017 A venir
B 20/11/2016 Actuelle
C 01/02/2006 Passé
C 01/08/2010 Passé
C 02/05/2014 Passé
C 13/11/2016 Passé
C 16/11/2016 Passé
C 17/11/2016 Passé
C 21/11/2016 Actuelle
D 01/01/2016 Actuelle
--> deux situations actuelles pour la personne B.

Merci pour l'aide.
Répondre
gbinforme 12914Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 8 décembre 2016 Dernière intervention - 21 nov. 2016 à 17:50
Bonjour,

Sans doute parce que soit :
- tu n'as pas tout lu
- tu n'as pas bien appliqué
- tu n'as pas compris la formule matricielle

Voici le résultat que cela donne, qui me parait correct :
Agent	Date	ton résultat	avec formule
B 01/01/2000 Passé Passé
B 01/05/2006 Passé Passé
B 01/01/2017 A_venir A venir
C 01/02/2006 Passé Passé
C 01/08/2010 Passé Passé
C 02/05/2014 Passé Passé
B 20/11/2016 Passé Actuelle
C 13/11/2016 Passé Passé
C 16/11/2016 Passé Passé
C 17/11/2016 Passé Actuelle
D 01/01/2016 Passé Actuelle
Tu peux vérifier dans le classeur : http://www.cjoint.com/c/FKvqXzRH6zl
Répondre
JFL- 21 nov. 2016 à 18:19
Merci du retour, je suis exigeant je sais !
Je ne sais pas pourquoi cela a du mal à fonctionner sur mon fichier, mais j'ai vu que c'était bon sur le tien. Par contre, en ajoutant des situations, les choses se compliquent (deux situations futures...) : deux erreurs C avec la date du 31/12/2016 et B avec la date du 01/12/2016.

Agent Date avec formule
B 01/01/2000 Passé
B 01/05/2006 Passé
B 01/01/2017 A venir
C 01/02/2006 Passé
C 01/08/2010 Passé
C 31/12/2016 Passé
C 01/01/2017 A venir
C 20/11/2016 Actuelle
B 20/11/2016 Actuelle
B 01/12/2016 Passé
C 13/11/2016 Passé
C 16/11/2016 Passé
C 17/11/2016 Passé
D 01/01/2016 Passé
D 18/11/2016 Actuelle
D 22/11/2016 A venir

Je sais que tu vas encore m'épater. Je t'avouerai ne pas trop comprendre la formule matricielle.
Répondre
gbinforme 12914Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 8 décembre 2016 Dernière intervention - 21 nov. 2016 à 18:52
RE
J'avais considéré que tu n'avais qu'une date à venir et donc la formule se simplifie :
=SI(B2>AUJOURDHUI();"A venir";SI(MAX(SI(A2=$A$2:$A$3000;SI($B$2:$B$3000<=AUJOURDHUI();$B$2:$B$3000)))<>B2;"Passé";"Actuelle"))

Tu peux vérifier dans le classeur : http://www.cjoint.com/c/FKvrZSe4N3l
Répondre
JFL- 22 nov. 2016 à 08:02
Bonjour.
Merci cela correspond à mon besoin.
Des petites choses :
1 - Serait-il possible que rien ne s'écrive si l'agent et la date ne sont pas renseignés :
Agent Date avec formule
B 01/01/2000 Passé
B 01/05/2006 Passé
B 20/11/2016 Actuelle
B 01/12/2016 A venir
B 01/01/2017 A venir
C 01/02/2006 Passé
C 01/08/2010 Passé
C 13/11/2016 Passé
C 16/11/2016 Passé
C 17/11/2016 Passé
C 20/11/2016 Actuelle
C 31/12/2016 A venir
C 01/01/2017 A venir
B 23/11/2016 A venir
Actuelle
D 01/01/2016 Passé
D 18/11/2016 Actuelle
D 23/11/2016 A venir

2 - Que tu m'expliques vraiment comment mettre en oeuvre la formule dans mon fichier : je fais un copier-coller mais cela ne fonctionne pas. Il y a une histoire de validation de la formule matricielle mais je n'ai pas encore du comprendre comment faire.

Comptant encore sur ton aide,
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

1 - Serait-il possible que rien ne s'écrive si l'agent et la date ne sont pas renseignés
Pas de souci, il suffit de faire le test :
=SI(NBVAL(A2:B2)<2;"";SI(B2>AUJOURDHUI();"A venir";SI(MAX(SI(A2=$A$2:$A$3000;SI($B$2:$B$3000<=AUJOURDHUI();$B$2:$B$3000)))<>B2;"Passé";"Actuelle")))


http://www.cjoint.com/c/FKwindLbQLl

2 - Que tu m'expliques ...je fais un copier-coller mais cela ne fonctionne pas.
Tu fais un copier/coller => ta formule est 'normale'.
Pour la mettre en matricielle tu fais F2 sur la cellule tu valides la formule par crtl+maj+entrée simultanées (2 doigts au moins !).

Pour recopier vers le bas ta formule, il te suffit de double cliquer sur la petite croix en bas de la cellule de la formule. lorsque tu rajoutes des lignes, même procédure.
JFL- 22 nov. 2016 à 21:38
Génial, j'ai tout compris.
Encore merci beaucoup de ton aide,
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !