Si avec plusieurs conditions prioritaires
Bonjour,
Dans mon fichier joint j'ai plusieurs projets avec des tâches associées. J'ai plusieurs tâches affectées à chaque projet.
En fonction des statuts des tâches j'aimerai affecté un statut de projet, du style :
si toutes les taches du projet sont terminées alors le projet est terminé
si toutes les taches du projet sont vides alors le projet est en attente
si au moins une tache est en cours ou à faire alors le projet est en cours
si au moins une tache est annulée alors le projet est annulé
J'ai essayé avec une formule equiv et si mais ça ne fonctionne pas...
Est-ce possible avec une formule ou peut-être avec de la VBA ?
Merci pour votre aide
=SI(EQUIV(1;(A:A=$M$12)*(C:C="En cours");0);"En cours";SI(EQUIV(1;(A:A=$M$12)*(C:C="Terminée");0);"Terminé";"faux"))
Bonjour,
Une proposition Excel 365 et la fonction LET.
A tester.
Cdlt.
=LET(
nb;COUNTIF(Projets[Projet];E2);
te;COUNTIFS(Projets[Projet];E2;Projets[Statut];"Terminée");
en;COUNTIFS(Projets[Projet];E2;Projets[Statut];"En attente");
af;COUNTIFS(Projets[Projet];E2;Projets[Statut];"A faire");
ec;COUNTIFS(Projets[Projet];E2;Projets[Statut];"En cours");
an;COUNTIFS(Projets[Projet];E2;Projets[Statut];"Annulée");
IF(nb=te;"Terminé";
IF(AND(OR(en>0;af>0);an=0);"En cours";
"Annulée")))
Merci pour votre réponse.
La formule contient une erreur : apparemment ce serait la valeur projets[projet]. Il y a-t-il des ajustements à apporter ?
Une partie de la formule fonctionne en fait :
si toutes les taches du projet sont terminées alors le projet est terminé => ok
si toutes les taches du projet sont vides alors le projet est en attente => annulée
si au moins une tache est en cours ou à faire alors le projet est en cours => ok
si au moins une tache est annulée alors le projet est annulé => ok
Je cherche où je modifie dans la formule, et je teste dans mon "vrai" fichier.
Si j'ai un problème je reviens
Merci beaucoup
Re,
J'ai du mal avec les tâches vides !
Un exemple ?
Cdlt.
En fait en y réfléchissant, je n'aurai pas besoin de tâches vide...
Par contre peux-tu me dire s'il te plait à quoi correspond "Projets[Projet]" dans la formule car il ne la reconnait pas, j'ai toujours un message d'erreur
Re,
Les données ont été mise sous forme de tableau structuré (dynamique).
Puis renommé Projets.
Cdlt.
D'accord, du coup je remplace par quoi ? Car dans mon fichier je n'ai pas de tableau dynamique; en sachant qu'en plus les projets sont sur une feuille et les tâches dans une autre...
Est-ce un problème ?
Re,
Ce n'est pas encore un problème !?
Pourquoi ne pas avoir envoyé un fichier représentatif de tes vraies données ?
Cdlt.
Ce n'est pas encore un problème !?
Ce qui signifie ????
Pourquoi ne pas avoir envoyé un fichier représentatif de tes vraies données ?
Tout simplement parce que c'est ce qui est demandé dans la charte...
Désolée je ne pensais pas que ça poserai un soucis.
Les données ont été mise sous forme de tableau structuré (dynamique).
Pourquoi ne pas me l'avoir indiqué car cela ne fonctionne pas chez moi si je cherche à modifier ne serait-ce qu'un texte même avec ton fichier téléchargé ?
Je ne cherche pas à copier bêtement une formule... J'aime bien comprendre ce que je fais
En tout cas merci de prendre le temps de m'aider et désolée si je te fais perdre le tiens
Re,
Je pensais que le fichier était clair, à part l'utilisation de la fonction LET (nouvelle fonction 365).
On peut reprendre cool.
Tu ne me fait pas perdre mon temps.
Peux-tu joindre un fichier représentatif de tes vraies données (anonymisé) si nécessaire ?
Cdlt.
Merci c'est chouette.
J'ai refait le fichier je pense au plus juste (après j'ai parfois des idées supplémentaires qui me viennent au fur et à mesure
Voilà ce que je veux faire. Au fur et à mesure que les projets arrivent, dans la feuille projet je l'ajoute manuellement à ma liste de projet.
Si la colonne C (date) est vide alors le statut devient "en attente".
Ensuite, dès que j'ai une date, je rentre dans ma feuille tâches les tâches associées à chaque projet via les listes déroulantes. J'ai mis une formule avec un message en colonne D pour ne pas avoir de statut vide associé à une tâche. Effectivement, j'ai réfléchi à ce que tu m'as écrit et avoir un statut vide c'est pas cohérent...
Bon, c'est là où je complique le tout :
1. Si tous les statuts des taches du projet sont "terminées" alors statut projet = "terminé"
2. si tous les statuts des taches du projet sont "annulée" alors projet = "annulé"
3. si au moins 1 statut tache est "différé" alors projet = "différé"
4. si au moins 1 statut tache est "en attente" alors projet = "bloqué"
5. si au moins 1statut tâche sont soit "en cours" ou "à faire" alors statut projet = "en cours" : je me demande si cette condition est nécessaire car par défaut si ce n'est pas tout le reste, c'est ça.
J'espère que je suis plus claire. En écrivant, je me pose la question de la priorité des résultats; en effet si j'ai et "différé" et "bloqué", quel résultat va choisir excel ? (c'est d'ailleurs le problème que j'avais avec ma formule...). J'ai mis l'ordre dans lequel je pense être les priorités. Je ne sais pas si ce sera possible, sinon je simplifierai un peu.
S'il faut passer par un tableau croisé dynamique pourquoi pas car je me demandai si je n'allais pas en créer un pour faire une sorte de bilan des projets (mais dans une autre feuille le tableau dynamique)
Merci encore de ton aide et ta patience...
N'hésite pas à me dire si je ne suis pas assez claire
Bonjour,
Je ne pourrai regarder ta question qu'en fin de journée.
Patiente...
Cdlt.
Bonjour,
J'ai un petit souci avec tes conditions. Tu parles d'une tâche Différé mais elle n'apparaît pas dans tes données !?
Sinon, il y a un autre souci que tu évoques : la priorité à donner pour les résultats.
Pour terminer, je suis parti avec la fonction LET (nouvelle fonction Excel 365) mais elle semble un peu capricieuse et demande une rigueur insoupçonnée.
Une fonction personnalisée (VBA) serait peut-être plus simple à mettre en œuvre. Qu"en penses-tu ?
Cdlt.
Bonjour,
je reviens avec ma formule LET.
A te relire.
Cdlt.
=LET(
p_t;ESTVIDE(A2);
d_t; ESTVIDE(C2);
n_b; NB.SI(Données[Projet];A2);
t_e; NB.SI.ENS(Données[Projet]; Projets!A2; Données[Statut]; "Terminée");
a_n; NB.SI.ENS(Données[Projet]; Projets!A2; Données[Statut]; "Annulée");
e_a; NB.SI.ENS(Données[Projet]; Projets!A2;Données[Statut]; "En attente");
d_i; NB.SI.ENS(Données[Projet]; Projets!A2;Données[Statut]; "Différé");
SI(p_t=VRAI;"";
SI(OU(d_t=VRAI;n_b=a_n);"Annulée";
SI(n_b=t_e;"Terminée";
SI(d_i>0;"Différé";
SI(e_a>0;"Bloqué";
"En cours"))))))
Bonjour,
Désolée pour la réponse tardive. Merci d'avoir pris le temps de regarder.
J'ai simplifié grandement les données au final car ça me paraissait un peu compliqué et inutile. J'ai pris ton idée des tableaux croisés dynamiques. Avec ça et la fonction SI j'ai réussi à m'en sortir.
Merci pour tout !