Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mettre une croix dans un champ Currency

9 réponses
Avatar
oualaléreur
Bonjour,

Je voudrais, sous certaines conditions, afficher un "X" ou quelque
chose dans le genre, dans un camp dont les donn=E9es sont de type
currency.
Ca peut =EAtre n'importe quoi tant que ca signale que le champ est vide.
Le format du champ est tel qu'il y a quatre d=E9cimales, et il me
faudrait y mettre quelque chose qui se rep=E8re facilement.

Existe-til une solution ?

Merci,

Benoit

9 réponses

Avatar
oualaléreur
Ca donnerait un truc du genre :

rs.Edit
If (Condition_Sur_PPP) Then
rs![Price/Part] = PPP
Else
rs![Price/Part] = "X"
End If
rs.Update

Bon, ca, ca ne fonctionne pas. Peut-être est-il possible de laisser le
champ blanc ? Sachant que si on ne lui attribue aucune valeur, il prend
celle-ci : 0.0000€
Peut-on rendre la donnée invisible par exemple ? Auquel cas, quand
j'exporte la table concernée vers Excel, si le champ est l'objet d'un
calcul, est-il pris en compte ? ( ce qui n'est pas souhaitable,
évidemment)
Avatar
J-Pierre
Bonsoir,

Avec ton code, il me semble que tu modifies ton recordset, donc la valeur de ton champ. Essaie peut-être:

=vraifaux(isnumeric([PPP]);[PPP];"oualaléreur")

comme source d'un contrôle de ton formulaire

J-Pierre

"oualaléreur" a écrit dans le message de news:
Ca donnerait un truc du genre :

rs.Edit
If (Condition_Sur_PPP) Then
rs![Price/Part] = PPP
Else
rs![Price/Part] = "X"
End If
rs.Update

Bon, ca, ca ne fonctionne pas. Peut-être est-il possible de laisser le
champ blanc ? Sachant que si on ne lui attribue aucune valeur, il prend
celle-ci : 0.0000?
Peut-on rendre la donnée invisible par exemple ? Auquel cas, quand
j'exporte la table concernée vers Excel, si le champ est l'objet d'un
calcul, est-il pris en compte ? ( ce qui n'est pas souhaitable,
évidemment)
Avatar
oualaléreur
salut J-Pierre,

Merci du conseil, la fonction isnumeric a l'air appropriée
effectivement, mais vraifaux, c'est pas une fonction, ca...?
Enfin je vois où tu veux en venir, c'est le principal.
Pour ma part, le problème n'en était pas vraiment un : les strings
pouvant prendre des nombres pour valeur, et parce que j'effectue tous
mes calculs numériques avec PPP, j'ai simplement changé le type de
donnée dans la table, et dans le cas où Condition_Sur_PPP n'est pas
satisfaite, j'attribue une valeur farfelue à PPP, comme 999, puis le
code :

rs.Edit
rs![VolumeToOrder] = NO
If (PPP <> 999) Then
rs![Price/Part] = PPP
Else
rs![Price/Part] = "X"
End If
rs.Update

C'est pas très élegant, mais ca fonctionne.

merci et à +

Benoit
Avatar
oualaléreur
J'oubliais, y'a un inconvéniant à faire comme ca, mais il est mineur.
Enfin si quelqu'un sait l'éviter...

J'exporte ensuite la table vers excel, et je ne sais pas si ca vient de
la fonction d'export que j'utilise, mais tous les strings de la table
sont précédés d'une apostrophe.
Il y a ca en commentaire au début de la fonction :

'This Function is based on the Function in DACH02
'(Function a04_nach_excel(schalter As String))

Le problème qui se pose, c'est surtout qu'on ne peut pas faire de
calculs sous Excel sur le champ Price/Part, ce qui est quand même le
but. Donc si quelqu'un a eu vant d'un bug..

à+

Benoit
Avatar
J-Pierre
Je ne comprends pas bien ce que tu veux faire, mais le code que je t'ai donné se place dans la propriété source d'un contrôle
de ton formulaire et permet d'ajuster l'affichage en fonction de certaines conditions, dans ce cas, si MonChamp contient une
valeur numérique, il est affiché, sinon, message je suppose d'erreur. Ce qui évite de modifier les données de ta table et te
facilite la vie pour le reste.

