Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Powerbuiler - Excel : formatage des zones décimales

#1 08-10-2008 09:16:27

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

[RESOLU] Powerbuiler - Excel : formatage des zones décimales

Bonjour,

J'aurais besoin en utilisant l'OLE Excel de formater des cellules au format monétaire en décimal 2 et avec le symbole euro.

J'avais donc pris un format "# ##0,00 €" et posionner ce format comme cela :
//Io_Excel.Worksheets(1).rows(lig).NumberFormat = le format ci dessus

Par contre en fonction du paramètre régional du poste de travail, si le séparateur de décimal est un point cela ne fonctionne pas et vis et versa.

Et dans le fichier Excel, je dois avoir des nombres et pas des zones en caractère, donc à priori je ne peux pas utiliser le format [currency].

Auriez vous une solution à ce problème, soit pour récupérer le paramètre régional du poste me permettant d'appliquer un format avec un point ou une virgule, ou une autre solution qui fonctionne dans tous les cas ?

Merci d'avance,

Version Pb :9.0

Hors ligne

 

#2 08-10-2008 09:55:46

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Powerbuiler - Excel : formatage des zones décimales

Bonjour, voici un petit bout de script qui pourrait t'être utile pour récupérer le séparateur décimal

Code: pb

//External functions:

function ULong GetThreadLocale() library "kernel32.dll"
function Long GetLocaleInfoA(ULong Locale, Long LocaleNumber, ref string LocaleInfo, Int BufferSize) library "kernel32.dll"

// This function returns decimal separator symbol:
// string DecimalSeparator()

String ls_result
ULong ll_locale

ll_locale = GetThreadLocale()
ls_result = Space(30)
GetLocaleInfoA(ll_locale, 14, ls_result, Len(ls_result)) // LOCALE_SDECIMAL= $0000000E;  { decimal separator }

Return ls_result

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 08-10-2008 10:08:41

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Powerbuiler - Excel : formatage des zones décimales

erasorz a écrit:

Bonjour, voici un petit bout de script qui pourrait t'être utile pour récupérer le séparateur décimal

Code: pb

//External functions:

function ULong GetThreadLocale() library "kernel32.dll"
function Long GetLocaleInfoA(ULong Locale, Long LocaleNumber, ref string LocaleInfo, Int BufferSize) library "kernel32.dll"

// This function returns decimal separator symbol:
// string DecimalSeparator()

String ls_result
ULong ll_locale

ll_locale = GetThreadLocale()
ls_result = Space(30)
GetLocaleInfoA(ll_locale, 14, ls_result, Len(ls_result)) // LOCALE_SDECIMAL= $0000000E;  { decimal separator }

Return ls_result

Merci pour cette solution.

Entre temps, j'ai trouvé une autre solution qui fonctionne également

Code: pb

IF pos(string(1/2), ".") > 0 THEN
   messagebox("point", ".")
ELSE
   messagebox("virgule", ",")
END IF

Hors ligne

 

#4 08-10-2008 10:12:27

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Powerbuiler - Excel : formatage des zones décimales

wazou1812 a écrit:

Entre temps, j'ai trouvé une autre solution qui fonctionne également

Code: pb

IF pos(string(1/2), ".") > 0 THEN
   messagebox("point", ".")
ELSE
   messagebox("virgule", ",")
END IF

Pas mal trouvé du tout, j'aime bien...

Hors ligne

 

#5 08-10-2008 10:15:26

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Powerbuiler - Excel : formatage des zones décimales

La solution de Erasorz fonctionne également très bien.

Encore merci

Hors ligne

 

#6 08-10-2008 11:21:22

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Powerbuiler - Excel : formatage des zones décimales

Cortex a écrit:

wazou1812 a écrit:

Entre temps, j'ai trouvé une autre solution qui fonctionne également

Code: pb

IF pos(string(1/2), ".") > 0 THEN
   messagebox("point", ".")
ELSE
   messagebox("virgule", ",")
END IF

Pas mal trouvé du tout, j'aime bien...

très élégant en effet


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#7 08-10-2008 11:28:39

FMolinas  
Membre Geek
Lieu: Lyon
Date d'inscription: 12-06-2007
Messages: 87
Pépites: 97
Banque: 6,435,474,948,567

Re: [RESOLU] Powerbuiler - Excel : formatage des zones décimales

Les joies de la localisation... Windows utilise DEUX paramètres pour la génération du séparateur décimal :

Code: PB

CONSTANT Long LOCALE_SDECIMAL = 14
CONSTANT Long LOCALE_SMONDECIMALSEP = 22

Heureusement que PowerBuilder ne dispose pas d'un type de données "money" !

Et bravo pour le 1/2, très astucieux

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Powerbuiler - Excel : formatage des zones décimales

Pied de page des forums

Propulsé par FluxBB 1.2.22