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)))))