=vraifaux(isnumeric([MonChamp]);[MonChamp];"oualaléreur")

J-Pierre

"oualaléreur" a écrit dans le message de news:

J'oubliais, y'a un inconvéniant à faire comme ca, mais il est mineur.
Enfin si quelqu'un sait l'éviter...

J'exporte ensuite la table vers excel, et je ne sais pas si ca vient de
la fonction d'export que j'utilise, mais tous les strings de la table
sont précédés d'une apostrophe.
Il y a ca en commentaire au début de la fonction :

'This Function is based on the Function in DACH02
'(Function a04_nach_excel(schalter As String))

Le problème qui se pose, c'est surtout qu'on ne peut pas faire de
calculs sous Excel sur le champ Price/Part, ce qui est quand même le
but. Donc si quelqu'un a eu vant d'un bug..

à+

Benoit
Avatar
oualaléreur
Ha ok,

En fait je n'utilise pas de contrôle, je fais des calculs sous VBA à
partir d'une table et d'un champ récupéré dans une "text box" (c'est
un contrôle, ca ? J'en sais rien en fait :), champ que l'utilisateur
entre, donc. Mais mon problème se situait à la fin de la procédure,
pour remplir une table avec les données calculées. Je dois remplir
l'un de ces champs soit avec une variable issue du calcul (PPP), soit
avec une croix (ou autre).
J'ai juste déclaré le champ comme un champ de type String, tout en
déclarant PPP comme currency.
Je ne sais pas si c'est beaucoup plus clair... Enfin maintenant je me
demande pourquoi diable à l'exportation vers Excel, on me colle une
apostrophe devant tous les Strings, et si on peut voir quelquepart
cette fonction qui répond au doux nom de DACH02...:)

Sinon, il y aurait une autre solution, c'est de garder le champ rempli
via PPP (et une boucle) comme currency et au lieu de mette une croix,
le laisser vide. En fait, si je ne l'initialise pas, il se rempli avec
un truc comme 0,0000$, et ca ne convient pas au chef ca, allez savoir
pourquoi. Donc si quelqu'un sait comment vider un enregistrement de
type currency, c'est aussi une solution, et là les calculs sous Excel,
ils vont bien marcher, là dis-donc!

à+ et merci encore J-Pierre,

Benoit
Avatar
J-Pierre
Dans ton post d'origine, tu dis:

"Je voudrais, sous certaines conditions, afficher un "X" ou quelque chose dans le genre, dans un champ dont les données sont
de type currency."

Afficher un champ, pour moi, c'est définir une "text box" (qui est un contrôle) dans un formulaire et de spécifier la source
(qui est une propriété).

Quant à déclarer PPP comme une monnaie, ça impliquerait que c'est une fonction ?

Tout ça me semble manquer de clarté......Tu dois dissocier le calcul avec son résultat qui est normalement stocké dans ta base
comme numérique ou currency, l'affichage de ton champ dans un contrôle de formulaire, et l'exportation sous excel. Si ton
champ est numérique, il s'exportera très bien.

J-Pierre

"oualaléreur" a écrit dans le message de news:

Ha ok,

En fait je n'utilise pas de contrôle, je fais des calculs sous VBA à
partir d'une table et d'un champ récupéré dans une "text box" (c'est
un contrôle, ca ? J'en sais rien en fait :), champ que l'utilisateur
entre, donc. Mais mon problème se situait à la fin de la procédure,
pour remplir une table avec les données calculées. Je dois remplir
l'un de ces champs soit avec une variable issue du calcul (PPP), soit
avec une croix (ou autre).
J'ai juste déclaré le champ comme un champ de type String, tout en
déclarant PPP comme currency.
Je ne sais pas si c'est beaucoup plus clair... Enfin maintenant je me
demande pourquoi diable à l'exportation vers Excel, on me colle une
apostrophe devant tous les Strings, et si on peut voir quelquepart
cette fonction qui répond au doux nom de DACH02...:)

