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
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123 temp = "123,456789123" y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+ ou z = Val(Replace(temp, ",", ".")) ' Excel 2000+ ou y = CDbl(Application.Substitute(temp, ".", ",")) ou z = Val(Application.Substitute(temp, ",", "."))
Cordialement JB
Bonjour
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123
temp = "123,456789123"
y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+
ou
z = Val(Replace(temp, ",", ".")) ' Excel 2000+
ou
y = CDbl(Application.Substitute(temp, ".", ","))
ou
z = Val(Application.Substitute(temp, ",", "."))
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123 temp = "123,456789123" y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+ ou z = Val(Replace(temp, ",", ".")) ' Excel 2000+ ou y = CDbl(Application.Substitute(temp, ".", ",")) ou z = Val(Application.Substitute(temp, ",", "."))
Cordialement JB
Francois
Bonjour
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123 temp = "123,456789123" y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+ ou z = Val(Replace(temp, ",", ".")) ' Excel 2000+ ou y = CDbl(Application.Substitute(temp, ".", ",")) ou z = Val(Application.Substitute(temp, ",", "."))
Merci JB,
Donc je suis obligé de garder mon substitute.
-- François L
Bonjour
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123
temp = "123,456789123"
y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+
ou
z = Val(Replace(temp, ",", ".")) ' Excel 2000+
ou
y = CDbl(Application.Substitute(temp, ".", ","))
ou
z = Val(Application.Substitute(temp, ",", "."))
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123 temp = "123,456789123" y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+ ou z = Val(Replace(temp, ",", ".")) ' Excel 2000+ ou y = CDbl(Application.Substitute(temp, ".", ",")) ou z = Val(Application.Substitute(temp, ",", "."))
Merci JB,
Donc je suis obligé de garder mon substitute.
-- François L
michdenis
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit dans le panneau de configuration de Windows.
Perso. j'utilise la virgule et ça fonctionne !
2 exemples -> virgule -> panneau de configuration Dim V As String V = "10,25" a = CDbl(V) OK
V = "10.25" a = CDbl(V) Ça plante !
Avec le poiint -> panneau de configuration c'est l'inverse qui se produit !
Salutations!
"JB" a écrit dans le message de news: Bonjour
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123 temp = "123,456789123" y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+ ou z = Val(Replace(temp, ",", ".")) ' Excel 2000+ ou y = CDbl(Application.Substitute(temp, ".", ",")) ou z = Val(Application.Substitute(temp, ",", "."))
Cordialement JB
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit
dans le panneau de configuration de Windows.
Perso. j'utilise la virgule et ça fonctionne !
2 exemples -> virgule -> panneau de configuration
Dim V As String
V = "10,25"
a = CDbl(V) OK
V = "10.25"
a = CDbl(V) Ça plante !
Avec le poiint -> panneau de configuration
c'est l'inverse qui se produit !
Salutations!
"JB" <boisgontier@hotmail.com> a écrit dans le message de news: 1140856788.822454.59670@i39g2000cwa.googlegroups.com...
Bonjour
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123
temp = "123,456789123"
y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+
ou
z = Val(Replace(temp, ",", ".")) ' Excel 2000+
ou
y = CDbl(Application.Substitute(temp, ".", ","))
ou
z = Val(Application.Substitute(temp, ",", "."))
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit dans le panneau de configuration de Windows.
Perso. j'utilise la virgule et ça fonctionne !
2 exemples -> virgule -> panneau de configuration Dim V As String V = "10,25" a = CDbl(V) OK
V = "10.25" a = CDbl(V) Ça plante !
Avec le poiint -> panneau de configuration c'est l'inverse qui se produit !
Salutations!
"JB" a écrit dans le message de news: Bonjour
Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
temp = "123.456789123" ' ou 123,456789123 temp = "123,456789123" y = CDbl(Replace(temp, ".", ",")) ' Excel 2000+ ou z = Val(Replace(temp, ",", ".")) ' Excel 2000+ ou y = CDbl(Application.Substitute(temp, ".", ",")) ou z = Val(Application.Substitute(temp, ",", "."))
Cordialement JB
Francois
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit dans le panneau de configuration de Windows.
Bonsoir michdenis,
Avec ton explication, j'ai compris ou était mon erreur !
Merci
-- François L
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit
dans le panneau de configuration de Windows.
Bonsoir michdenis,
Avec ton explication, j'ai compris ou était mon erreur !
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit dans le panneau de configuration de Windows.
Bonsoir michdenis,
Avec ton explication, j'ai compris ou était mon erreur !
Merci
-- François L
michdenis
Bonjour François,
La fonction Val() n'est confortable qu'avec le point nonobstant le séparateur décimale du panneau de configuration de Windows.
La fonction CDBL() requiert le même séparateur décimale que celui définit dans le panneau de configuration de Windows.
Salutations!
"Francois" a écrit dans le message de news: 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 documentsmpfehaut.emf", _ PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces Else p.Fill.UserPicture PictureFile:="C:Mes documentsmpfebas.emf", _ PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces
p.HasDataLabel = False End If Next p
End Sub
D'avance Merci
-- François L
Bonjour François,
La fonction Val() n'est confortable qu'avec le point nonobstant le
séparateur décimale du panneau de configuration de Windows.
La fonction CDBL() requiert le même séparateur décimale que celui
définit dans le panneau de configuration de Windows.
Salutations!
"Francois" <francois@noadress.fr.invalid> a écrit dans le message de news: u2Ku3MeOGHA.1180@TK2MSFTNGP09.phx.gbl...
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 documentsmpfehaut.emf", _
PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces
Else
p.Fill.UserPicture PictureFile:="C:Mes documentsmpfebas.emf", _
PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces
La fonction Val() n'est confortable qu'avec le point nonobstant le séparateur décimale du panneau de configuration de Windows.
La fonction CDBL() requiert le même séparateur décimale que celui définit dans le panneau de configuration de Windows.
Salutations!
"Francois" a écrit dans le message de news: 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 documentsmpfehaut.emf", _ PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces Else p.Fill.UserPicture PictureFile:="C:Mes documentsmpfebas.emf", _ PictureFormat:=xlStretch, PicturePlacement:=xlAllFaces
p.HasDataLabel = False End If Next p
End Sub
D'avance Merci
-- François L
michdenis
Bonjour François,
Je suppose que lorsque ton application est ouverte par un usager qui utilise un séparateur décimale autre que celui que tu utilisais lorsque tu as créé tes étiquettes, le séparateur décimale des étiquettes ne se mettent pas à jour comme le font les données des cellules de la feuille de calcul.
Si tes étiquettes sont des contrôles émanant de la barre d'outils "Formulaire", le contenu de ces dernières ne réagit pas au changement du séparateur décimale d'une usager à l'autre lorsque l'application s'ouvre...comme le fait le contenu des cellules... c'est ce qui rend nécessaire la substitution quand tu utilises la fonction CDBL().
Par contre, si tu utilisais toujours le point dans tes étiquettes nonobstant le séparateur décimale en usage, la fonction "VAL" ne devrait pas demander une substitution.
Salutations!
"Francois" a écrit dans le message de news:
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit dans le panneau de configuration de Windows.
Bonsoir michdenis,
Avec ton explication, j'ai compris ou était mon erreur !
Merci
-- François L
Bonjour François,
Je suppose que lorsque ton application est ouverte par un usager
qui utilise un séparateur décimale autre que celui que tu utilisais
lorsque tu as créé tes étiquettes, le séparateur décimale des étiquettes
ne se mettent pas à jour comme le font les données des cellules
de la feuille de calcul.
Si tes étiquettes sont des contrôles émanant de la barre d'outils "Formulaire",
le contenu de ces dernières ne réagit pas au changement du séparateur
décimale d'une usager à l'autre lorsque l'application s'ouvre...comme le
fait le contenu des cellules... c'est ce qui rend nécessaire la substitution
quand tu utilises la fonction CDBL().
Par contre, si tu utilisais toujours le point dans tes étiquettes nonobstant
le séparateur décimale en usage, la fonction "VAL" ne devrait pas demander
une substitution.
Salutations!
"Francois" <francois@noadress.fr.invalid> a écrit dans le message de news: Oy5x4ZkOGHA.3360@TK2MSFTNGP09.phx.gbl...
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit
dans le panneau de configuration de Windows.
Bonsoir michdenis,
Avec ton explication, j'ai compris ou était mon erreur !
Je suppose que lorsque ton application est ouverte par un usager qui utilise un séparateur décimale autre que celui que tu utilisais lorsque tu as créé tes étiquettes, le séparateur décimale des étiquettes ne se mettent pas à jour comme le font les données des cellules de la feuille de calcul.
Si tes étiquettes sont des contrôles émanant de la barre d'outils "Formulaire", le contenu de ces dernières ne réagit pas au changement du séparateur décimale d'une usager à l'autre lorsque l'application s'ouvre...comme le fait le contenu des cellules... c'est ce qui rend nécessaire la substitution quand tu utilises la fonction CDBL().
Par contre, si tu utilisais toujours le point dans tes étiquettes nonobstant le séparateur décimale en usage, la fonction "VAL" ne devrait pas demander une substitution.
Salutations!
"Francois" a écrit dans le message de news:
Bonjour JB,
| Il semblerait que Cdbl ne fonctionne pas avec . comme séparateur.
Les fonctions de conversion utilise le séparateur décimale définit dans le panneau de configuration de Windows.
Bonsoir michdenis,
Avec ton explication, j'ai compris ou était mon erreur !
Merci
-- François L
Francois
Bonjour François,
Je suppose que lorsque ton application est ouverte par un usager qui utilise un séparateur décimale autre que celui que tu utilisais lorsque tu as créé tes étiquettes, le séparateur décimale des étiquettes ne se mettent pas à jour comme le font les données des cellules de la feuille de calcul.
Si tes étiquettes sont des contrôles émanant de la barre d'outils "Formulaire", le contenu de ces dernières ne réagit pas au changement du séparateur décimale d'une usager à l'autre lorsque l'application s'ouvre...comme le fait le contenu des cellules... c'est ce qui rend nécessaire la substitution quand tu utilises la fonction CDBL().
Par contre, si tu utilisais toujours le point dans tes étiquettes nonobstant le séparateur décimale en usage, la fonction "VAL" ne devrait pas demander une substitution. (...)
Bonjour michdenis,
En fait, j'ai un ensemble de graphiques en histogramme à transformer en remplaçant les barres des histogrammes par des flèches orientées vers le bas ou vers le haut suivant que la valeur du point de données (ici des pourcentages annuels d'évolution) est positive ou négative. Les graphique n'ont par convention pas d'étiquettes de valeur dans le cas présent. Comme je l'ai expliqué, je ne peux pas utiliser la valeur de la cellule source de chaque point du graphique car les feuilles sources sont organisées de manière assez aléatoires ! La solution est donc de récupérer la valeur de chaque point en utilisant son DataLabel. Je voulais utiliser Val pour le cas où l'étiquette se présentait sous la forme "0,01%" mais ça pose problème avec la virgule. Donc la solution que j'ai trouvé c'est : 1 je crée pour chaque point un DataLabel que je formate en numérique standard, 2 j'utilise Cdbl pour transformer la chaîne en valeur numérique, ça marche quel que soit le séparateur décimal, 3 je choisis le dessin pour la barre considérée selon la valeur testée 4 j'efface le DataLabel
Merci de ton aide, j'ai compris comment fonctionne CDbl
-- François L
Bonjour François,
Je suppose que lorsque ton application est ouverte par un usager
qui utilise un séparateur décimale autre que celui que tu utilisais
lorsque tu as créé tes étiquettes, le séparateur décimale des étiquettes
ne se mettent pas à jour comme le font les données des cellules
de la feuille de calcul.
Si tes étiquettes sont des contrôles émanant de la barre d'outils "Formulaire",
le contenu de ces dernières ne réagit pas au changement du séparateur
décimale d'une usager à l'autre lorsque l'application s'ouvre...comme le
fait le contenu des cellules... c'est ce qui rend nécessaire la substitution
quand tu utilises la fonction CDBL().
Par contre, si tu utilisais toujours le point dans tes étiquettes nonobstant
le séparateur décimale en usage, la fonction "VAL" ne devrait pas demander
une substitution.
(...)
Bonjour michdenis,
En fait, j'ai un ensemble de graphiques en histogramme à transformer en
remplaçant les barres des histogrammes par des flèches orientées vers le
bas ou vers le haut suivant que la valeur du point de données (ici des
pourcentages annuels d'évolution) est positive ou négative. Les
graphique n'ont par convention pas d'étiquettes de valeur dans le cas
présent. Comme je l'ai expliqué, je ne peux pas utiliser la valeur de la
cellule source de chaque point du graphique car les feuilles sources
sont organisées de manière assez aléatoires ! La solution est donc de
récupérer la valeur de chaque point en utilisant son DataLabel. Je
voulais utiliser Val pour le cas où l'étiquette se présentait sous la
forme "0,01%" mais ça pose problème avec la virgule. Donc la solution
que j'ai trouvé c'est :
1 je crée pour chaque point un DataLabel que je formate en numérique
standard,
2 j'utilise Cdbl pour transformer la chaîne en valeur numérique, ça
marche quel que soit le séparateur décimal,
3 je choisis le dessin pour la barre considérée selon la valeur testée
4 j'efface le DataLabel
Merci de ton aide, j'ai compris comment fonctionne CDbl
Je suppose que lorsque ton application est ouverte par un usager qui utilise un séparateur décimale autre que celui que tu utilisais lorsque tu as créé tes étiquettes, le séparateur décimale des étiquettes ne se mettent pas à jour comme le font les données des cellules de la feuille de calcul.
Si tes étiquettes sont des contrôles émanant de la barre d'outils "Formulaire", le contenu de ces dernières ne réagit pas au changement du séparateur décimale d'une usager à l'autre lorsque l'application s'ouvre...comme le fait le contenu des cellules... c'est ce qui rend nécessaire la substitution quand tu utilises la fonction CDBL().
Par contre, si tu utilisais toujours le point dans tes étiquettes nonobstant le séparateur décimale en usage, la fonction "VAL" ne devrait pas demander une substitution. (...)
Bonjour michdenis,
En fait, j'ai un ensemble de graphiques en histogramme à transformer en remplaçant les barres des histogrammes par des flèches orientées vers le bas ou vers le haut suivant que la valeur du point de données (ici des pourcentages annuels d'évolution) est positive ou négative. Les graphique n'ont par convention pas d'étiquettes de valeur dans le cas présent. Comme je l'ai expliqué, je ne peux pas utiliser la valeur de la cellule source de chaque point du graphique car les feuilles sources sont organisées de manière assez aléatoires ! La solution est donc de récupérer la valeur de chaque point en utilisant son DataLabel. Je voulais utiliser Val pour le cas où l'étiquette se présentait sous la forme "0,01%" mais ça pose problème avec la virgule. Donc la solution que j'ai trouvé c'est : 1 je crée pour chaque point un DataLabel que je formate en numérique standard, 2 j'utilise Cdbl pour transformer la chaîne en valeur numérique, ça marche quel que soit le séparateur décimal, 3 je choisis le dessin pour la barre considérée selon la valeur testée 4 j'efface le DataLabel
Merci de ton aide, j'ai compris comment fonctionne CDbl
-- François L
JB
La fonction personnalisée valeurNum(chaine) convertit en valeur numérique les chaînes avec . ou , comme séparateur de décimales et divise par 100 si le signe % est présent dans la chaine. Il n'y a pas besoin de formater les labels en standards.
Function valeurNum(chaine) Dim temp As Double temp = Val(Application.Substitute(Application.Substitute(chaine, "%", ""), ",", ".")) valeurNum = IIf(InStr(chaine, "%") > 0, temp / 100, temp) End Function
vetiq = valeurNum(p.DataLabel.Text)
JB
La fonction personnalisée valeurNum(chaine) convertit en valeur
numérique les chaînes avec . ou , comme séparateur de décimales et
divise par 100 si le signe % est présent dans la chaine. Il n'y a pas
besoin de formater les labels en standards.
Function valeurNum(chaine)
Dim temp As Double
temp = Val(Application.Substitute(Application.Substitute(chaine, "%",
""), ",", "."))
valeurNum = IIf(InStr(chaine, "%") > 0, temp / 100, temp)
End Function
La fonction personnalisée valeurNum(chaine) convertit en valeur numérique les chaînes avec . ou , comme séparateur de décimales et divise par 100 si le signe % est présent dans la chaine. Il n'y a pas besoin de formater les labels en standards.
Function valeurNum(chaine) Dim temp As Double temp = Val(Application.Substitute(Application.Substitute(chaine, "%", ""), ",", ".")) valeurNum = IIf(InStr(chaine, "%") > 0, temp / 100, temp) End Function
vetiq = valeurNum(p.DataLabel.Text)
JB
Francois
La fonction personnalisée valeurNum(chaine) convertit en valeur numérique les chaînes avec . ou , comme séparateur de décimales et divise par 100 si le signe % est présent dans la chaine. Il n'y a pas besoin de formater les labels en standards.
Function valeurNum(chaine) Dim temp As Double temp = Val(Application.Substitute(Application.Substitute(chaine, "%", ""), ",", ".")) valeurNum = IIf(InStr(chaine, "%") > 0, temp / 100, temp) End Function
Bonjour JB,
Merci, c'est effectivement une solution mais vu les classeurs dont je pars, je vais garder la solution de formater le datalabel car je peux avoir dans les feuilles sources des mises en forme que je n'ai pas prévues et je n'ai pas envie de prévoir tous les cas de figures.
Après tout, maintenant que je sais que CDbl tient compte du paramètre local de séparateur, pas de soucis.
-- François L
La fonction personnalisée valeurNum(chaine) convertit en valeur
numérique les chaînes avec . ou , comme séparateur de décimales et
divise par 100 si le signe % est présent dans la chaine. Il n'y a pas
besoin de formater les labels en standards.
Function valeurNum(chaine)
Dim temp As Double
temp = Val(Application.Substitute(Application.Substitute(chaine, "%",
""), ",", "."))
valeurNum = IIf(InStr(chaine, "%") > 0, temp / 100, temp)
End Function
Bonjour JB,
Merci, c'est effectivement une solution mais vu les classeurs dont je
pars, je vais garder la solution de formater le datalabel car je peux
avoir dans les feuilles sources des mises en forme que je n'ai pas
prévues et je n'ai pas envie de prévoir tous les cas de figures.
Après tout, maintenant que je sais que CDbl tient compte du paramètre
local de séparateur, pas de soucis.
La fonction personnalisée valeurNum(chaine) convertit en valeur numérique les chaînes avec . ou , comme séparateur de décimales et divise par 100 si le signe % est présent dans la chaine. Il n'y a pas besoin de formater les labels en standards.
Function valeurNum(chaine) Dim temp As Double temp = Val(Application.Substitute(Application.Substitute(chaine, "%", ""), ",", ".")) valeurNum = IIf(InStr(chaine, "%") > 0, temp / 100, temp) End Function
Bonjour JB,
Merci, c'est effectivement une solution mais vu les classeurs dont je pars, je vais garder la solution de formater le datalabel car je peux avoir dans les feuilles sources des mises en forme que je n'ai pas prévues et je n'ai pas envie de prévoir tous les cas de figures.
Après tout, maintenant que je sais que CDbl tient compte du paramètre local de séparateur, pas de soucis.
-- François L
Francois
Bonjour,
Suite aux posts de michdenis et JB, je reprend le problème qui porte en fait sur la fonction CDbl et n'est pas sans rapport avec la question en cours sur CDate.
J'ai fait mes tests sur XL2000.
En fait le fonctionnement de CDbl est assez surprenant :
Si je met le . (point) comme séparateur décimal dans les paramètres régionaux, Sub test() tempa = "0.01" tempb = "0,01" resa = CDbl(tempa) resb = CDbl(tempb) MsgBox resa & Chr(160) & resb End Sub fonctionne sans problème, CDbl a accepté le point comme la virgule dans la chaîne de caractères.
En revanche, si je met la , (virgule) comme séparateur décimal, La sub test plantera sur la ligne resa et fonctionnera sur resb = !
-- François L
Bonjour,
Suite aux posts de michdenis et JB, je reprend le problème qui porte en
fait sur la fonction CDbl et n'est pas sans rapport avec la question en
cours sur CDate.
J'ai fait mes tests sur XL2000.
En fait le fonctionnement de CDbl est assez surprenant :
Si je met le . (point) comme séparateur décimal dans les paramètres
régionaux,
Sub test()
tempa = "0.01"
tempb = "0,01"
resa = CDbl(tempa)
resb = CDbl(tempb)
MsgBox resa & Chr(160) & resb
End Sub
fonctionne sans problème, CDbl a accepté le point comme la virgule dans
la chaîne de caractères.
En revanche, si je met la , (virgule) comme séparateur décimal,
La sub test plantera sur la ligne resa et fonctionnera sur resb = !
Suite aux posts de michdenis et JB, je reprend le problème qui porte en fait sur la fonction CDbl et n'est pas sans rapport avec la question en cours sur CDate.
J'ai fait mes tests sur XL2000.
En fait le fonctionnement de CDbl est assez surprenant :
Si je met le . (point) comme séparateur décimal dans les paramètres régionaux, Sub test() tempa = "0.01" tempb = "0,01" resa = CDbl(tempa) resb = CDbl(tempb) MsgBox resa & Chr(160) & resb End Sub fonctionne sans problème, CDbl a accepté le point comme la virgule dans la chaîne de caractères.
En revanche, si je met la , (virgule) comme séparateur décimal, La sub test plantera sur la ligne resa et fonctionnera sur resb = !