Probleme avec Input pour les codes postaux...

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
nalk
Fraîchement OOthentifié
Messages : 4
Inscription : 21 juil. 2006 03:47

Probleme avec Input pour les codes postaux...

Message par nalk »

Bonjour,

J'ai besoin d'importer une liste d'adresses dans une base de donnée depuit un fichier, ma macro est faite et fonctionne trés bien a un petit detail pres...
Je dois recuperer les 2 parties du code postal (Canada, par exemple H4B 2W4) dans 2 champs different, jusque la sa va, le probleme est que quand input lis dans le fichier une partie du code postal compotant un E central il me l'interprete comme un nombre et impossible de le recuperer au format texte!!! (par exemple 1E5 est lu par input dans le fichier comme etant 100000)

Quelqun verrai t-il une solution à ce probleme svp???
OOo 2.0.3 - Windows XP Pro SP2
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Message par Dude »

Il faut forcer la cellule en tant que texte en utilisant l'apostrophe au départ.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: Probleme avec Input pour les codes postaux...

Message par bm92 »

nalk a écrit :J'ai besoin d'importer une liste d'adresses dans une base de donnée depuit un fichier, ma macro est faite et fonctionne trés bien a un petit detail pres...
Je dois recuperer les 2 parties du code postal (Canada, par exemple H4B 2W4) dans 2 champs different, jusque la sa va, le probleme est que quand input lis dans le fichier une partie du code postal compotant un E central il me l'interprete comme un nombre et impossible de le recuperer au format texte!!!
Donne un peu plus de détails. Quel est le format du fichier: csv ? texte ? binaire ? Comment distingue-tu les champs? Fournis un extrait significatif de ta macro. Est-ce qu'elle importe dans Calc ou est-ce qu'elle lit le fichier ?
nalk
Fraîchement OOthentifié
Messages : 4
Inscription : 21 juil. 2006 03:47

Message par nalk »

Les données sont dans un fichier texte dont les champs sont séparés par des virgules, la distance entre les champs varies car le fichier source était a l'origine un document texte comportant d'autres informations dont je n'ai pas besoin (espaces remplacés par des , et ' supprimés du fichier). J'utilise des mot clef pour trouver mes champs (ce qui est entre "code:" et "QC" par exemple) puis je l'enregisre dans base avec une requete SQL.

La recuperation des champs est OK ainsi que la requete SQL. Le probleme n'est pas dans la declaration de la requete SQL mais dans le fait que la commande INPUT interprete le nombre reçut...

Code : Tout sélectionner

DIM nFile as integer
DIM file, tmp as string
DIM bEOF as boolean

nFile = FreeFile
file="C:\adresses.txt"
Open file for input as #nfile

while (bEOF = FALSE)
       INPUT #nfile ,tmp
       Print tmp 
       'ici recherche des champs a conserver, mais cela fonctionne ce n'est pas le pb
      bEOF = EOF(nfile) 
WEnd
CLOSE #nfile
Si la valeur lu par INPUT dans le fichier est 1E5 par exemple il me stockera la valeure numerique correspondant a 1E5 dans la variable tmp (à savoir 100000) O_o

Le probleme est donc dés la recuperation des données dans le fichier par INPUT, y a t-il un moyen de dire a INPUT de ne *pas* interpreter le nombre mais de simplement retourner la chaine de caractere qu'il a lu (ce qui est tout ce que je lui demande...) ou encore une autre commande qui elle ne retournerait que la chaine de caractere (ou toute autre solution serait la bienvenue...)?
OOo 2.0.3 - Windows XP Pro SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

J'ai créé un fichier txt avec des valeurs séparées par des virgules et essayé ton code...

Il renvoie bien 1E5 lorsque tmp est déclaré en type String !

Et il est interprété si tmp est déclaré en type Long ou Double ou Variant ...


cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2
nalk
Fraîchement OOthentifié
Messages : 4
Inscription : 21 juil. 2006 03:47

Message par nalk »

Pourtant je t'assure qu'il est interpreté alors que la variable est déclarer en type string... Au final j'ai retraduit la valeur faute d'une meilleur solution :? , dans l'ensemble sa a l'air d'aller avec sa...

Code : Tout sélectionner

dim nLen as integer

nLen = len(tmp)
if(nLen > 3) Then
  nLen = nLen - 1
  tmp = Left(tmp,1)&"E"&nLen
End if
OOo 2.0.3 - Windows XP Pro SP2