Sinon, il y aurait une autre solution, c'est de garder le champ rempli
via PPP (et une boucle) comme currency et au lieu de mette une croix,
le laisser vide. En fait, si je ne l'initialise pas, il se rempli avec
un truc comme 0,0000$, et ca ne convient pas au chef ca, allez savoir
pourquoi. Donc si quelqu'un sait comment vider un enregistrement de
type currency, c'est aussi une solution, et là les calculs sous Excel,
ils vont bien marcher, là dis-donc!

à+ et merci encore J-Pierre,

Benoit
Avatar
oualaléreur
Bonjour J-Pierre,

Effectivement, je ne voulais pas "afficher", mais placer dans une
table. Sorry.
PPP une variable de type Currency tout simplement, c'est mieux
paraît-il pour des calculs avec beaucoup de décimales.
Si je tiens compte de tes conseils et de ce que j'ai lu dans l'aide, je
vais garder PPP comme Currency et stocker le résultat dans un champ
Number.
(L'affichage se fait dans un sous-formulaire, et là, pas de
problème.)

Mais alors, si j'étais obstiné au point de vouloir quand même
remplir certains enregistrements avec une croix ( je vais laisser des
blancs, c'est juste par curiosité) tout en gardant le autres
enregistrements en numériques, ce serait possible, ou pas ? En
utilisant une boucle pour remplir la colonne, est-ce que je peux
ponctuellement changer le type d'un champ et faire du cas par cas, ou
encore réunir (concaténer?) plus tard deux champs de type différent
dans un seul ?

à+

benoit
Avatar
J-Pierre
Salut,

Si tu veux que ton champ dans la table contiennent des X ou des valeurs ou n'importe quoi d'autre, tu dois le définir comme
texte.

Ensuite, tu devras tester et convertir ce champ en fonction de ce que tu veux faire.

Par exemple, pour l'affichage, tu définis une fonction AfficheMonChamp dans laquelle tu formates ton champ, et dans la
propriété source d'un text box de ton formulaire, tu codes:

¯ficheMonChamp (MonChampDeLaTable)

Function AfficheMonChamp (MonChamp As String) As String

If IsNumeric(MonChamp) then
AfficheMonChamp = Format(Cdbl(MonChamp),"***********0.00")
Else
AfficheMonChamp = Cstr(MonChamp) 'au choix
AfficheMonChamp = "X" 'au choix
end if

End Function

Pour l'exportation vers Excel, je ne connais pas trop, je ne sais pas comment Excel réagit sur tu mets dans une même colonne
des données caractères et numériques. Plutôt que d'exporter ta table, il faudra peut-être exporter à partir d'une requête, et
peut-être même créer deux colonnes, une pour les valeurs numériques, une pour caractères, et comme champ, mettre

1er champ: =vraifaux(IsNumeric([MonChampDeLaTable]);Format(Cdbl(MonChampDeLaTable),"***********0.00";null)
2ème champ: =vraifaux(IsNumeric([MonChampDeLaTable]);null;Cstr(MonChampDeLaTable))

ou bien utiliser la fonction si ce qu'elle retourne convient à l'exportation sous excel:

1er et 2ème champs:
¯ficheMonChamp ([MonChampDeLaTable])



Tout ce code n'a pas été testé :-)

J-Pierre

PS: Si tu attends une autre réponse, je ne retourne pas sur les NG avant la fin de la semaine.

"oualaléreur" a écrit dans le message de news:
Bonjour J-Pierre,

Effectivement, je ne voulais pas "afficher", mais placer dans une
table. Sorry.
PPP une variable de type Currency tout simplement, c'est mieux
paraît-il pour des calculs avec beaucoup de décimales.
Si je tiens compte de tes conseils et de ce que j'ai lu dans l'aide, je
vais garder PPP comme Currency et stocker le résultat dans un champ
Number.
(L'affichage se fait dans un sous-formulaire, et là, pas de
problème.)

Mais alors, si j'étais obstiné au point de vouloir quand même
remplir certains enregistrements avec une croix ( je vais laisser des
blancs, c'est juste par curiosité) tout en gardant le autres
enregistrements en numériques, ce serait possible, ou pas ? En
utilisant une boucle pour remplir la colonne, est-ce que je peux
ponctuellement changer le type d'un champ et faire du cas par cas, ou
encore réunir (concaténer?) plus tard deux champs de type différent
dans un seul ?

à+

benoit