Sur un document dont le code est ci-dessou, je souhaiterais avoir le format
de nombre : 10,00 au lieu de 10,000 comme c'est le cas actuellement.
Pour moi, il me semble que la chaîne à modifier est : str_mot =
Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") -
position_mot)
Mais je sèche sur les options de format ainsi que sur l'endroit où les
positionner...
Si quelqu'un avait une petite idée cela m'arrangerait pas mal...
Merci.
FRED.
'Declare Function GetTickCount Lib "Kernel32" () As Long
Sub macro_item()
Dim str_item As String
Dim str_mot As String
Dim position_item As Double
Dim position_mot As Double
Dim champ As Field
For Each champ In ActiveDocument.Fields
If InStr(1, str_chaine, "ITEM") = 0 Then
Exit For
End If
If InStr(1, champ, "MACROBUTTON SAT") <> 0 Then
str_item = Trim(Mid(champ.Code, Len(" MACROBUTTON SAT ") + 1))
position_item = InStr(1, str_chaine, str_item)
If position_item > 0 Then
position_mot = InStr(position_item, str_chaine, "*X*") + 3
str_mot = Mid(str_chaine, position_mot, InStr(position_mot,
str_chaine, "*X*") - position_mot)
If str_mot = "" Then
champ.Delete
Else
champ.Select
Selection.Text = RTrim(LTrim(str_mot))
End If
str_chaine = Mid(str_chaine, 1, position_item - 1) &
Mid(str_chaine, position_mot + Len(str_mot) + 3)
End If
End If
Next
Un peu plus de précision pour cibler votre problème éviterait à vos lectrices et lecteurs de loger dans votre code, sans savoir trop où s'arrêter. Vous voulez transformer quoi en quoi ? exemple si c'est "10" en "10,00", pas besoin de format on ajoute ",00" à la fin de la chaîne de caractère. Si c'est un résultat de calcul à présenter avec deux décimales c'est bien format qui est adapté. Pour renvoyer un nombre décimal à deux chiffres : Format(2.369, "#.##") renvoie 2,37
-- A+
Bonjour Fred
Un peu plus de précision pour cibler votre problème éviterait à vos
lectrices et lecteurs de loger dans votre code, sans savoir trop où
s'arrêter.
Vous voulez transformer quoi en quoi ?
exemple si c'est "10" en "10,00", pas besoin de format on ajoute ",00"
à la fin de la chaîne de caractère.
Si c'est un résultat de calcul à présenter avec deux décimales c'est
bien format qui est adapté.
Pour renvoyer un nombre décimal à deux chiffres :
Format(2.369, "#.##")
renvoie 2,37
Un peu plus de précision pour cibler votre problème éviterait à vos lectrices et lecteurs de loger dans votre code, sans savoir trop où s'arrêter. Vous voulez transformer quoi en quoi ? exemple si c'est "10" en "10,00", pas besoin de format on ajoute ",00" à la fin de la chaîne de caractère. Si c'est un résultat de calcul à présenter avec deux décimales c'est bien format qui est adapté. Pour renvoyer un nombre décimal à deux chiffres : Format(2.369, "#.##") renvoie 2,37
-- A+
Fred
Bonjour Geo,
Effectivement, c'est un peu confu, du fait en partie que le code que je tente de modifier fait partie d'une assez longue extraction de notre progiciel...
Il me semble la variable qu'il me faut soit "str_mot" :
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
FRED.
"Geo" a écrit dans le message de news:
Bonjour Fred
Un peu plus de précision pour cibler votre problème éviterait à vos lectrices et lecteurs de loger dans votre code, sans savoir trop où s'arrêter. Vous voulez transformer quoi en quoi ? exemple si c'est "10" en "10,00", pas besoin de format on ajoute ",00" à la fin de la chaîne de caractère. Si c'est un résultat de calcul à présenter avec deux décimales c'est bien format qui est adapté. Pour renvoyer un nombre décimal à deux chiffres : Format(2.369, "#.##") renvoie 2,37
-- A+
Bonjour Geo,
Effectivement, c'est un peu confu, du fait en partie que le code que je
tente de modifier fait partie d'une assez longue extraction de notre
progiciel...
Il me semble la variable qu'il me faut soit "str_mot" :
C'est donc à cette varialble que je souhaite appliquer un format à deux
décimales (10,00) alors qu'actuellement nous obtenons trois décimales
(10,000).
Je ne vois pas trop à quel endroit rajouter "Format...".
FRED.
"Geo" <Geo@sans.pub> a écrit dans le message de
news:mn.e3377d978fc8bfc5.41568@sans.pub...
Bonjour Fred
Un peu plus de précision pour cibler votre problème éviterait à vos
lectrices et lecteurs de loger dans votre code, sans savoir trop où
s'arrêter.
Vous voulez transformer quoi en quoi ?
exemple si c'est "10" en "10,00", pas besoin de format on ajoute ",00" à
la fin de la chaîne de caractère.
Si c'est un résultat de calcul à présenter avec deux décimales c'est bien
format qui est adapté.
Pour renvoyer un nombre décimal à deux chiffres :
Format(2.369, "#.##")
renvoie 2,37
Effectivement, c'est un peu confu, du fait en partie que le code que je tente de modifier fait partie d'une assez longue extraction de notre progiciel...
Il me semble la variable qu'il me faut soit "str_mot" :
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
FRED.
"Geo" a écrit dans le message de news:
Bonjour Fred
Un peu plus de précision pour cibler votre problème éviterait à vos lectrices et lecteurs de loger dans votre code, sans savoir trop où s'arrêter. Vous voulez transformer quoi en quoi ? exemple si c'est "10" en "10,00", pas besoin de format on ajoute ",00" à la fin de la chaîne de caractère. Si c'est un résultat de calcul à présenter avec deux décimales c'est bien format qui est adapté. Pour renvoyer un nombre décimal à deux chiffres : Format(2.369, "#.##") renvoie 2,37
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction ainsi str_mot = Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") - position_mot - 1)
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales
(10,00) alors qu'actuellement nous obtenons trois décimales (10,000).
Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre
instruction ainsi
str_mot = Mid(str_chaine, position_mot, InStr(position_mot,
str_chaine, "*X*") - position_mot - 1)
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction ainsi str_mot = Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") - position_mot - 1)
str_mot fera un caractère de moins.
-- A+
Fred
Génial, ça a l'air de fonctionner ! J'avais un peu peur que du coup le format lorsque l'on avait pas de décimales (10 au lieu de 10,25) mais ça a l'air de fonctionner. Merci encore.
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction ainsi str_mot = Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") - position_mot - 1)
str_mot fera un caractère de moins.
-- A+
Génial, ça a l'air de fonctionner !
J'avais un peu peur que du coup le format lorsque l'on avait pas de
décimales (10 au lieu de 10,25) mais ça a l'air de fonctionner.
Merci encore.
FRED
"Geo" <Geo@sans.pub> a écrit dans le message de
news:mn.e3597d971ae0cc39.41568@sans.pub...
C'est donc à cette varialble que je souhaite appliquer un format à deux
décimales (10,00) alors qu'actuellement nous obtenons trois décimales
(10,000).
Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction
ainsi
str_mot = Mid(str_chaine, position_mot, InStr(position_mot,
str_chaine, "*X*") - position_mot - 1)
Génial, ça a l'air de fonctionner ! J'avais un peu peur que du coup le format lorsque l'on avait pas de décimales (10 au lieu de 10,25) mais ça a l'air de fonctionner. Merci encore.
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction ainsi str_mot = Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") - position_mot - 1)
str_mot fera un caractère de moins.
-- A+
Fred
euh, j'ai parlé un peu vite! en fait cela enlève aussi les nombres de dates (2009 devient 200)... Il faudrait en fait bien manipuler les décimales...
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction ainsi str_mot = Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") - position_mot - 1)
str_mot fera un caractère de moins.
-- A+
euh, j'ai parlé un peu vite!
en fait cela enlève aussi les nombres de dates (2009 devient 200)...
Il faudrait en fait bien manipuler les décimales...
FRED
"Geo" <Geo@sans.pub> a écrit dans le message de
news:mn.e3597d971ae0cc39.41568@sans.pub...
C'est donc à cette varialble que je souhaite appliquer un format à deux
décimales (10,00) alors qu'actuellement nous obtenons trois décimales
(10,000).
Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction
ainsi
str_mot = Mid(str_chaine, position_mot, InStr(position_mot,
str_chaine, "*X*") - position_mot - 1)
C'est donc à cette varialble que je souhaite appliquer un format à deux décimales (10,00) alors qu'actuellement nous obtenons trois décimales (10,000). Je ne vois pas trop à quel endroit rajouter "Format...".
S'il s'agit de supprimer le dernier caractère, modifiez votre instruction ainsi str_mot = Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") - position_mot - 1)
str_mot fera un caractère de moins.
-- A+
Geo
Bonjour
en fait cela enlève aussi les nombres de dates (2009 devient 200)... Il faudrait en fait bien manipuler les décimales...
Il manque des éléments pour comprendre d'où sortent ces données et ce qu'il faut en faire. A première vue votre macro examine les boutons de lancement d'une macro de nom SAT. Le texte affiché sur ces boutons peut comporter un texte contenant * X * (sans espaces) suivi d'une valeur qui peut être un nombre. Le but est de récupérer ce nombre qui sous la forme numérique avec deux décimales ou entier (date). Si on utilise la fonction format et selon votre règle 10 doit s'afficher 10,00, une année s'affichera 2009,00 Il faut donc une règle complémentaire pour déterminer si on doit mettre des décimales ou pas.
Sinon le principe sera : récupérer la chaîne str_mot vérifier qu'elle contient un nombre traduire la chaîne en nombre et la traduire en caractères par une instruction format.
-- A+
Bonjour
en fait cela enlève aussi les nombres de dates (2009 devient 200)...
Il faudrait en fait bien manipuler les décimales...
Il manque des éléments pour comprendre d'où sortent ces données et ce
qu'il faut en faire.
A première vue votre macro examine les boutons de lancement d'une macro
de nom SAT.
Le texte affiché sur ces boutons peut comporter un texte contenant * X
* (sans espaces) suivi d'une valeur qui peut être un nombre.
Le but est de récupérer ce nombre qui sous la forme numérique avec deux
décimales ou entier (date).
Si on utilise la fonction format et selon votre règle 10 doit
s'afficher 10,00, une année s'affichera 2009,00
Il faut donc une règle complémentaire pour déterminer si on doit mettre
des décimales ou pas.
Sinon le principe sera : récupérer la chaîne str_mot
vérifier qu'elle contient un nombre
traduire la chaîne en nombre
et la traduire en caractères par une instruction format.
en fait cela enlève aussi les nombres de dates (2009 devient 200)... Il faudrait en fait bien manipuler les décimales...
Il manque des éléments pour comprendre d'où sortent ces données et ce qu'il faut en faire. A première vue votre macro examine les boutons de lancement d'une macro de nom SAT. Le texte affiché sur ces boutons peut comporter un texte contenant * X * (sans espaces) suivi d'une valeur qui peut être un nombre. Le but est de récupérer ce nombre qui sous la forme numérique avec deux décimales ou entier (date). Si on utilise la fonction format et selon votre règle 10 doit s'afficher 10,00, une année s'affichera 2009,00 Il faut donc une règle complémentaire pour déterminer si on doit mettre des décimales ou pas.
Sinon le principe sera : récupérer la chaîne str_mot vérifier qu'elle contient un nombre traduire la chaîne en nombre et la traduire en caractères par une instruction format.
-- A+
Fred
Bonjour,
Effectivement, j'ai eu le problème avec les dates, que je pensais avoir réglé avec un :
If InStr(str_mot, "/") > 0 Then ' vérifie qu'il y a un "/" dans le mot str_mot = Format(CDate(str_mot), "dd/mm/yyyy")
Else str_mot = Format(str_mot, "# ##0.00") If IsDate(str_mot) Then End If End If
Mais pas mal de choses ne fonctionnent pas... Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales. Pensez-vous que cela soit possible ?
FRED.
"Geo" a écrit dans le message de news:
Bonjour
en fait cela enlève aussi les nombres de dates (2009 devient 200)... Il faudrait en fait bien manipuler les décimales...
Il manque des éléments pour comprendre d'où sortent ces données et ce qu'il faut en faire. A première vue votre macro examine les boutons de lancement d'une macro de nom SAT. Le texte affiché sur ces boutons peut comporter un texte contenant * X * (sans espaces) suivi d'une valeur qui peut être un nombre. Le but est de récupérer ce nombre qui sous la forme numérique avec deux décimales ou entier (date). Si on utilise la fonction format et selon votre règle 10 doit s'afficher 10,00, une année s'affichera 2009,00 Il faut donc une règle complémentaire pour déterminer si on doit mettre des décimales ou pas.
Sinon le principe sera : récupérer la chaîne str_mot vérifier qu'elle contient un nombre traduire la chaîne en nombre et la traduire en caractères par une instruction format.
-- A+
Bonjour,
Effectivement, j'ai eu le problème avec les dates, que je pensais avoir
réglé avec un :
If InStr(str_mot, "/") > 0 Then ' vérifie qu'il y a un "/" dans le mot
str_mot = Format(CDate(str_mot), "dd/mm/yyyy")
Else
str_mot = Format(str_mot, "# ##0.00")
If IsDate(str_mot) Then
End If
End If
Mais pas mal de choses ne fonctionnent pas...
Il me semble que cela serait plus adapté de tester si la valeur comporte des
décimales.
Pensez-vous que cela soit possible ?
FRED.
"Geo" <Geo@sans.pub> a écrit dans le message de
news:mn.e3fc7d97afe866c8.41568@sans.pub...
Bonjour
en fait cela enlève aussi les nombres de dates (2009 devient 200)...
Il faudrait en fait bien manipuler les décimales...
Il manque des éléments pour comprendre d'où sortent ces données et ce
qu'il faut en faire.
A première vue votre macro examine les boutons de lancement d'une macro de
nom SAT.
Le texte affiché sur ces boutons peut comporter un texte contenant * X *
(sans espaces) suivi d'une valeur qui peut être un nombre.
Le but est de récupérer ce nombre qui sous la forme numérique avec deux
décimales ou entier (date).
Si on utilise la fonction format et selon votre règle 10 doit s'afficher
10,00, une année s'affichera 2009,00
Il faut donc une règle complémentaire pour déterminer si on doit mettre
des décimales ou pas.
Sinon le principe sera : récupérer la chaîne str_mot
vérifier qu'elle contient un nombre
traduire la chaîne en nombre
et la traduire en caractères par une instruction format.
Effectivement, j'ai eu le problème avec les dates, que je pensais avoir réglé avec un :
If InStr(str_mot, "/") > 0 Then ' vérifie qu'il y a un "/" dans le mot str_mot = Format(CDate(str_mot), "dd/mm/yyyy")
Else str_mot = Format(str_mot, "# ##0.00") If IsDate(str_mot) Then End If End If
Mais pas mal de choses ne fonctionnent pas... Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales. Pensez-vous que cela soit possible ?
FRED.
"Geo" a écrit dans le message de news:
Bonjour
en fait cela enlève aussi les nombres de dates (2009 devient 200)... Il faudrait en fait bien manipuler les décimales...
Il manque des éléments pour comprendre d'où sortent ces données et ce qu'il faut en faire. A première vue votre macro examine les boutons de lancement d'une macro de nom SAT. Le texte affiché sur ces boutons peut comporter un texte contenant * X * (sans espaces) suivi d'une valeur qui peut être un nombre. Le but est de récupérer ce nombre qui sous la forme numérique avec deux décimales ou entier (date). Si on utilise la fonction format et selon votre règle 10 doit s'afficher 10,00, une année s'affichera 2009,00 Il faut donc une règle complémentaire pour déterminer si on doit mettre des décimales ou pas.
Sinon le principe sera : récupérer la chaîne str_mot vérifier qu'elle contient un nombre traduire la chaîne en nombre et la traduire en caractères par une instruction format.
-- A+
Geo
Bonjour
Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales. Pensez-vous que cela soit possible ?
Tout est possible ou presque, du moment que vous connaissez les données à traiter. Vous pourriez utiliser la fonction isDate pour déterminer si c'est une date. Pour savoir s'il y a des décimales, c'est vous qui pouvez savoir comme faire en fonction des données qui se présentent, y a-t-il une virgule suivie de 1 chiffre, 2 chiffres, 3 chiffres ... ? Il faut d'abord décrire ce qui vous permet à vous, être humain, de déterminer que c'est un nombre à afficher avec deux décimales, puis le programmer. regardez l'opérateur Like qui pourrait vous aider et vous avez des fonctions intéressantes : IsDate, IsNumeric, IsError.
-- A+
Bonjour
Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales.
Pensez-vous que cela soit possible ?
Tout est possible ou presque, du moment que vous connaissez les données
à traiter.
Vous pourriez utiliser la fonction isDate pour déterminer si c'est une
date.
Pour savoir s'il y a des décimales, c'est vous qui pouvez savoir comme
faire en fonction des données qui se présentent, y a-t-il une virgule
suivie de 1 chiffre, 2 chiffres, 3 chiffres ... ?
Il faut d'abord décrire ce qui vous permet à vous, être humain, de
déterminer que c'est un nombre à afficher avec deux décimales, puis le
programmer.
regardez l'opérateur Like qui pourrait vous aider et vous avez des
fonctions intéressantes : IsDate, IsNumeric, IsError.
Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales. Pensez-vous que cela soit possible ?
Tout est possible ou presque, du moment que vous connaissez les données à traiter. Vous pourriez utiliser la fonction isDate pour déterminer si c'est une date. Pour savoir s'il y a des décimales, c'est vous qui pouvez savoir comme faire en fonction des données qui se présentent, y a-t-il une virgule suivie de 1 chiffre, 2 chiffres, 3 chiffres ... ? Il faut d'abord décrire ce qui vous permet à vous, être humain, de déterminer que c'est un nombre à afficher avec deux décimales, puis le programmer. regardez l'opérateur Like qui pourrait vous aider et vous avez des fonctions intéressantes : IsDate, IsNumeric, IsError.
-- A+
Fred
Merci, L'opérateur Like fonctionne, mais j'ai toujours un problème (encore !!).
Ma recherche "mycheck" me renvoie bien mes nombre à trois décimales, mais mon formatage reste sans effet... Si je rentre str_mot = Format("# ##0.00") (j'ommet donc str_mot), c'est bien mes chiffres à trois décimales qui sont impactés mais bien entendu je perds la valeur de str_mot (j'obtiens # ##0.00 écris à la place)....
Je vais craquer !!
FRED.
'Declare Function GetTickCount Lib "Kernel32" () As Long Sub macro_item() Dim str_item As String Dim str_mot As String Dim position_item As Double Dim position_mot As Double Dim champ As Field
Dim MyCheck
For Each champ In ActiveDocument.Fields If InStr(1, str_chaine, "ITEM") = 0 Then Exit For End If
If InStr(1, champ, "MACROBUTTON SAT") <> 0 Then str_item = Trim(Mid(champ.Code, Len(" MACROBUTTON SAT ") + 1)) position_item = InStr(1, str_chaine, str_item)
MyCheck = str_mot Like "*.000*" If MyCheck = True Then str_mot = Format(str_mot, "# ##0.00") Else End If
"Geo" a écrit dans le message de news:
Bonjour
Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales. Pensez-vous que cela soit possible ?
Tout est possible ou presque, du moment que vous connaissez les données à traiter. Vous pourriez utiliser la fonction isDate pour déterminer si c'est une date. Pour savoir s'il y a des décimales, c'est vous qui pouvez savoir comme faire en fonction des données qui se présentent, y a-t-il une virgule suivie de 1 chiffre, 2 chiffres, 3 chiffres ... ? Il faut d'abord décrire ce qui vous permet à vous, être humain, de déterminer que c'est un nombre à afficher avec deux décimales, puis le programmer. regardez l'opérateur Like qui pourrait vous aider et vous avez des fonctions intéressantes : IsDate, IsNumeric, IsError.
-- A+
Merci, L'opérateur Like fonctionne, mais j'ai toujours un problème (encore
!!).
Ma recherche "mycheck" me renvoie bien mes nombre à trois décimales, mais
mon formatage reste sans effet...
Si je rentre str_mot = Format("# ##0.00") (j'ommet donc str_mot), c'est bien
mes chiffres à trois décimales qui sont impactés mais bien entendu je perds
la valeur de str_mot (j'obtiens # ##0.00 écris à la place)....
Je vais craquer !!
FRED.
'Declare Function GetTickCount Lib "Kernel32" () As Long
Sub macro_item()
Dim str_item As String
Dim str_mot As String
Dim position_item As Double
Dim position_mot As Double
Dim champ As Field
Dim MyCheck
For Each champ In ActiveDocument.Fields
If InStr(1, str_chaine, "ITEM") = 0 Then
Exit For
End If
If InStr(1, champ, "MACROBUTTON SAT") <> 0 Then
str_item = Trim(Mid(champ.Code, Len(" MACROBUTTON SAT ") + 1))
position_item = InStr(1, str_chaine, str_item)
MyCheck = str_mot Like "*.000*"
If MyCheck = True Then
str_mot = Format(str_mot, "# ##0.00")
Else
End If
"Geo" <Geo@sans.pub> a écrit dans le message de
news:mn.ea6e7d97121180a9.41568@sans.pub...
Bonjour
Il me semble que cela serait plus adapté de tester si la valeur comporte
des décimales.
Pensez-vous que cela soit possible ?
Tout est possible ou presque, du moment que vous connaissez les données à
traiter.
Vous pourriez utiliser la fonction isDate pour déterminer si c'est une
date.
Pour savoir s'il y a des décimales, c'est vous qui pouvez savoir comme
faire en fonction des données qui se présentent, y a-t-il une virgule
suivie de 1 chiffre, 2 chiffres, 3 chiffres ... ?
Il faut d'abord décrire ce qui vous permet à vous, être humain, de
déterminer que c'est un nombre à afficher avec deux décimales, puis le
programmer.
regardez l'opérateur Like qui pourrait vous aider et vous avez des
fonctions intéressantes : IsDate, IsNumeric, IsError.
Merci, L'opérateur Like fonctionne, mais j'ai toujours un problème (encore !!).
Ma recherche "mycheck" me renvoie bien mes nombre à trois décimales, mais mon formatage reste sans effet... Si je rentre str_mot = Format("# ##0.00") (j'ommet donc str_mot), c'est bien mes chiffres à trois décimales qui sont impactés mais bien entendu je perds la valeur de str_mot (j'obtiens # ##0.00 écris à la place)....
Je vais craquer !!
FRED.
'Declare Function GetTickCount Lib "Kernel32" () As Long Sub macro_item() Dim str_item As String Dim str_mot As String Dim position_item As Double Dim position_mot As Double Dim champ As Field
Dim MyCheck
For Each champ In ActiveDocument.Fields If InStr(1, str_chaine, "ITEM") = 0 Then Exit For End If
If InStr(1, champ, "MACROBUTTON SAT") <> 0 Then str_item = Trim(Mid(champ.Code, Len(" MACROBUTTON SAT ") + 1)) position_item = InStr(1, str_chaine, str_item)
MyCheck = str_mot Like "*.000*" If MyCheck = True Then str_mot = Format(str_mot, "# ##0.00") Else End If
"Geo" a écrit dans le message de news:
Bonjour
Il me semble que cela serait plus adapté de tester si la valeur comporte des décimales. Pensez-vous que cela soit possible ?
Tout est possible ou presque, du moment que vous connaissez les données à traiter. Vous pourriez utiliser la fonction isDate pour déterminer si c'est une date. Pour savoir s'il y a des décimales, c'est vous qui pouvez savoir comme faire en fonction des données qui se présentent, y a-t-il une virgule suivie de 1 chiffre, 2 chiffres, 3 chiffres ... ? Il faut d'abord décrire ce qui vous permet à vous, être humain, de déterminer que c'est un nombre à afficher avec deux décimales, puis le programmer. regardez l'opérateur Like qui pourrait vous aider et vous avez des fonctions intéressantes : IsDate, IsNumeric, IsError.
-- A+
Geo
Bonjour FRED.
[ Cette réponse est faite sur le forum public Word : news://msnews.microsoft.com/microsoft.public.fr.word ] Merci, L'opérateur Like fonctionne, mais j'ai toujours un problème (encore !!).
Ma recherche "mycheck" me renvoie bien mes nombre à trois décimales, mais mon formatage reste sans effet... Si je rentre str_mot = Format("# ##0.00") (j'ommet donc str_mot), c'est bien mes chiffres à trois décimales qui sont impactés mais bien entendu je perds la valeur de str_mot (j'obtiens # ##0.00 écris à la place)....
str_mot est une chaîne de caractère et non une valeur numérique, la fonction Format n'a donc aucune action sur son contenu. Passez par une variable numérique : Dim Valeur as Double Valeur = str_mot str_mot = Format(Valeur, "# ##0.00")
-- A+
Bonjour FRED.
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]
Merci, L'opérateur Like fonctionne, mais j'ai toujours un problème (encore !!).
Ma recherche "mycheck" me renvoie bien mes nombre à trois décimales, mais mon formatage
reste sans effet...
Si je rentre str_mot = Format("# ##0.00") (j'ommet donc str_mot), c'est bien mes
chiffres à trois décimales qui sont impactés mais bien entendu je perds la valeur de
str_mot (j'obtiens # ##0.00 écris à la place)....
str_mot est une chaîne de caractère et non une valeur numérique, la
fonction Format n'a donc aucune action sur son contenu.
Passez par une variable numérique :
Dim Valeur as Double
Valeur = str_mot
str_mot = Format(Valeur, "# ##0.00")
[ Cette réponse est faite sur le forum public Word : news://msnews.microsoft.com/microsoft.public.fr.word ] Merci, L'opérateur Like fonctionne, mais j'ai toujours un problème (encore !!).
Ma recherche "mycheck" me renvoie bien mes nombre à trois décimales, mais mon formatage reste sans effet... Si je rentre str_mot = Format("# ##0.00") (j'ommet donc str_mot), c'est bien mes chiffres à trois décimales qui sont impactés mais bien entendu je perds la valeur de str_mot (j'obtiens # ##0.00 écris à la place)....
str_mot est une chaîne de caractère et non une valeur numérique, la fonction Format n'a donc aucune action sur son contenu. Passez par une variable numérique : Dim Valeur as Double Valeur = str_mot str_mot = Format(Valeur, "# ##0.00")