OVH Cloud OVH Cloud

format de date

7 réponses
Avatar
Géo
Hello !

j'ai un programme en VB qui me "remplit" une feuille excel.
Conctretememt une routine me remplit une feuille "data" et depuis-la
j'ai des liaisons qui pointes sur les "vraies" cellules pour affichage.

En fin de compte cette feuille n'est jamais enregistree, le programme VB
l'ouvre, injecte les valeur, affiche la feuille de presentation.
On peut la consulter, l'imprimer mais pas l'enregistre (en lecture seule)

Mon probeleme est que certaines de ces valeurs sont de forme "7/2" ou
"2/11" qu'excel me transforme aimablement en 7 fevrier et 2 novembre.

Meme si j'ouvre le fichier , mets le format a "texte" ou "general",
j'enregistre --> la fois suivante ou je passe mes donnees je me retrouve
avec mes 2 fevrier et 7 novembre.


Y'a pa sun moyen de bloquer ce format de chiffre ? je ne comprends pas
pourquoi excel s'efforce de me changer le format !!

Une idee


Amicalement

Géo

7 réponses

Avatar
papou
Bonjour
Et comment sont alimentées tes données ?
Cordialement
Pascal
"Géo" a écrit dans le message de
news:
Hello !

j'ai un programme en VB qui me "remplit" une feuille excel.
Conctretememt une routine me remplit une feuille "data" et depuis-la
j'ai des liaisons qui pointes sur les "vraies" cellules pour affichage.

En fin de compte cette feuille n'est jamais enregistree, le programme VB
l'ouvre, injecte les valeur, affiche la feuille de presentation.
On peut la consulter, l'imprimer mais pas l'enregistre (en lecture seule)

Mon probeleme est que certaines de ces valeurs sont de forme "7/2" ou
"2/11" qu'excel me transforme aimablement en 7 fevrier et 2 novembre.

Meme si j'ouvre le fichier , mets le format a "texte" ou "general",
j'enregistre --> la fois suivante ou je passe mes donnees je me retrouve
avec mes 2 fevrier et 7 novembre.


Y'a pa sun moyen de bloquer ce format de chiffre ? je ne comprends pas
pourquoi excel s'efforce de me changer le format !!

Une idee


Amicalement

Géo



Avatar
ru-th
Salut

une possibilité, rajouter le format local avant
[a1].NumberFormatLocal = "??/??"
[a1] = 7 / 11

a+
rural thierry
"Géo" a écrit dans le message de news:

Hello !

j'ai un programme en VB qui me "remplit" une feuille excel.
Conctretememt une routine me remplit une feuille "data" et depuis-la
j'ai des liaisons qui pointes sur les "vraies" cellules pour affichage.

En fin de compte cette feuille n'est jamais enregistree, le programme VB
l'ouvre, injecte les valeur, affiche la feuille de presentation.
On peut la consulter, l'imprimer mais pas l'enregistre (en lecture seule)

Mon probeleme est que certaines de ces valeurs sont de forme "7/2" ou
"2/11" qu'excel me transforme aimablement en 7 fevrier et 2 novembre.

Meme si j'ouvre le fichier , mets le format a "texte" ou "general",
j'enregistre --> la fois suivante ou je passe mes donnees je me retrouve
avec mes 2 fevrier et 7 novembre.


Y'a pa sun moyen de bloquer ce format de chiffre ? je ne comprends pas
pourquoi excel s'efforce de me changer le format !!

Une idee


Amicalement

Géo



Avatar
michdenis
Bonjour Géo,

Si tu donnes à tes cellules un format "Texte" avant d'insérer tes données, cela doit fonctionner. L'inverse n'est pas
vrai. Comme excel est "intelligent", il tente de décoder l'information que la cellule contient et il interprète "2/7"
comme un format de date possible qu'il s'empresse de transformer en valeur numérique (affichage date). Même si tu
appliques un format "Texte" subséquemment, tu vas le faire à la valeur numérique pas à la valeur originale insérée dans
la cellule.

Range("A4").NumberFormat = "@"
Range("A4").NumberFormat = "2/7"


Salutations!







"Géo" a écrit dans le message de news:
Hello !

j'ai un programme en VB qui me "remplit" une feuille excel.
Conctretememt une routine me remplit une feuille "data" et depuis-la
j'ai des liaisons qui pointes sur les "vraies" cellules pour affichage.

