OVH Cloud OVH Cloud

VB -> Excel : pb de séparateur décimal

4 réponses
Avatar
YannX
Bnjr a tous,

J'accède a un graphe Excel créé par VB,
donc en chargeant d'abord mes valeurs dans une feuille.
Mais ce n'est pas de l'aspect graphique dont je m'inquiète..

Je viens de remarquer (tardivement ;-), que mes valeurs
écrites dans la MSHFlexGrid avec un point décimal,
correctement calculées avec VB,
correctement enregistrées sous .MDB en DAO
sont transmises à Excel en remplacant le point décimal
(uniquement dans le cas de la colonne n°1 -en plus- les autres sont OK)
par un espace (devenu séparateur de milliers) ! ! ! ! ! ! !

Et cela m'est confirmé par l'examen du format de cellule d'XL !

recapitulatif des instructions VB utilisées :
- charger dans la MSFlexGrid : Form.grd_Pnts.TextMatrix(i, j) = Format(i
* j + Rnd(4#), "000.0000")
- ecriture DAO : tPoints!val = .TextMatrix(i,j)
- ecriture dans Excel: .Range("C" & j + 1).Value = mGridO.TextMatrix(j, 1)
le plus bizarre est que cette instruction traite correctement
la colonne 0, mal la colonne 1 (qui contiennent toutes 2 des
décimaux...)

J'ai peut-etre une piste : l'entete de la colonne "défectueuse"
est rempli par un string de contenu exact : xRange.Value = " Point Eff."
Mais mes tentatives en changeant cet entete ne changent pas l'erreur !

Question : ou est mon bug ! ! ! ! ! ! ! !

Une info supplémentaire : pour récupérer le caractère décimal,
j'utilise dans le KeyPressed de mon MSHFlexGrid :
SymboleDecimal = Format(0, ".") ' astuce pour récuperer le bon
caractère décimal

Alors là ! Doit y avoir un piège dans un coin,
mais pouvez-vous m'indiquer une piste ?

Bouc -> chèvre -> vache......Perette Merci
Y

4 réponses

Avatar
YannX
"YannX" a écrit dans le message de
news:
Bnjr a tous,

J'accède a un graphe Excel créé par VB,
donc en chargeant d'abord mes valeurs dans une feuille.
Mais ce n'est pas de l'aspect graphique dont je m'inquiète..

Je viens de remarquer (tardivement ;-), que mes valeurs
écrites dans la MSHFlexGrid avec un point décimal,
correctement calculées avec VB,
correctement enregistrées sous .MDB en DAO
sont transmises à Excel en remplacant le point décimal
(uniquement dans le cas de la colonne n°1 -en plus- les autres sont OK)
par un espace (devenu séparateur de milliers) ! ! ! ! ! ! !

Et cela m'est confirmé par l'examen du format de cellule d'XL !

recapitulatif des instructions VB utilisées :
- charger dans la MSFlexGrid : Form.grd_Pnts.TextMatrix(i, j) Format(i
* j + Rnd(4#), "000.0000")
- ecriture DAO : tPoints!val = .TextMatrix(i,j)
- ecriture dans Excel: .Range("C" & j + 1).Value = mGridO.TextMatrix(j,


1)
le plus bizarre est que cette instruction traite correctement
la colonne 0, mal la colonne 1 (qui contiennent toutes 2 des
décimaux...)

J'ai peut-etre une piste : l'entete de la colonne "défectueuse"
est rempli par un string de contenu exact : xRange.Value = " Point Eff."
Mais mes tentatives en changeant cet entete ne changent pas l'erreur !

Question : ou est mon bug ! ! ! ! ! ! ! !

Une info supplémentaire : pour récupérer le caractère décimal,
j'utilise dans le KeyPressed de mon MSHFlexGrid :
SymboleDecimal = Format(0, ".") ' astuce pour récuperer le bon
caractère décimal

Alors là ! Doit y avoir un piège dans un coin,
mais pouvez-vous m'indiquer une piste ?

Bouc -> chèvre -> vache......Perette Merci
Y




Pas de doute : deux instructions identiques : ici j=3
jXL.Range("b" & j + 1).Value = mGridO.TextMatrix(j, 0) ' = Format(v,"00.00") = "0,23"
-> XL.XP 2003 m'indique une coche verte et
"le montant de cette cellule est au format texte " d'ailleurs
cadré a gauche !
jXL.Range("C" & j + 1).Value = mGridO.TextMatrix(j, 1) ' = Format(v,"00.000") = "4,458" -> confirmé par Debug.Print v+3 ->7,458
Cette instruction bascule la cellule visée avec le format "Nombre 0 décimal
..... coche le séparateur de miliers !
[E3] Ã+3 => 4461

Seule une case B8 apparait en format numérique, étant rempli avec un nombre
commencant par un chiffre significatif !


J'ai aussi teste avec une version XL 2000 ;
Mes valeurs 0,23 sont écrites cadréees a GAUCHE -> c'est du texte !
Qd je saisis à la main 0,23 -> cela va a droite
Qd je saisis à la main 0.23 -> cela va a gauche

Le problème viendrait d'une incohérence entre VB et excel
concernant le traitement du séparateur décimal ?

Que n'ai-je pas vu avec mes gros yeux !
Merci de vos luminosités
Y
Avatar
Philippe.R
Bonjour YannX,
Tu veux bien, stp, ou bien répondre au dessus de la question, comme il en usage à priori ici, où bien
n'en reprendre que le strict essentiel, de manière à rendre la réponse plus rapidement visible ?
Ce serait bien agréable à un grand nombre d'habitués ;o)))
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"YannX" a écrit dans le message de news:

"YannX" a écrit dans le message de
news:
Bnjr a tous,

J'accède a un graphe Excel créé par VB,
donc en chargeant d'abord mes valeurs dans une feuille.
Mais ce n'est pas de l'aspect graphique dont je m'inquiète..

Je viens de remarquer (tardivement ;-), que mes valeurs
écrites dans la MSHFlexGrid avec un point décimal,
correctement calculées avec VB,
correctement enregistrées sous .MDB en DAO
sont transmises à Excel en remplacant le point décimal
(uniquement dans le cas de la colonne n°1 -en plus- les autres sont OK)
par un espace (devenu séparateur de milliers) ! ! ! ! ! ! !

Et cela m'est confirmé par l'examen du format de cellule d'XL !

recapitulatif des instructions VB utilisées :
- charger dans la MSFlexGrid : Form.grd_Pnts.TextMatrix(i, j) > Format(i
* j + Rnd(4#), "000.0000")
- ecriture DAO : tPoints!val = .TextMatrix(i,j)
- ecriture dans Excel: .Range("C" & j + 1).Value = mGridO.TextMatrix(j,


1)
le plus bizarre est que cette instruction traite correctement
la colonne 0, mal la colonne 1 (qui contiennent toutes 2 des
décimaux...)

J'ai peut-etre une piste : l'entete de la colonne "défectueuse"
est rempli par un string de contenu exact : xRange.Value = " Point Eff."
Mais mes tentatives en changeant cet entete ne changent pas l'erreur !

Question : ou est mon bug ! ! ! ! ! ! ! !

Une info supplémentaire : pour récupérer le caractère décimal,
j'utilise dans le KeyPressed de mon MSHFlexGrid :
SymboleDecimal = Format(0, ".") ' astuce pour récuperer le bon
caractère décimal

Alors là ! Doit y avoir un piège dans un coin,
mais pouvez-vous m'indiquer une piste ?

Bouc -> chèvre -> vache......Perette Merci
Y




Pas de doute : deux instructions identiques : ici j=3
jXL.Range("b" & j + 1).Value = mGridO.TextMatrix(j, 0) ' = > Format(v,"00.00") = "0,23"
-> XL.XP 2003 m'indique une coche verte et
"le montant de cette cellule est au format texte " d'ailleurs
cadré a gauche !
jXL.Range("C" & j + 1).Value = mGridO.TextMatrix(j, 1) ' = > Format(v,"00.000") = "4,458" -> confirmé par Debug.Print v+3 ->7,458
Cette instruction bascule la cellule visée avec le format "Nombre 0 décimal
..... coche le séparateur de miliers !
[E3] Ã+3 => 4461

Seule une case B8 apparait en format numérique, étant rempli avec un nombre
commencant par un chiffre significatif !


J'ai aussi teste avec une version XL 2000 ;
Mes valeurs 0,23 sont écrites cadréees a GAUCHE -> c'est du texte !
Qd je saisis à la main 0,23 -> cela va a droite
Qd je saisis à la main 0.23 -> cela va a gauche

Le problème viendrait d'une incohérence entre VB et excel
concernant le traitement du séparateur décimal ?

Que n'ai-je pas vu avec mes gros yeux !
Merci de vos luminosités
Y




Avatar
YannX
Merci Ph. de ce rappel à l'ordre
Désolé si j'ai parfois le réflexe Net..
qui préfère l'ordre chronologique.
Ce qui me facilite la narration des symptômes
ou pistes que j'entrevois.

Par contre l'ordre recommandé anti-chronologique
rend effectivement plus facile la consultation rapide avec OE...
je le constate depuis une semaine.

Bon WE
YannX


"Philippe.R" a écrit dans le message de
news:%
Bonjour YannX,
Tu veux bien, stp, ou bien répondre au dessus de la question, comme il en


usage à priori ici, où bien
n'en reprendre que le strict essentiel, de manière à rendre la réponse


plus rapidement visible ?
Ce serait bien agréable à un grand nombre d'habitués ;o)))
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"YannX" a écrit dans le message de news:



>
> "YannX" a écrit dans le message de
> news:
>> Bnjr a tous,
>>
>> J'accède a un graphe Excel créé par VB,
>> donc en chargeant d'abord mes valeurs dans une feuille.
>> Mais ce n'est pas de l'aspect graphique dont je m'inquiète..
>>
>> Je viens de remarquer (tardivement ;-), que mes valeurs
>> écrites dans la MSHFlexGrid avec un point décimal,
>> correctement calculées avec VB,
>> correctement enregistrées sous .MDB en DAO
>> sont transmises à Excel en remplacant le point décimal
>> (uniquement dans le cas de la colonne n°1 -en plus- les autres sont OK)
>> par un espace (devenu séparateur de milliers) ! ! ! ! ! ! !
>>
>> Et cela m'est confirmé par l'examen du format de cellule d'XL !
>>
>> recapitulatif des instructions VB utilisées :
>> - charger dans la MSFlexGrid : Form.grd_Pnts.TextMatrix(i, j) > > Format(i
>> * j + Rnd(4#), "000.0000")
>> - ecriture DAO : tPoints!val = .TextMatrix(i,j)
>> - ecriture dans Excel: .Range("C" & j + 1).Value mGridO.TextMatrix(j,
> 1)
>> le plus bizarre est que cette instruction traite correctement
>> la colonne 0, mal la colonne 1 (qui contiennent toutes 2 des
>> décimaux...)
>>
>> J'ai peut-etre une piste : l'entete de la colonne "défectueuse"
>> est rempli par un string de contenu exact : xRange.Value = " Point


Eff."
>> Mais mes tentatives en changeant cet entete ne changent pas l'erreur !
>>
>> Question : ou est mon bug ! ! ! ! ! ! ! !
>>
>> Une info supplémentaire : pour récupérer le caractère décimal,
>> j'utilise dans le KeyPressed de mon MSHFlexGrid :
>> SymboleDecimal = Format(0, ".") ' astuce pour récuperer le bon
>> caractère décimal
>>
>> Alors là ! Doit y avoir un piège dans un coin,
>> mais pouvez-vous m'indiquer une piste ?
>>
>> Bouc -> chèvre -> vache......Perette Merci
>> Y
>>
>>
> Pas de doute : deux instructions identiques : ici j=3
> jXL.Range("b" & j + 1).Value = mGridO.TextMatrix(j, 0) ' = > > Format(v,"00.00") = "0,23"
> -> XL.XP 2003 m'indique une coche verte et
> "le montant de cette cellule est au format texte " d'ailleurs
> cadré a gauche !
> jXL.Range("C" & j + 1).Value = mGridO.TextMatrix(j, 1) ' = > > Format(v,"00.000") = "4,458" -> confirmé par Debug.Print


v+3 ->7,458
> Cette instruction bascule la cellule visée avec le format "Nombre 0


décimal
> ..... coche le séparateur de miliers !
> [E3] Ã+3 => 4461
>
> Seule une case B8 apparait en format numérique, étant rempli avec un


nombre
> commencant par un chiffre significatif !
>
>
> J'ai aussi teste avec une version XL 2000 ;
> Mes valeurs 0,23 sont écrites cadréees a GAUCHE -> c'est du texte !
> Qd je saisis à la main 0,23 -> cela va a droite
> Qd je saisis à la main 0.23 -> cela va a gauche
>
> Le problème viendrait d'une incohérence entre VB et excel
> concernant le traitement du séparateur décimal ?
>
> Que n'ai-je pas vu avec mes gros yeux !
> Merci de vos luminosités
> Y
>
>



Avatar
Philippe.R
"YannX" a écrit dans le message de news:
Merci Ph. de ce rappel à l'ordre



C'était avec plaisir !
;o)))))