20
Qu’est-ce qu’un champ personnalisé ? Les champs personnalisés contiennent les informations et les valeurs que vous devez/voulez afficher dans votre projet et qui sont propres à votre organisation. Ils peuvent renfermer des formules incorporant des champs Project existants ainsi que d’autres champs personnalisés, en vue de calculer des données. Ils peuvent aussi renfermer des indicateurs graphiques vous avertissant de la satisfaction de telle ou telle condition. Les valeurs des champs personnalisés et les valeurs des indicateurs graphiques dans Microsoft Project 2010 peuvent donc être calculées à l’aide de formules, mais c’est- à-dire ? Comment écrire cette formule ? Dans MS Project 2010, cliquez sur le menu « Projet » puis « Champs personnalisés » dans la zone « Propriétés » ou alors effectuez un right-click dans la zone des titres des colonnes (affichage mode Diagramme de Gantt) et cliquez sur « Champs personnalisés ». Ma formule en « français » Dans mon cas précis, pour un projet donné, voici les valeurs que je souhaitais afficher à gauche de mon diagramme de Gantt : un statut de chacune de mes tâches (seulement le niveau le plus fin) et l’identification des jalons. En français, voici ce que je voulais que ma formule calcule automatiquement : Si l’avancement d’une tâche est de 100%, alors le statut devait être « Achevé ». Sinon : l’avancement de la tâche est < 100%. Dans ce cas : o si la date prévisionnelle de fin est passée (inférieure ou égale à la date d’aujourd’hui), alors le statut devait être « En retard » o sinon, la date prévisionnelle de fin n’est pas encore passée (strictement supérieure à la date d’aujourd’hui). Dans ce cas : Si la date prévisionnelle de début n’est pas encore passée (supérieure ou égale à aujourd’hui) : si l’avancement est > 0%, alors le statut devait être « En avance » sinon, l’avancement est = 0%. Dans ce cas : soit la date prévisionnelle de début est dans 7 jours ou moins (inférieure ou égale à la date d’aujourd’hui +7) alors le statut devait être « Démarrage imminent »

Formule dans un champs.doc

Embed Size (px)

Citation preview

Quest-ce quun champ personnalis

Quest-ce quun champ personnalis ?Leschampspersonnaliss contiennent les informations et les valeurs que vous devez/voulez afficher dans votre projet et qui sont propres votre organisation. Ils peuvent renfermer des formules incorporant des champs Project existants ainsi que dautres champs personnaliss, en vue de calculer des donnes. Ils peuvent aussi renfermer desindicateursgraphiques vous avertissant de la satisfaction de telle ou telle condition.

Les valeurs des champs personnaliss et les valeurs des indicateurs graphiques dans Microsoft Project2010 peuvent donc tre calcules laide de formules, mais cest--dire ? Comment crire cette formule ?

Dans MS Project 2010, cliquez sur le menu Projet puis Champs personnaliss dans la zone Proprits ou alors effectuez un right-click dans la zone des titres des colonnes (affichage mode Diagramme de Gantt) et cliquez sur Champs personnaliss.

Ma formule en franaisDans mon cas prcis, pour un projet donn, voici les valeurs que je souhaitais afficher gauche de mon diagramme de Gantt : un statut de chacune de mes tches (seulement le niveau le plus fin) et lidentification des jalons.

En franais, voici ce que je voulais que ma formule calcule automatiquement :

Si lavancement dune tche est de 100%, alors le statut devait tre Achev.

Sinon : lavancement de la tche est < 100%. Dans ce cas :

si la date prvisionnelle de fin est passe (infrieure ou gale la date daujourdhui), alors le statut devait tre En retard

sinon, la date prvisionnelle de fin nest pas encore passe (strictement suprieure la date daujourdhui). Dans ce cas :

Si la date prvisionnelle de dbut nest pas encore passe (suprieure ou gale aujourdhui) :

si lavancement est > 0%, alors le statut devait tre En avance

sinon, lavancement est = 0%. Dans ce cas :

soit la date prvisionnelle de dbut est dans 7 jours ou moins (infrieure ou gale la date daujourdhui +7) alors le statut devait tre Dmarrage imminent