En fin de compte cette feuille n'est jamais enregistree, le programme VB
l'ouvre, injecte les valeur, affiche la feuille de presentation.
On peut la consulter, l'imprimer mais pas l'enregistre (en lecture seule)

Mon probeleme est que certaines de ces valeurs sont de forme "7/2" ou
"2/11" qu'excel me transforme aimablement en 7 fevrier et 2 novembre.

Meme si j'ouvre le fichier , mets le format a "texte" ou "general",
j'enregistre --> la fois suivante ou je passe mes donnees je me retrouve
avec mes 2 fevrier et 7 novembre.


Y'a pa sun moyen de bloquer ce format de chiffre ? je ne comprends pas
pourquoi excel s'efforce de me changer le format !!

Une idee


Amicalement

Géo
Avatar
Géo
michdenis a écrit:
Bonjour Géo,

Si tu donnes à tes cellules un format "Texte" avant d'insérer tes données, cela doit fonctionner. L'inverse n'est pas
vrai. Comme excel est "intelligent", il tente de décoder l'information que la cellule contient et il interprète "2/7"
comme un format de date possible qu'il s'empresse de transformer en valeur numérique (affichage date). Même si tu
appliques un format "Texte" subséquemment, tu vas le faire à la valeur numérique pas à la valeur originale insérée dans
la cellule.

Range("A4").NumberFormat = "@"
Range("A4").NumberFormat = "2/7"


Salutations!



le probleme est que ... y'a toujours un probleme :-) ... c'est que je ne
suis pas maitre de mes donnees , cela peut etre 2/7 et la fois d'apres 2
ou HS ... cela depend de l'exploitation des unites (c'est des donnees
industrielles)

Pour repondre a Papou, mes donnees sont injectee par une boucle depuis VB :
'*********************************************************************
' J'ai mes donnees dans un recordset : rs

Dim X As Object
Set X = CreateObject("Excel.application")

X.Workbooks.Open FileName:=fichier, ReadOnly:=True
X.sheets("Datas").Activate

For j = 0 To rs.RecordCount - 1
colonne = 3
For i = 0 To rs.Fields.Count - 1
' je boucle sur les champs
X.cells(ligne, colonne) = rs.Fields(i).Value
colonne = colonne + 1
Next
rs.MoveNext
ligne = ligne + 1
Next
X.sheets("RQ1").Activate
X.Visible = True

Set X = Nothing
Set rs = Nothing
'***********************************************************************

et c'est dans une de ces donnees qui peut contenir des valeurs type 7/2

Je voudrais simplement que excel ne soit pas intellingent et ne prenne
pas le dessus sur le type de donnees ...


Amiclement

Géo

Avatar
michdenis
Bonjour Géo,

Tu peux essayer ceci ... j'ai seulement ajouté un petit test pour savoir si le contenu du champ contient un "/" .
Évidemment je suppose que ce symbole n'est pas présent dans les autres types de données de ton recordset comme des
"Dates".


Dim X As Object, D As Variant
Set X = CreateObject("Excel.application")
X.Workbooks.Open Filename:=fichier, ReadOnly:=True
X.Sheets("Datas").Activate

For j = 0 To rs.RecordCount - 1
colonne = 3
For i = 0 To rs.Fields.Count - 1
' je boucle sur les champs
D = rs.Fields(i).Value
If InStr(1, D, "/", vbTextCompare) <> 0 Then
X.Cells(ligne, colonne).NumberFormat = "@"
X.Cells(ligne, colonne) = D
Else
X.Cells(ligne, colonne) = D
colonne = colonne + 1
End If
Next
rs.MoveNext
ligne = ligne + 1
Next
X.Sheets("RQ1").Activate
X.Visible = True

Set X = Nothing
Set rs = Nothing


Salutations!



"Géo" a écrit dans le message de news:
michdenis a écrit:
Bonjour Géo,

Si tu donnes à tes cellules un format "Texte" avant d'insérer tes données, cela doit fonctionner. L'inverse n'est pas
vrai. Comme excel est "intelligent", il tente de décoder l'information que la cellule contient et il interprète "2/7"
comme un format de date possible qu'il s'empresse de transformer en valeur numérique (affichage date). Même si tu
appliques un format "Texte" subséquemment, tu vas le faire à la valeur numérique pas à la valeur originale insérée
dans
la cellule.

Range("A4").NumberFormat = "@"
Range("A4").NumberFormat = "2/7"


Salutations!



le probleme est que ... y'a toujours un probleme :-) ... c'est que je ne
suis pas maitre de mes donnees , cela peut etre 2/7 et la fois d'apres 2
ou HS ... cela depend de l'exploitation des unites (c'est des donnees
industrielles)

