Rien n'est permanent sauf le changement, la gestion de projet c'est savoir anticiper !!
jeudi 16 décembre 2010
Tech Day's 2011
Le connecteur entre TFS 2010 et Project Server 2007/2010
Au programme,
* la gestion des sprints
* La gestion de la saisie des temps
* L'intégration et l'échange des informations
* ...
Au plaisir de vous y voir.
dimanche 12 décembre 2010
Créer une vue dans MS Project 2010
MS Project permet, entre autre, d’afficher les informations, les tâches. il existe plusieurs vues par défaut dans MS Project 2010 :
Nous allons créer une vue pour afficher toutes les tâches appartenant à une release.
Création d’un champ pour les tâches de type “Texte” qui contiendra l’ensemble des numéros de “Release”.
Création d’un champ
Allez dans l’onglet “Format” puis cliquez sur “Custom Fields”
Sélectionnez un champ de type “texte” pour les tâches, exemple “Text1” et renommez le en “Release”.
En suite cliquez sur “Lookup…” et dans la liste saisissez les numéros de “Release”.
.Une fois fait, fermez toutes les pop-up.
Qu’est qu'une table ?
Une table est la représentation des informations:
- Colonnes
- Largeur
- Titre
- Etc…
Créer une table
Allez dans l’onglet “Views” et cliquez sur “Tables”, puis “More tables”.
Cliquez sur “New” et nommée la table “Table Release”, puis faire apparaitre les informations que vous souhaitez.
Création d’un filtre.
Un filtre permet d’afficher ou non certaine donnée. dans notre cas nous allons afficher que les tâches qui seront reliées à un “Release”.
Allez dans “View” puis ouvrez la liste des filtres cliquez sur “More filtre”. Cliquez sur “New” dans la pop-up.
Nommez ce filtre “Filter Release”
Dans la colonne “Field Name” récupérez le champ “Release” que nous avons créé avant, dans “Test” selectionnez “does not equal” et laissez vide la dernière colone.
Ce filtre permet d’afficher toutes les tâches qui aurons une valeur dans “Release”.
Création d’un regroupement
Regrouper les tâches permet de mettre en évidence des informations, dans notre exemple nous allons regrouper les tâches par Release.
Allez dans “View” et ouvrez la liste des groupes puis cliquez sur “More groups”. Dans la pop-up cliquez sur “New”.
Nommez la “Group Release”, dans “Group By” et “Field Name” sélectionnez “Release”. Cliquez sur “Save”.
Création de la vue
Cette partie va permet de créer une vue, cette vue va être un rassemblement des informations créées précédemment.
Allez dans “View” et ouvrez la liste “Other views” et cliquez sur “More views…”.
Cliquez sur “New” et sélectionnez “Single view” puis “Ok”. Nommez la vue “Release View” dans la zone
- “Table” sélectionnez “Table Release” précédemment créée.
- “Group” sélectionnez “Group Release” précédemment créée
- “Filter” sélectionnez “Filter Release” précédemment créée
Et cliquez sur “OK”
Appliquer la vue
Maintenant entrez des tâches et affectez les à des “Release”.
Dans l’onglet “Task” sélectionnez la vue “Release view”, comme vous pouvez le remarquez la tâches “Tache 6” n’apparait pas dans la vue car elle n’est pas rattachée à une “Release”.
Cette vue permet de connaitre l’état d’avancement des “Release”.
vendredi 10 décembre 2010
Utiliser Scrum dans MS Project 2010
Lien de l'add-in : http://code.msdn.microsoft.com/P2010Scrum
Je vais ajouter quelques améliorations...
mercredi 24 novembre 2010
Add-in Excel pour les Time Sheet de Project Server 2010
dimanche 14 novembre 2010
Mon projet !!
Il reste encore du boulot mais ca marche ;)
PSI : Récupérer la liste des feuilles temps de Project Server 2010
Dans cette article je vais m’efforcer de vous présenter les possibilités de connexion à Project Server 2010 avec les web service (.asmx) afin de récupérer les feuilles de temps.
Dans un premier temps il faut ce connecter à Project Server, pour ce faire j’utilise la DLL “ProjectServerServices.dll” vous trouverez à cette adresse la méthode de génération (http://msdn.microsoft.com/en-us/library/aa568853.aspx)
Une fois cette DLL générée il est possible de ce connecter à n’importe quel instance de PWA car pour la connexion nous personnaliserons l’adresse des Web Service.
SvcTimeSheet _TimeSheetClient = new SvcTimeSheet.TimeSheetClient(GetBinding(),new EndpointAddress(“http://project.contoso.com/pwa”));
_TimeSheetClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
_TimeSheetClient.ChannelFactory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(“adamb”, “pass@word1”, “Contoso”);
La méthode GetBinding() me permet de générer le protocole de communication :
private static BasicHttpBinding GetBinding()
{
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.MaxBufferPoolSize = 50000000;
basicHttpBinding.MaxBufferSize = 50000000;
basicHttpBinding.MaxReceivedMessageSize = 50000000;
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
return basicHttpBinding;
}
Ensuite vous pouvez utiliser la méthode “ReadTimesheetList” de l’objet _TimeSheetClient pour récupérer une liste de feuille de temps pour une ressource donnée et dans un temps donnée.
TimesheetListDataSet ds = _TimeSheetClient.ReadTimesheetList(ressource.Guid, this.Start, DateTime.Now, 31);
L’élément 31 permet de récupérer toutes les feuilles de temps, vous avez d’autre options:
- 1 : Permet de sélectionner les feuilles de temps avec le statut “En progression”.
- 2. Permet de sélectionner les feuilles de temps avec le statut “Envoyé”.
- 4 : Permet de sélectionner les feuilles de temps avec le statut “Accepté”
- 8. Permet de sélectionner les feuilles de temps avec le statut “Approuvé”
- 16. Permet de sélectionner les feuilles de temps avec le statut “Rejeté”
- 32 : Sélectionner l'ensemble des feuilles de temps, plus un dossier vide pour chaque période sans feuille de temps.
- 64. Permet de sélectionner les feuilles de temps créé par l’utilisateur connecté
Ensuite pour chaque ligne dans la feuille de temps il est possible de récupérer les informations:
TimesheetDataSet tds = _TimeSheetClient.ReadTimesheet(TimeSheet.Guid));
foreach (var item in tds.Lines)
{
line.Guid = item.TS_LINE_UID.ToString();
line.Name = item[8].ToString(); // Nom de la tâche
line.Project = item[9].ToString(); // Nom du projet au quel est rattaché la tâches
}
Voici les autres informations possible pour une ligne :
- TS_LINE_UID
- TS_UID
- ASSN_UID
- TASK_UID
- PROJ_UID
- TS_LINE_CLASS_UID
- TS_LINE_COMMENT
- TS_LINE_VALIDATION_TYPE
- TS_LINE_CACHED_ASSIGN_NAME
- TS_LINE_CACHED_PROJ_NAME
- TS_LINE_CACHED_PROJ_REVISION_COUNTER
- TS_LINE_CACHED_PROJ_REVISION_RANK
- TS_LINE_IS_CACHED
- TS_LINE_ACT_SUM_VALUE
- TS_LINE_STATUS
- TS_LINE_TASK_HIERARCHY
- TS_LINE_CLASS_NAME
- TS_LINE_CLASS_NEED_APPROVAL
- TS_LINE_CLASS_TYPE
Je suis sur un projet dont voici une première capture :
vendredi 12 novembre 2010
Les teched sont passés les vidéos arrivent :)
Cette session donne un aperçu des domaines d'investissement et les capacités clés de Project Server 2010 et Project Professional 2010, y compris la gestion de la demande, l'analyse de portefeuilles,la gestion de projet de base, le suivi du temps et de business intelligence.
Et en voici d'autres !!!
mercredi 3 novembre 2010
Réunion du groupe utilisateurs Project (MPUG)
Réunion du groupe utilisateurs Project (MPUG)
Vendredi 3 décembre 2010
De 9h à 12h – Microsoft – Issy les Moulineaux
Venez assister à la prochaine réunion du club utilisateurs Microsoft Project.
L’agenda proposé est le suivant :
Client Project Professionnel 2010 : les retours des clients, par Vincent Capitaine (MVP)
Depuis quelques mois déjà, un certain nombre de clients utilise les nouvelles fonctionnalités de Project Professionnel (planification manuelle vs automatique, gestionnaire de ressources, tâches inactives…). A l’usage, quels sont les retours ? Quelles sont les bonnes pratiques.
Intégration Project Server 2010 / Team Foundation Server 2010, par Noham Choulant (Evaluant)
Dans le cadre des projets de développements informatiques, cette intégration va proposer de réconcilier les contraintes de gestion des plannings des chefs de projets d’un côté, et celles des équipes de développement de l’autre. L’objectif étant de pouvoir faire remonter les infos dans les deux sens, en permettant à chacun de continuer à utiliser ses propres outils.
Venez découvrir les différents scénaris proposés.
Pause
Client riche versus client léger – quel outil pour quel besoin, par Véronique Aleksenko (Teamsquare)
Retour d’expérience de Bolloré ayant mis en œuvre Project Server 2010 et utilisant uniquement le client léger afin de planifier et d’affecter des ressources.
Quelles limites ? Quels cas d’usage ?
Cette réunion est ouverte à tous
lien : https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032468832&Culture=fr-FR
mercredi 20 octobre 2010
La gestion de la synchronisation des tâches et des feuilles de temps
Cette nouvelle fonctionnalité qui arrive avec Project Server 2010 est la possibilité de synchroniser les tâches avec les feuilles de temps. Cela est très pratique et évite toute manipulation pouvant entrainer des pertes d’informations.
Dans l’administration de Project Server 2010 allez dans “Gestion du temps et des tâches “ puis cliquez sur “Paramètres et valeurs par défaut de la feuille de temps”.
Cochez la case “Mode d’entrée unique” située en bas de la page. Cette option permet soit de saisir dans les tâches et donc également dans MS Project Pro, ou dans les feuilles de temps.
Le deuxième effet “kiss cool” sera lors de l’utilisation du connecteur TFS <-> Project Server, les utilisateurs pourront saisir dans leur feuille de temps et avoir le temps d’avancement automatique dans TFS.
Attention : Seules les tâches de type “Planification Automatique” peuvent être saisies de façon chronologie. Les tâches de type “Planification Manuelle” peuvent être saisies uniquement par % d’avancement.
Bonne saisie des temps
mercredi 6 octobre 2010
IE9 Beta et Project Server 2010 pas bon ménage
Cela concerne la mise à jours des "Pages de détail de projet", lorsque l'on souhaite ajouter des champs dans les webpart, ceux-ci ne sont pas prise en compte. Sous IE8 aucun problème.
Si vous aussi vous rencontrez des soucis veuillez les inscrir en commentaire :)
jeudi 30 septembre 2010
[Suite] Scénario simple d'utilisation du connecteur
- Une draft pour permettre de travaillé sur un planning sans bloqué le projet
- Une Publish qui permet de visualiser le projet
- Une Archive contenant les projets archivés
[Suite] Le connecteur de TFS et Project Server 2010
La principe est simple, toutes données modifiées dans TFS sont répercutées dans Project Server 2010 et inverssement, cela dans une fréquence de rafraichissement de 30 secondes.
Ce qu'il faut savoir :
- Une instance de PWA peut être liée à une collection de projets dans TFS (TCP)
- Une instance de PWA peut être liée à un ensemble de TCP
- Un TCP ne peux être lié à plusieurs instances de PWA
Le paramétrage ce fait en ligne de commande avec l'outil "TfsAdmin.exe".
Exemple pour récupérer la liste des collections de projets qui sont mappées sur TFS :
TfsAdmin ProjectServer GetMappedCollections /instance:http://localhost:8080/tfs
Je vous livre une vue réduite du scénario technique de création d'une liaison entre Project Server 2010 et TFS 2010 :
samedi 25 septembre 2010
Backup /restore Projet Server 2010
Une fois n'est pas coutume, je vous relaie une information. Il est important de pouvoir sauvegarder et restaurer ses données qui se trouve sur Project Server 2010.
Le 16 septembre Microsoft a sortir "Project Server 2010 Server Settings Backup/Restore tool".
Plus d'information voir ici :
http://technet.microsoft.com/en-us/library/gg128952.aspx
vendredi 17 septembre 2010
Le connecteur TFS -> Project Server 2010
Le connecteur de TFS 2010 et Project Server 2010 est sortie en CTP depuis plus d'un mois. J'ai pu prendre le temps de le tester sur les scénarios mis à notre disposition par Microsoft.
Mardi dernier j'étais au MTC Paris pour valider l'utilisation de ces scénarios, je direct qu'a 80% ces scénarios fonctionne, quel que zones d'ombre reste encore à explorer.
Le système de "QUEUE" de Project Server peut dans certain cas empêcher momentanément la synchronisation.
Le système de paramétrage reste encore inconnu, doit-il se faire coté TFS ou Project Server ou les deux ? Repose-t-il sur le fichier de mapping de TFS ou doit-on en paramétrer un supplémenaire ?
Que de questions, mais n'oublions pas que c'est une CTP et qu'il reste encore du travail à l'équipe de MS avant la version final.
Mes tests de cette semaine sont très concluant, connecteur rapide, fluide.
Je travaille actuellement a des scénarios plus complet que ceux fournit par MS, notamment deux scénarios :
Un pour les personnes venant de TFS
Un pour les personnes venant de Project Server.
D'ici quelques semaines je ferai une présentation au MTC, cela sera l'occasion de valider l'utilisation avec des clients ayant un réel besoin de cet outil.
Je continu mes tests et vous tiens au courant.
jeudi 9 septembre 2010
TFS et ma gestion local
Quel serait l'intérêt ?
Bien que TFS permet de réserver des modifications sur le serveur, il ne permet pas d'avoir un historique en local et encore moins d'échanger entre développeur un ensemble de modifications sans venir polluer le TFS de l'équipe.
Pour représenter mon idée voici un schéma explicatif simple :
Des solutions existe et je vous en présenterais une dans un prochain poste.
La question est : Et vous trouvez vous cela pertinant ?
Pour moi c'est un grand OUI !!!
mardi 7 septembre 2010
Agile ou es tu ? que fais tu ?
Je viens de lire l'article du dernier programmez nommé "Agile et productif !". Et là en fin d'article je me dis ouhaa !!!, c'est exactement ce que je fais au quotidien sur les projets que je gère.
Je suis totalement en accord avec les auteurs "Jean-Baptiste Cazeaux" et "Laurent Carbonneaux", sur la vision des méthodes agiles.
Effectivement coller à une méthodologie de A à Z ne permet pas de correspondre à une entreprise de A à Z.
C'est l’éternelle question entre productivité et habitude.
Mais, je ne suis pas en accord entre le titre et le contenu de l'article. Trop souvent "Méthode Agile" égale Scrum, hors Scrum n'est qu'une des nombreuses méthode Agile.
Les méthodes Agile repose sur le manifeste Agile :
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Donc toutes méthodes mettant en place ces quatre éléments est une méthode agile.
- Rapid Application Development (RAD)
- Dynamic systems development method (DSDM)
- Scrum (1996)
- Feature Driven Development(FDD)
- Extreme programming
- Adaptive software development
- Crystal clear
- MSF Agile
Personnellement je n'ai pas de nom à mettre sur la méthode de projet que j'utilise, je respecte les 4 éléments fondamental de l'agile et j'ajoute aussi :
- L’écoute
- La communication
- La satisfaction
Ma méthode repose sur un peu toutes les méthodes, et c'est cela qui en fait une "Méthode H"
mardi 24 août 2010
Jeu concour
vendredi 20 août 2010
Quoi de neuf dans mon monde !!
Idée qui m'a tout de suite intéressé. Voici la première capture écran de cette future application.
Il reste encore beaucoup de travail, le fond sera plustôt dans les vert pour rappeler les couleur de project server 2010.
Déposez vos idées !!!
samedi 7 août 2010
Project Server 2010 et Team Foundation Server 2010

