Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/08/2011, 17h35   #1
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Par défaut Importer fichier texte avec autre extension --> Schema.ini

Bonjour,

Je souhaite réaliser une connexion ADO vers un fichier texte qui n'a pas l'extension .txt mais .dat


Il me semble que c'est possible en utilisant le fichier schema.ini
Code :
1
2
3
[MonFichier.dat]
Format=Delimited(|)
ColNameHeader=False

Mais ça ne marche pas.. il dit que le fichier est en lecture seul... et donc qu'il n'y accède pas



Code :
1
2
3
4
5
6
7
    'Mise en place de la connexion avec le fichier
    Set Conn = New ADODB.Connection
        With Conn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Chemin & ";Extended Properties='text'" 'fait référence au fichier Schema.ini
            .Open
        End With

Dès lors que je change le nom du fichier en .txt et que je le modifie aussi dans le fichier Schema.ini, ça marche directement.


Quelqu'un peut-il m'aider ?

Merci

A+
Dams'
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 22h42   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Bonjour,

C'est effectivement un problème connu. Pourquoi tu ne le renommes pas le temps de faire la manip ?

Des fois le plus simple est le meilleur.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 23h40   #3
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Ce serait trop facile :-)
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h53   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Peux-tu en dire plus ? Qu'est-ce qui t'empêche de renommer le fichier le temps de la manip ?
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h02   #5
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
je suis d'accord rien ne m’empêche de renommer les fichiers.
mais je souhaitais trouver une solution en gardant l'extension du fichier, car il me semble que c'est possible.

Dans la base de registre, par exemple il y'a cet élément :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text
avec la chaine Extensions qui a pour valeur txt,csv,tab,asc

J'ai rajouté txt,csv,tab,asc,dat mais, cela ne change rien non plus.
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 10h24   #6
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Récemment j'ai pas mal bosser sur le sujet, la bdr j'ai testé aussi, la seule solution trouvée c'est de nommer correctement le fichier.

Maintenant je suis peut-être passé à coté de quelque chose.

Bonne recherche !
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h53   #7
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 474
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 474
Points : 7 560
Points : 7 560
Si tu ne veux pas renommer le fichier, une astuce consiste à le copier avec la nouvelle extention puis une fois l'importation faite de détruire la copie.

Je suis d'accord qu'il serait plus éléguant de pouvoir utiliser la bonne extention tout de suite mais mes propres tests sont arrivés à la même conclusion que loufab : le schema.ini est plus une source de problèmes que de solutions.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/08/2011, 20h17   #8
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
On ne peut pas dire que c'est plus une source de problèmes que de solutions. C'est un excellent moyen pour controler l'intégralité de la structure d'un fichier texte.

C'est le seul moyen efficace que nous avons trouvé à mon boulot pour régler certains problèmes d'import/export de fichier texte.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 20h24   #9
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 474
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 474
Points : 7 560
Points : 7 560
OK. désolé, je me suis laissé enthousiasmé :-).

Personnellement, les fichiers textes, je préfères les traiter par code VBA. Je trouves que cela me donne plus de contrôle sur la manipulation des données et je n'ai aucun problème d'extention ;-).

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 15h14   #10
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Citation:
Envoyé par marot_r Voir le message
OK. désolé, je me suis laissé enthousiasmé :-).

Personnellement, les fichiers textes, je préfères les traiter par code VBA. Je trouves que cela me donne plus de contrôle sur la manipulation des données et je n'ai aucun problème d'extention ;-).

A+

OK ça m'intéresse aussi marot_r... Quelle méthode utilises-tu alors en VBA ?
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 15h35   #11
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 474
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 474
Points : 7 560
Points : 7 560
Ici un exemple de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
dim numFic as integer:numFic=freefile()
dim nomFic as string:nomFic="x:\TonChemin\tonFichier.csv"
dim cFic as variant
dim i as long
dim lf as string
dim db as dao.database:set db=currentdb
dim r as dao.database:set r=db.openRecordset("NomTaTableDestinatrice")
dim f as dao.field
 
open nomFic for input as #numfic
 
do while not eof(numFic) 'Lit le fichier jsuqu'à sa fin
   line input #numfic, lf 'Lit une ligne du fichier
   cFic=split(lf,"Ici ton séparateutr") 'Découpe ta ligne en champs
 
   r.addnew
 
   for i=lbound(cFic) to ubound(cFic)
       set f=r.fields(i)
 
       'Converti la donnée lue selon le type du champ
       select case f.fieldType
          case dbText
              f=mid(cFic(i),2,len(cfic)-2) 'Supprime le guillet au début et à la fin
 
          case dbLong, dbInteger, dbSingle, dbDouble
             f=val(cFic(i))
 
          case dbDate
             f=cdate(cFic(i))
 
          case else
             error 5
 
       end select                    
 
   next i
 
   r.update
loop
 
r.close:set r=nothing
set db=nothing
close #numfic
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h18.


 
 
 
 
Partenaires

Hébergement Web