Pour repondre a Papou, mes donnees sont injectee par une boucle depuis VB :
'*********************************************************************
' J'ai mes donnees dans un recordset : rs

Dim X As Object
Set X = CreateObject("Excel.application")

X.Workbooks.Open FileName:=fichier, ReadOnly:=True
X.sheets("Datas").Activate

For j = 0 To rs.RecordCount - 1
colonne = 3
For i = 0 To rs.Fields.Count - 1
' je boucle sur les champs
X.cells(ligne, colonne) = rs.Fields(i).Value
colonne = colonne + 1
Next
rs.MoveNext
ligne = ligne + 1
Next
X.sheets("RQ1").Activate
X.Visible = True

Set X = Nothing
Set rs = Nothing
'***********************************************************************

et c'est dans une de ces donnees qui peut contenir des valeurs type 7/2

Je voudrais simplement que excel ne soit pas intellingent et ne prenne
pas le dessus sur le type de donnees ...


Amiclement

Géo

Avatar
Géo
michdenis a écrit:
Bonjour Géo,

Tu peux essayer ceci ... j'ai seulement ajouté un petit test pour savoir si le contenu du champ contient un "/" .
Évidemment je suppose que ce symbole n'est pas présent dans les autres types de données de ton recordset comme des
"Dates".

....

D = rs.Fields(i).Value
If InStr(1, D, "/", vbTextCompare) <> 0 Then
X.Cells(ligne, colonne).NumberFormat = "@"
X.Cells(ligne, colonne) = D
Else
X.Cells(ligne, colonne) = D
colonne = colonne + 1
End If




Cela fais une condition de plus ... mais je croix que je ne vais pas y
couper :-)
Des fois on cherche plus complique que ce n'est !

Merci


Géo


PS : N'impeche qu'y m'enerve Excel des jours :-) pour une fois qu'on lui
demanderai de ne pas s'ccuper de ce qu'on lui injecte ...

Avatar
Modeste
Bonsour ® Géo qui n'est pas de la douce Touraine,
-----Message d'origine-----
une possibilité, rajouter le format local avant
[a1].NumberFormatLocal = "??/??"
[a1] = 7 / 11
rural thierry


oui thierry mais si tu rentres 7/2
tu obtiens : 3 1/2 ;o)))

tout dépend de l'usage ultérieur ?????
si l'on veut garder visuellment en A1 : 7/2
il suffit d'ajouter une simple quote devant la
fraction ....
A1='7/2
cela sera bien sur un texte inutilisable en calcul.... :-(
ex :B1= 1*A1 renvoie 38024 soit 7/2/2004

--------------------------
pour pouvoir faire des calculs
il faudra utiliser une fonction (chère à PFFFFF..)
telle que ;o)))))

Function EvaluatePffffff(target)
If Not IsNumeric(target) Then
EvaluatePffffff = Evaluate("" & target & "")
Else
EvaluatePffffff = 1 * target ' Pffffff....;o))
End If
End Function

ex:

'7/25 0,28 =EvaluatePffffff(A1)
'7/14 0,5 etc....
'1/3 0,333333333
1/3 0,333333333
'7/18 0,388888889
7/18 0,388888889
'2/11 0,181818182
2/11 0,181818182

® © ¿ (ki'm' cherche ???)

"Géo" a écrit dans le message de
news:


Hello !

j'ai un programme en VB qui me "remplit" une feuille
excel.


Conctretememt une routine me remplit une
feuille "data" et depuis-la


j'ai des liaisons qui pointes sur les "vraies"
cellules pour affichage.



En fin de compte cette feuille n'est jamais
enregistree, le programme VB


l'ouvre, injecte les valeur, affiche la feuille de
presentation.


On peut la consulter, l'imprimer mais pas l'enregistre
(en lecture seule)



Mon probeleme est que certaines de ces valeurs sont de
forme "7/2" ou


"2/11" qu'excel me transforme aimablement en 7 fevrier
et 2 novembre.



Meme si j'ouvre le fichier , mets le format a "texte"
ou "general",


j'enregistre --> la fois suivante ou je passe mes
donnees je me retrouve


avec mes 2 fevrier et 7 novembre.


Y'a pa sun moyen de bloquer ce format de chiffre ? je
ne comprends pas


pourquoi excel s'efforce de me changer le format !!

Une idee


Amicalement

Géo




.