Lors de la création de rapports dans Project Portfolio server 2007, certaines données n’apparaissent pas dans un format nombre dans Microsoft Excel et pour certains cas, les séparateurs de milliers

et séparateurs décimaux ne suivent pas les paramètres régionaux Français.

Ceci peut s’avérer gênant lorsque l’on veut procéder à des calculs au sein du tableur ou lorsque l’on veut présenter les résultats en respectant les séparateurs Français.

Voici un moyen d’y remédier :

Voici un scénario afin d’illustrer le problème et qui peut être facilement reproduit dans la Machine Virtuelle (VPC) EPM2007 Demo fournie par Microsoft :

1) Démarrer la VPC EPM2007 demo
2) Depuis une machine cliente ayant les paramètres régionaux configurés en Français, naviguer vers  http://epm2007demo:85/PortfolioServer/104/Project.aspx
3) Cliquer sur Reports
4) Clicquer sur l’icône Excel pour la rubrique “Marketing Projects Financial Update “

Résultat Obtenu :

a) Certains nombres sont affichés au format US i.e.  $1,275,480.34

b) Les cellules contenant des nombres sont au format texte (par exemple la colonne ProjectNPV dans le pas à pas fourni ci-dessus) i.e.  1 541 956

Dans ce second cas, il est impossible de faire de calculs dans Microsoft Excel sur cette cellule.

 

Résultat désiré :
a) Les nombres doivent être affichés au format FR i.e.  1 275 480,34

b) Les cellules contenant les nombres doivent être au format Nombre i.e. 1541956

 

Ces 2 résultats (a) et (b)  peuvent être facilement obtenus à l’aide de macros VBA dans Microsoft Excel.

Solution pour a) :

Copier la macro ci-dessous dans l’éditeur VBA de Microsoft Excel , sélectionner la plage de nombres à modifier et exécuter la macro suivante :

Sub convertUStoFR()
Dim c as Range
On error Resume Next
For each c in selection.Cells
c.Replace What:="$",Replacement:=""
Next c
End Sub

 

Solution pour b) :

Copier la macro ci-dessous dans l’éditeur VBA de Microsoft Excel , sélectionner la plage de nombres à modifier et exécuter la macro suivante :

Sub ConvertTextToNumber()
Dim c As Range
On Error Resume Next

For Each c In Selection.Cells
    If IsNumeric(c.Value) Then c.Value = CDbl(c.Value)
Next c
End Sub

 

Bruno Sgorlon