jeudi 16 décembre 2010

Tech Day's 2011

Venez me retrouver au 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 :

image

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”

image

Sélectionnez un champ de type “texte” pour les tâches, exemple “Text1” et renommez le en “Release”.

image

En suite cliquez sur “Lookup…” et dans la liste saisissez les numéros de “Release”.

image

.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…

image

Créer une table

Allez dans l’onglet “Views” et cliquez sur “Tables”, puis “More tables”.

image

Cliquez sur “New” et nommée la table “Table Release”, puis faire apparaitre les informations que vous souhaitez.

image

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.

image

Nommez ce filtre “Filter Release”

image

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”.

image

Nommez la “Group Release”, dans “Group By” et “Field Name” sélectionnez “Release”. Cliquez sur “Save”.

image

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…”.

image

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”

image

Appliquer la vue

Maintenant entrez des tâches et affectez les à des “Release”.

image

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”.

image

Cette vue permet de connaitre l’état d’avancement des “Release”.

vendredi 10 décembre 2010

Utiliser Scrum dans MS Project 2010

Lors de mes recherches sur internet je suis tombé sur un add-in pour MS Project 2010 permettant d'utiliser SCRUM pour planifier et piloter un projet.



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

La publication fonctionne !! seulement si on est pas en "Mode d'entrée unique".

dimanche 14 novembre 2010

Mon projet !!

Mettre à jour les feuilles de temps (TimeSheet) de Project Server depuis Excel 2010.



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 :

image

vendredi 12 novembre 2010

Les teched sont passés les vidéos arrivent :)

Une petite présentation par : Jan Kalis, Christophe Fiessinger

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.











Get Microsoft Silverlight



Et en voici d'autres !!!










Get Microsoft Silverlight












Get Microsoft Silverlight













Get Microsoft Silverlight

mercredi 3 novembre 2010

Réunion du groupe utilisateurs Project (MPUG)

Présentation de l'événement
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”.

ParametreValeur

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.

Synchro

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.

Taches

Bonne saisie des temps Sourire

mercredi 6 octobre 2010

IE9 Beta et Project Server 2010 pas bon ménage

Après quelques tests j'ai pu remarquer une incompabilité entre IE9 Beta et Project Server 2010.

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

Suite à mon poste de ce matin voici un premier scénario sur l'utilisation simple du connecteur.





Comme le montre ce schéma, les données partant de TFS vers Project Server passe obligatoirement par la base Draft de Project Server. Je rappel que Project Server contient 3 bases de données.
  • 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

Toujours dans mon analyse du connecteur de Team Foundation Server 2010 et de Project Server 2010, je vous livre mon impréssion et les premières explications techniques.

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 :

4 dll font leur apparition, je ne vais pas encore rentrer dans les détails aujourd'hui car j'ai tout simplement pas encore fait le tour de ces DLL, mais cela laisse à penser que nous allons pouvoir développer des applications UI où d'autre connecteur assez simplement.

Petite remarque : La mise en place du connecteur nécessite une petite personnalisation des workitem mais moins importante que dans la version CodePlex de l'ancien connecteur.

La suite au prochain épisode :)

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

Je suis en train d'étudier des possibilités d'avoir une version locale des modifications effectuées lors du développement d'une application et une version équipe de l'ensemble des modifications.  

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


Un concour sur le dévelopement d'application est mis en place, merci de bien vouloir venir voter pour mon application :

Merci !!!

vendredi 20 août 2010

Quoi de neuf dans mon monde !!

Etant tout de même développeur à la base, je m'intéresse beaucoup au développement pour Windows Phone. Une personne (Christophe) m'a soumise l'idée de développer un soft pour la gestion des tâches de Project Server 2010 depuis un Windows Phone.

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.

image

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”

image

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.

image

  • L’espace “Propriété” ceci vous permettra entre autre de donner des identifiants aux composants graphique telle que les boutons par exemple:

image

  • L’espace code ou graphique, il vous permettra soit de créer votre formulaire graphique, soit de taper votre code VBA :

image

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

image

Créez le formulaire comme suite :

image

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

Personne n'est sans savoir que la version MS Project Pro 2010 offre enfin le ruban à ses utilisateurs. Cette amélioration esthéque mais aussi très fonctionnelle permet un gain de rapidité d'utilisation après biensur une certaine habitude :)

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

A voir et à revoir

mardi 25 mai 2010

Importer des tâches Excel dans MS Project Pro

Création d'un regroupement dans MS Project

Que ce soit en 2010 ou 2007 cela reste la même fonctionnalité.

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

Ayant installé un Project Server 2010, j'ai commencé à regarder les fonctionnalités. C'est un très très bon produit, plus facile encore d'utilisation que la version 2007.

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é.



Le tout est bien sur activable ou non dans les fonctionnalités du serveur :






Téléchargable ici : http://code.msdn.microsoft.com/UIPS2010