soit la date prvisionnel de dbut est dans plus de 7 jours (strictement suprieure la date daujourdhui + 7) alors le statut devait tre Dmarrage > 7 jours

Sinon, la date prvisionnelle de dbut est passe (strictement infrieure aujourdhui). Dans ce cas :

sila dure = 0%, alors le statut devait tre Jalon

sinon, la dure 0% (il sagit donc dune tche et non dun jalon). Dans ce cas :

si lavancement temporel est infrieur lavancement du travail alors le statut devait tre En cours

sinon, lavancement temporel est suprieur lavancement du travail alors le statut devait tre Risque de retard.

Ladite formule dans MS ProjectLa calcul de lavancement temporel se calcule de la manire suivant :

Avancement Temporel = (date daujourdhui date prvisionnelle de dbut) / (date prvisionnelle de fin date prvisionnelle de dbut).

En traduisant le prcdent paragraphe en langage MS Project et en incorporant la formule ci-dessus, on obtient le texte suivant copier-coller dans MS Project :

Switch((([% Travail achev]=100) And ([Dure]>0));Achev;([Dure]=0);Jalon;(([% Travail achev]=([Dbut]-7));Dmarrage imminent;(([% Travail achev](Date())) And ([Dbut]>(Date())) And ([% Travail achev]=0)) And ((Date()) 7 jours)Remarque :attention bien vrifier que vos-enttes de colonnes soient bien retranscrits dans la formule, sinon vous obtiendrez invariablement le rsultat #ERROR dans chacune de vos lignes !Par ailleurs, WordPress me remplace mes guillemets droits par des guillemets la franaise Du coup jai remplac mes guillemets droits par des guillemets langlaise, mais ceux-ci ne sont pas lisibles non plus par MS Project. Il faut faire un Ctrl+H et remplacer tous les guillemets langlaise par des guillemets droits (ceux situs en dessous du chiffre 3 sur le clavier.Si certains dentre vous lecteurs possdez des formules magiques du genre, et que vous souhaitez les partagez : nhsitez pas utiliser le champs commentaire en bas de larticle !;-)Rfrences et pour aller plus loinhttp://msdn.microsoft.com/fr-fr/library/ee767700.aspxhttp://office.microsoft.com/fr-fr/project-help/explorer-les-avantages-lies-aux-champs-personnalises-dans-votre-projet-HA001020286.aspx2 rflexions sur Comment crire les formules dans les champs personnaliss de MS Project?

1. Merci pour la formule. Pour ceux qui ont comme moi MSP en version US, en voici la traduction:Switch((([% Work Complete]=100) And ([Duration]>0)),Finished,([Duration]=0),Milestone,(([% Work Complete]=([Start] -7)),Starts soon,(([% Work Complete](Date())) And ([Start]>(Date())) And ([% Work Complete]=0)) And ((Date())Project Customization and ProgrammingQuestion

0

Sign in to voteI would be most grateful if someone could provide a complete solution that would allow me to create a task field that would indicate if all predecessor tasks are complete or not. This would allow me to do some desperately needed filtering. MS-Project 2010.

Thanks in advance,

J

Wednesday, October 10, 2012 2:59 AM

Reply|QuoteJayDove780PointsAnswers

0

Sign in to voteHello J,

The code below will set flag7 to true if there are no incomplete predecessors, and flase if any incomplete predecessors are found:

Sub GetPredStatus()Dim pj As Project

Dim t As task 'subject taskDim p As task 'Predecessor taskSet pj = activeProjectFor Each t In activeProject.Tasks

If t Is Nothing Then GoTo NextTask

For Each p In t.PredecessorTasks

If p.percentComplete < 100 Then t.Flag7 = False GoTo NextTask

End If Next p

t.Flag7 = TrueNextTask:Next t

End Sub Edited byAndrew SimpsonWednesday, October 10, 2012 8:55 AM Proposed as answer byAndrew SimpsonThursday, October 11, 2012 3:16 PM Marked as answer byJayDove78Saturday, October 20, 2012 5:45 PMWednesday, October 10, 2012 8:35 AM

Reply|QuoteAndrew SimpsonEversight Ltd

(Partner)

1,445PointsAll replies

0

Sign in to voteHello J,

The code below will set flag7 to true if there are no incomplete predecessors, and flase if any incomplete predecessors are found:

Sub GetPredStatus()Dim pj As Project

Dim t As task 'subject taskDim p As task 'Predecessor taskSet pj = activeProjectFor Each t In activeProject.Tasks

If t Is Nothing Then GoTo NextTask

For Each p In t.PredecessorTasks

If p.percentComplete < 100 Then t.Flag7 = False GoTo NextTask

End If Next p

t.Flag7 = TrueNextTask:Next t

End Sub Edited byAndrew SimpsonWednesday, October 10, 2012 8:55 AM Proposed as answer byAndrew SimpsonThursday, October 11, 2012 3:16 PM Marked as answer byJayDove78Saturday, October 20, 2012 5:45 PMWednesday, October 10, 2012 8:35 AM

Reply|QuoteAndrew SimpsonEversight Ltd

(Partner)

1,445Points

0

Sign in to voteThis is terrific. Thanks so much. A few follow-up questions...

Will this macro go through all tasks in the project and set an indicator for each task (to indicate if all predecessor tasks related to the task are complete or not)?

Will the indicator be based on all predecessor tasks regardless where the predecessor task resides in the project plan?

Thursday, October 11, 2012 12:32 AM

Reply|QuoteJayDove780Points

0

Sign in to voteAndrew,

Using "GoTo" is a little archaic. Instead you could simply say "Exit For" to jump out of the inner loop once you found a predecessor that is not complete.

To avoid blank rows, (although I don't think you can even have a blank task row in Project 2010), the shorter version is:

"If Not t is Nothing Then"

John

Thursday, October 11, 2012 2:06 AM

Reply|QuoteJohn - Project14,805Points

0

Sign in to voteThanks John,

"Exit For" isn't something I've used before, but I can see the logic in it, thanks for the tip.

Wouldn't work in this case though as I needed to exit the for/next loopandskip thet.flag7 = truestatement immediately after the loop.

Good tip on the if statement too, thanks again.

Thursday, October 11, 2012 8:38 AM

Reply|QuoteAndrew SimpsonEversight Ltd

(Partner)

1,445Points

0

Sign in to voteHi Jay

>>Will this macro go through all tasks in the project and set an indicator for each task (to indicate if all predecessor tasks related to the task are complete or not)?

Yes>>Will the indicator be based on all predecessor tasks regardless where the predecessor task resides in the project plan?

YesThanks,

Andrew

Thursday, October 11, 2012 8:39 AM

Reply|QuoteAndrew SimpsonEversight Ltd

(Partner)

1,445Points

0

Sign in to voteAndrew,

You're welcome. With regard to setting the flag to true, I normally set a variable, in this case Flag7 to my desired state before I enter a loop. Then if the loop criteria is met, the flag is set to false. So yes, you can use the Exit For.

On the other hand you could also restructure the code based on the fact that by default, all extra flag fields are false. Then you would reverse the logic and set the flag true if all predecessors are 100%.

Just another thought.

John

Friday, October 12, 2012 2:54 AM

Reply|QuoteJohn - Project14,805Points

0

Sign in to voteAndrew,

Thank you for your time. This was very helpful. I can't imagine I'm the only person that finds this useful. I wonder if a similar indicator will ever be included a future release.

Thanks again,

J

Saturday, October 20, 2012 5:47 PM

Reply|QuoteJayDove780Points

0

Sign in to voteyeah I see where you are coming from on the inner-most Goto since you want to kick out of the Precdecssor loop as soon as you find ANY predecessor that is not complete.

As for the first one it is just a matter of preference.

I tend to go for this basic loop structure for all task and resource collection loops:

For each T in Activeproject.Tasks

If NOT (T is Nothing) then

End if

Next T

Brian Kennemer - Project MVPDeltaBahnSenior Architectendlessly obsessing about Project Serverso that you dont have to.Blog|Twitter|LinkedIn