Pendant les TechDay's 2010 j'ai animé une sessions avec Sylvain Gross. Cette session portait sur l'utilisation conjointe de Project Server 2010 et TFS 2010.
Depuis le début Juillet Microsoft a mis disponible une VM contenant l'outils de synchronisation. Disponible à cette adresse :
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=f221c660-161b-43ca-95f3-e0e4aad8d43e
A première vue, et après mes premiers tests, l'utilisation de ce système est proche de ce que nous avons expliqué lors des Techday's.
Il est naturel de planifier et de gérer les exigences dans un GANTT avec Project Server (MS Project) et de gérer les tâches de développement dans TFS.

Ce qui n'était pas vraiment possible avec les anciennes précédentes. Effectivement ce qui est un plus dans la version 2010 c'est que TFS se comporte de la même façon que MS Project dans la remonté des temps dans les tâches récapitulatives. Grâce a ce mécanisme la séparation devient possible. Reste à savoir comment gérer les feuilles de temps dans Project Server 2010.
Les informations de synchronisation peuvent (et doivent) figurer dans les Workitems de type "Requierment" tel qu'indiqué sur l'image suivante :
Ce n'est que le début mais cette relation entre Project Server 2010 et Team Foundation Server 2010 semble prometteur.
mercredi 28 juillet 2010
Outils ou pratiques ?
Voilà plusieurs jours que je réfléchi à mon nouveau sujet de blogue. Je travaille actuellement sur un bon projet (~3000J/h), je suis le chef de projet et mon équipe est composée de 9 personnes.
J'ai bien réfléchis à savoir ce que j'allais mettre en place pour gérer ce projet, coté code source pas de question nous utilisons Team Foundation Server 2008, coté gestion du temps nous utilisons Project Server 2010.
La question profonde est "Outils ou pratique ?", quel est la première brique à poser pour la réussite d'un projet ?
Les outils permettent bien entendu de cadrer des bonnes pratiques, de structurer des données etc... je suis relativement bien placé pour le dire car une partie de mon activité professionnelles est de mettre en place ces outils (TFS et Project Server) dans les services informatique.
Il m'arrive assez souvent de devoir auditer mon client sur ses pratiques de gestion de projet. Cet audit permet de mettre en avant les problèmes que rencontre mon client dans sa manière de piloter l'ensemble de ses projets, aussi bien sur l'avancement que sur la consommation de temps.
Alors est-ce que les outils vont l'aider à mieux développer, a gagner en productivité ? je dirais que non, qu'elle est l'élément clé d'un projet ?
- Des bons développeurs ?
- Des bons analystes ?
- Une supère architecture ?
- Des outils permettant d'orchestrer l'ensemble ?
- Un chef de projet ?
Dans un orchestre quel est l'élément qui permet de réussir un concert, de rendre le tout harmonieux ? Je pense qu'il est évident que dans ce contexte, que l'élément clé soit le chef d'orchestre !
Effectivement un orchestre sans musicien ne donnera aucun son, des musiciens sans instrument de musique ne pourraient non plus fournir de la musique.
Chaque élément est bien entendu important, cela est également valable dans un projet informatique, mais le point central permettant de rendre possible le projet, de coordonner l'équipe ; est le chef de projet.
Donc "Outils ou pratiques ?", j'ai rencontré des chefs de projet qui pour eux la réussite d'un projet passe par une équipe compétente, d'autre par des outils performants.
Je pense qu'avant tout il faut connaitre l'objectif du projet, dans la majorité des cas l'objectif est la satisfaction du client final, de l'utilisateur. Aucun outil ne permet de gérer cet objectif. La gestion des exigences est une première étape mais ne suffit pas, des indicateurs ? Pour faire quoi si nous ne savons pas ce que nous souhaitons piloter.
La réussite d'un projet passe par une préparation, un accompagnement permettant de guider le chef de projet, de vérifier la tenue des bonnes pratiques et seulement après adapter les outils.
Ces trois éléments :
- Préparation
- Accompagnement
- Bonnes pratiques
Sont les clés permettant de commencer un projet sur de bonnes bases. Après nous pouvons commencer à penser aux indicateurs, aux fameux KPI tellement à la mode !!!
Ensuite bien entendu, la réussite d'un projet passe avant tout par une communication entre les membres de l'équipe et avec le client. Cette réussite passe également par une équipe motivée et compétente. Garantir la stabilité du projet passe par l'utilisation de produits adaptés aux besoins du projet.
Donc ma réponse est "Pratiques".
mardi 8 juin 2010
Faire du VBA dans MS Project Pro 2010
Comme informé dans mon poste précédent (ici) je vais vous expliquer la macro VBA me permettant de calculer le temps réellement consommé pour une tâches ou l'ensemble des tâches sur un période données.
Bien qu’aujourd’hui des langages de programme bien plus puissant existent (VB.Net, C# …), le VBA garde un esprit d’utilisateur plus fonctionnel, et reste pratique vue qu’il ne nécessite aucun autre logiciel, ni de grande connaissance en programmation.
Donc pour tout ceux qui vont lire ces lignes et qui partent avec un apriori sur le VBA, garder à l’esprit que ce langage offre de la simplicité à des non développeur.
Qu'est ce que le VBA ?
Petit rappel pour les personnes ayant pas ou peu de connaissance sur VBA. Visual Basic for Applications est née dans les années 90 avec l’arrivée des langages de programmation VB. VBA est un langage simple, mais riche et relativement flexible dans son implémentation. Sa ressemblance avec VB est plus visuel que réel. Effectivement VBA à par exemple une gestion des erreurs par handler et VB par exception.
Exemple VBA
' Gestion des erreurs sur la nom sélection d'une tâche
On Error GoTo Err_Tache
Le VBA se repose sur une application hôte par exemple (Excel, Word…) dans notre cas et dans celui de l’article nous verrons VBA pour MS Project Pro 2010.
Le modèle Objet, donc les éléments qui est possible d’utiliser, est propre à l’application hôte par exemple dans Excel nous pourrions utiliser les objets de type “Workbook” qui est un classeur Excel ou encore “Sheet” qui est une feuille Excel, si nous souhaitons récupérer une valeur de cellule d’une feuille nous pourrions écrire cela :
Exemple VBA
Workbooks("GestionIncident").Sheets("ProjetA").Range("B2")
Pour MS Project 2010 il y a aussi des objets propres à l’application, par exemple pour récupérer la tâche actuellement sélectionnée nous pouvons utiliser la ligne suivante:
Exemple VBA
ActiveSelection.Tasks.Application.ActiveCell.Task
Comment avoir accès au VBA dans MS Project 2010 ?
Ouvrez MS Project 2010 puis allez dans “Fichier” –> “Options” –> “Personnaliser le Ruban”, dans la colonne de droite cochez “Développeur”
Dans cette fenêtre il est possible de rendre visible ou nom des onglets.
Une fois l’onglet “Développeur” affiché, vous pouvez soit créer une macro, soit faire directement du VBA. Nous allons créer une macro directement dans Visual Basic, Cliquez sur “Visual Basic”
Présentation de l’interface graphique
Dans la fenêtre de Visual Basic pour applications vous avez trois emplacements:
- Ensemble du projet, cette espace vous permet de naviguer entre les pages de MS Project, les Feuilles ou Formulaires et les Modules.
- L’espace “Propriété” ceci vous permettra entre autre de donner des identifiants aux composants graphique telle que les boutons par exemple:
- L’espace code ou graphique, il vous permettra soit de créer votre formulaire graphique, soit de taper votre code VBA :
Création de notre macro
Nous allons commencer par créer une variable pour stocker le choix de la période de calcule. Pour ce faire, faire un clique droit sur le répertoire “Module” puis “Insertion” puis “Module”. Renommez la en “Variables”.
Dans ce modules ajouter une variable “public” nommée “ChoixCalcul” de type “String”. “Public” signifie que cette variable pourra être accessible depuis n’importe où. Une variable est un élément dans le quel nous pouvons stocker de l’information. Enfin le type “String” signifie que les éléments qui seront dans cette variable seront un ensemble de caractères.
Maintenant nous allons créer une fenêtre pour demander la période sur la quelle le calcul va se faire.
Faire un clique droit sur le répertoire “Feuille” puis “Insertion” puis “UserForm”
Créez le formulaire comme suite :
Pour chaque radio bouton mettez “Option” dans la propriété “GroupeName”, ceci aura pour effet de désélectionner le radio bouton au clique sur un autre.
Double cliquez sur le bouton “Valider” afin d’arrivé sur le code qui sera utilisé lors du clique sur celui-ci. Dans la partie code nous allons tester quelle option est sélectionnée et nous donnerons la valeur à notre variable précédemment créés.
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Variable.ChoixCalcul = "jour"
ElseIf OptionButton4.Value = True Then
Variable.ChoixCalcul = "mois"
ElseIf OptionButton3.Value = True Then
Variable.ChoixCalcul = "semaine"
ElseIf OptionButton5.Value = True Then
Variable.ChoixCalcul = "moisAvant"
Else
Variable.ChoixCalcul = "Neant"
End If
Unload CalculOption
End Sub
Double cliquez sur le bouton “Fermer” afin de fermer notre formulaire et insérer le code suivant.
Private Sub CommandButton2_Click()
Unload CalculOption
End Sub
Maintenant nous allons créer le code principale qui permet le calcule.
Création du code principale
Pour ce faire faire un clique droit sur le répertoire “Module” puis “Insertion” puis “Module”. Renommez la en “CalculHours”.
Créer une méthode “CalculCumulTravailReel” de la façon suivante :
Public Sub CalculCumulTravailReel()
End Sub
A l’intérieur de cette méthode nous allons créer les variables que nous allons utiliser dans l’ensemble de cette méthode.
' Déclaration des variables
Dim TSV As TimeScaleValue
Dim TSVs As TimeScaleValues
Dim Ass As Assignment
Dim Deb As Date, Fin As Date
Dim i As Integer
Dim SumHours As Integer
Dim choix As String
Le fait de mettre une “’” devant une ligne permet de mettre cette ligne en commentaire, ceci pour permettre de commenter notre code afin de le rendre compréhensible.
Ensuite nous allons appeler notre formulaire pour le choix de la période:
' Ouverture de la fenêtre de choix de temps
CalculOption.Show
choix = Variable.ChoixCalcul
Maintenant nous allons faire une boucle sur l’ensemble des ressources assignés à la tâche sélectionnée, avec For Each nous allons récupérer toutes les ressources une par une.
' Parcour l'ensemble des personnes assignées
For Each Ass In ActiveSelection.Tasks.Application.ActiveCell.Task.Assignments
i = i + 1
L’instruction ActiveSelection.Tasks.Application.ActiveCell.Task permet de récupérer la tache de la cellule sélectionnée.
Ensuite nous allons définir la date de début et la date de fin de la période par rapport au choix fait dans le formulaire.
' Récupére le choix de l'échelle de temps
'
' NB : Plusieurs façon existe pour ce code, celle - ci
' n'est pas la plus jolie, mais la plus simple à
' comprendre
If choix = "jour" Then
Deb = DateValue(Now)
Fin = DateValue(Now)
ElseIf choix = "semaine" Then
Deb = Date - DatePart("w", Date, vbMonday, vbFirstFourDays) + 1
Fin = Deb + 6
ElseIf choix = "mois" Then
Deb = DateSerial(Year(Date), Month(Date), 1)
Fin = DateSerial(Year(Date), Month(Date) + 1, 1) - 1
ElseIf choix = "moisAvant" Then
Deb = CDate("1/" & Format(DateAdd("m", -1, Date), "mm/yyyy"))
Fin = DateAdd("d", -1, CDate("1/" & Format(Date, "mm/yyyy")))
End If
Certain objet de MS Project VBA nous permettent de travailler avec les données, pour la récupération des heures nous utiliserons la commande suivante :
' Récupération des élements pour la période donnée
Set TSVs = ActiveSelection.Tasks.Application.ActiveCell.Task.Assignments(i).TimeScaleData(Deb, Fin, Type:=pjAssignmentTimescaledActualWork, TimeScaleUnit:=pjTimescaleDays, Count:=1)
Le type “pjAssignmentTimescaledActualWork” permet de récupérer les heures (minutes) passé par ressource.
Plus d’information ici pour plus de détails sur le type qu’il est possible de passer en paramètre.
Ensuite pour avoir la sommes il suffit d’additionner les valeurs récupérées :
' Parcour des éléments pour additionner les temps
' trouvés précédement.
' ATTENTION : Les temps récupérés sont en minutes
For Each TSV In TSVs
SumHours = SumHours + Val(TSV.Value) / 60
Next TSV
Pour finir il suffit de l’afficher dans un fenêtre de dialogue.
' Affichage des informations
MsgBox SumHours & "h réellement passée(s) sur l'ensemble la tâche '" & ActiveSelection.Tasks.Application.ActiveCell.Task.Name & "'" & Chr(13) & "Sur la durée du " & Deb & " au " & Fin, vbOKOnly + vbExclamation + R_TO_L, Title:=Application.Name
Bon développement à tous !!!
lundi 7 juin 2010
Personalisation du ruban de MS Project Pro 2010
Comment toutes autres applications Office 2010, le ruban est personnalisable dans son ensemble mais un peu plus limitée que pour Excel par exemple pour le quel nous pouvons utiliser CustomUIEditor .
Mise à part ce petit manque, MS Project Pro 2010 offre beaucoup de choses sans être développeur.
Dans cette article je vous propose de créer un nouvel onglet dans le quel nous allons rajouter
- Un bouton permettant d'exécuter une macro
- Un ensemble de bouton pour éviter la navigation multiple sur les actions courantes
Première étape ajout de l'onglet "Développeur" pour permette la création de notre macro VBA :
Fichier -> Option -> Personnaliser le Ruban
Création de la macro, cette macro permet de calculer le temps réel pour une tâche sélectionnée et pour une durée donnée (Jour en cours, Semaine en cours, Mois en cours, Mois précédent). Un prochain poste détaillera cette macro VBA.
Onglet "Développeur" -> Visual Basic

Création d'un nouveau onglet :
Fichier -> Option -> Personnalisation du Ruban -> Nouveau Onglet
Puis il faut ajouter un nouvel groupe qui permet de regrouper un ensemble de commandes :
Dans la fenêtre de personnalisation du ruban cliquer sur "Nouveau groupe".
Chaque onglet et chaque groupe peu être renommé et une icone peut être rajouté :

Ensuite vous pouvez sélectionner l'ensemble des boutons dans la liste de gauche pour les ajouter à votre nouvel onglet comme le montre l'image suivante :
Pour mieux comprendre voici une vidéo :
mardi 1 juin 2010
mardi 25 mai 2010
Création d'un regroupement dans MS Project
Les regroupements permettent l'affichage des tâches d'une autre manière que l'affichage traditionnel et surtout de regrouper par sous ensemble.
Pourquoi utiliser les "code hiérarchique" ? Dans mon quotidien je les utilises pour permettre de classer mes tâches dans des domaines fonctionnels et dans des fonctionnalités.
Mes tâches sont réparties entre divers LOT (lotissement) et itération (méthodologie Agile). Les lots et itérations ne correspondent pas forcement aux domaines et aux fonctionnalités. Pour me permettre d'avoir un état d'avancement de mon projet par fonctionnalité (c'est qui intéresse mon client) j'affiche le tout par regroupement:
Dans MS Project Pro 2010 cela fonctionne très bien, pour la version 2007 il faut le SP1 minimum.
Petit point noir, si vous modifiez le code hiérarchique "Domaine dans mon exemple" la mise à jour n'est pas instantanée, il vous faudra changer de regroupement et revenir ensuite.
jeudi 13 mai 2010
Mise à jour des indicateurs dans Project Server 2010
Alors que je mettais en place des indicateurs avec mon collègue Sylvain, on c'est dit qu'il était assez embétant de devoir republier chaque projet pour mettre à jour les indicateurs.
Et oui les indicateurs ça évolut et les projets arrive donc arrivé à 100 projets cela être très long à mettre à jour.
Alors étant également développeur je me suis dit que le rubant de Project Server 2010 était personnalisable assez facilement, en plus PSI est très bien conçu pour permettre un accès simple aux objets de Project Server 2010.
Ni une ni deux j'ai développé un petit bouton qui se place dans le rubant au niveau du centre des projets qui me permet en un clique de mettre à jour mes indicateurs.
Le tout en image :
Le nouveau bouton !!

Une fois la ligne du projet sélectionnée, cliquez sur le bouton :

Au bout d'un certain temps (suivant les performances de votre serveur, sur ma machine virtuelle cela prend environ 10 secondes) un message vous informe de la fin du traitement.

Petite information en haut à droite :)

Mise à jour de l'indicateur du projet sélectionné.
