OVH Cloud OVH Cloud

Utilisation de la fontion Val (VBA)

11 réponses
Avatar
Francois
Bonjour,

Je pensais trouver la solution à mon problème dans le fil récent sur
CDate mais raté !

J'utilise VBA pour formater un graphique avec des flèches vers le bas
quand la valeur du point de la série est inférieure à 0 et flèche vers
le haut sinon. Pas de soucis mais ... je ne peux pas faire référence à
la valeur de la cellule source de chaque point du graphique parce que
les feuilles sources des graphiques à traiter ont une organisation que
je dirais assez aléatoire. Donc, pour chaque point, j'ajoute un label
dont je récupère le contenu et que je transforme en valeur numérique
avec la fonction Val. Puis je fais un test sur la valeur pour savoir si
j'utilise le dessin flèche vers le haut ou flèche vers le bas pour
mettre en forme mon point de donnée.

Le problème : le séparateur décimal est la virgule sur certains postes
et donc Val ne prend pas en compte la partie décimale des valeurs.
Gênant puisque je travaille sur des pourcentages d'évolution de quelques
unités. Je pensais m'en sortir avec l'utilisation combinée de CDbl et
Val comme suggéré dans l'aide d'Excel mais que nenni, je suis obligé de
passer par un substitute. Qu'est ce que je n'ai pas compris dans la
combinaison de Val et CDbl ?

Le code :
Sub fleches()
Dim p As Point, etiq As String, vetiq As Double
Sheets("graph1").Select
For Each p In ActiveChart.SeriesCollection(1).Points
p.HasDataLabel = True
'********************************************
'C'est la qu'est le problème
'********************************************
etiq = Application.WorksheetFunction.Substitute _
(p.DataLabel.Text, ",", ".")
vetiq = Val(etiq)
'********************************************
'Fin du problème
'*********************************************
If vetiq >= 0 Then
p.Fill.UserPicture PictureFile:="C:\Mes documents\mpfe\haut.emf", _
PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces
Else
p.Fill.UserPicture PictureFile:="C:\Mes documents\mpfe\bas.emf", _
PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces

p.HasDataLabel = False
End If
Next p

End Sub


D'avance Merci

--
François L

1 réponse

1 2
Avatar
AV
Je t'invite à lire la(une) réponse faite dans le fil
"Comportement bizarre du CDate"
du 24/02/2006 16:43

AV
1 2