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???
Probleme avec Input pour les codes postaux...
Modérateur : Vilains modOOs
Règles du forum
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 !
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...
OOo 2.0.3 - Windows XP Pro SP2
-
Dude
- IdOOle de la suite

- Messages : 26195
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
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
Améliorez AOO et votez pour les issues
-
bm92
- ManitOOu

- Messages : 2562
- Inscription : 26 nov. 2005 13:42
Re: Probleme avec Input pour les codes postaux...
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 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!!!
-
nalk
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 21 juil. 2006 03:47
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...
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...)?
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
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
-
cris59
- Membre enthOOusiaste

- Messages : 482
- Inscription : 20 mars 2006 15:15
- Localisation : Paris
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
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
& Debian avec OOo2.2
-
nalk
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 21 juil. 2006 03:47
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