import de tous les fichiers *.csv d'un repertoire dans un table access

Le
sleg
BOnjour,

j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.

merci de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #19854991
sleg a écrit :
BOnjour,

j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.

merci de votre aide.



Salut,
Il faut parcourir le dossier qui contient les fichiers CSV
Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
temporaire puis par un sql tu ajoute le contenu de cette table dans la
table définitive.
Tu libères la table temporaire et tu passes au fichier suivant.

Sub Transfert()

Dim rep,Dossier, Nom_Tbl As String
'obtient le premier fichier ou répertoire qui est dans "c:"
Dossier="c:Mondossier"
rep = Dir(Dossier & "*.CSV", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Tbl = Left(rep, Len(rep) - 4)
'On attache le fichier trouvé
DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
'On Ajoute les données dans la table de destination
DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ2, Champ3,
Champ4 )
SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
FROM [" & Nom_Tbl & "];"
'On libère le fichier
docmd.DeleteObject acTable,Nom_Tbl
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
Fin:
End Sub

Voilà vite fait ...
A tester
@+
sleg
Le #19857901
BOnjour,

grand merci pour ton aide mais j'ai oublié de signalé que je ne
connias rien au sql et pas grand chose a acces, donc je te presente
mon bdd

une table ==> temps ( utile pour ta requete )
une table ==> data( ma table definitive )
repertoire contenant mais fichier *.csv ==> D:batchfiles

j'ai essayé de modifier le code et bien ça marche po alors merci de
ton aide.



On 30 juil, 16:25, Fabien
sleg a écrit :> BOnjour,

> j'aimerais savoir s'il est possible d'importer dans un table existante
> dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
> faire cela. je ne pourrais pas passer par un fichier excel car le
> nombre de ligne total de tous mes fichiers csv depasse le nbr max
> d'une feuille.

> merci de votre aide.

Salut,
Il faut parcourir le dossier qui contient les fichiers CSV
Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
temporaire puis par un sql tu ajoute le contenu de cette table dans la
table définitive.
Tu libères la table temporaire et tu passes au fichier suivant.

Sub Transfert()

        Dim rep,Dossier, Nom_Tbl As String
'obtient le premier fichier ou répertoire qui est dans "c:"
Dossier="c:Mondossier"
rep = Dir(Dossier & "*.CSV", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Do While (rep <> "")
     'teste si c'est un fichier ou un répertoire
     If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Th en
         'MsgBox "Répertoire " & rep
     Else
         Nom_Tbl = Left(rep, Len(rep) - 4)
        'On attache le fichier trouvé
        DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
        'On Ajoute les données dans la table de destination
         DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ2, Champ3,
Champ4 )
SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
FROM [" & Nom_Tbl & "];"
       'On libère le fichier
       docmd.DeleteObject acTable,Nom_Tbl
     End If
Suite:
     'passe à l'élément suivant
     rep = Dir
Loop
GoTo Fin
Erreur:
Fin:
End Sub

Voilà vite fait ...
A tester
@+


Fabien
Le #19857931
sleg a écrit :
BOnjour,

grand merci pour ton aide mais j'ai oublié de signalé que je ne
connias rien au sql et pas grand chose a acces, donc je te presente
mon bdd

une table ==> temps ( utile pour ta requete )
une table ==> data( ma table definitive )
repertoire contenant mais fichier *.csv ==> D:batchfiles

j'ai essayé de modifier le code et bien ça marche po alors merci de
ton aide.



On 30 juil, 16:25, Fabien
sleg a écrit :> BOnjour,

j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.
merci de votre aide.


Salut,
Il faut parcourir le dossier qui contient les fichiers CSV
Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
temporaire puis par un sql tu ajoute le contenu de cette table dans la
table définitive.
Tu libères la table temporaire et tu passes au fichier suivant.

Sub Transfert()

Dim rep,Dossier, Nom_Tbl As String
'obtient le premier fichier ou répertoire qui est dans "c:"
Dossier="c:Mondossier"
rep = Dir(Dossier & "*.CSV", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Tbl = Left(rep, Len(rep) - 4)
'On attache le fichier trouvé
DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
'On Ajoute les données dans la table de destination
DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ2, Champ3,
Champ4 )
SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
FROM [" & Nom_Tbl & "];"
'On libère le fichier
docmd.DeleteObject acTable,Nom_Tbl
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
Fin:
End Sub

Voilà vite fait ...
A tester
@+





Salut,
Qu'est ce qui ne marche pô ?
J'aurais besoin de quelques précisions pour affiner le code :
- Nom des champs de la table de destination et de la table source.
- Leurs correspondances
- J'ai parié sur le fait que dans tes fichiers csv la premiére ligne
contenait le noms des champs. Est ce correct?
- Faut il faire des conversions de type ?

@+
sleg
Le #19858031
juste une petite demande parce que je suis un grand débutant en acces
donc comment faire pour avec le code ,

je le met dans un module et je le lance comment via un formulaire ?

le fichier contient bien le nom des champs :
application group
job
description
status
date_debut
horaire_debut
date_fin
horaire_fin

c quoi une "conversions de type ?" ?

merci de ton aide

exemple de fichier a importer : http://cjoint.com/?hFiNtBFIKi
ma bdd : http://cjoint.com/?hFiNWqV72Z


On 31 juil, 08:08, Fabien
sleg a écrit :



> BOnjour,

> grand merci pour ton aide mais j'ai oublié de signalé que je ne
> connias rien au sql et pas grand chose a acces, donc je te presente
> mon bdd

> une table ==> temps ( utile pour ta requete )
> une table ==> data( ma table definitive )
> repertoire contenant mais fichier *.csv ==> D:batchfiles

> j'ai essayé de modifier le code et bien ça marche po alors merci de
> ton aide.

> On 30 juil, 16:25, Fabien >> sleg a écrit :> BOnjour,

>>> j'aimerais savoir s'il est possible d'importer dans un table existant e
>>> dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
>>> faire cela. je ne pourrais pas passer par un fichier excel car le
>>> nombre de ligne total de tous mes fichiers csv depasse le nbr max
>>> d'une feuille.
>>> merci de votre aide.
>> Salut,
>> Il faut parcourir le dossier qui contient les fichiers CSV
>> Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
>> temporaire puis par un sql tu ajoute le contenu de cette table dans la
>> table définitive.
>> Tu libères la table temporaire et tu passes au fichier suivant.

>> Sub Transfert()

>>         Dim rep,Dossier, Nom_Tbl As String
>> 'obtient le premier fichier ou répertoire qui est dans "c:"
>> Dossier="c:Mondossier"
>> rep = Dir(Dossier & "*.CSV", vbDirectory)
>> 'boucle tant que le répertoire n'a pas été entièrement parcour u
>> On Error GoTo Erreur
>> Do While (rep <> "")
>>      'teste si c'est un fichier ou un répertoire
>>      If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
>>          'MsgBox "Répertoire " & rep
>>      Else
>>          Nom_Tbl = Left(rep, Len(rep) - 4)
>>         'On attache le fichier trouvé
>>         DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & r ep, True
>>         'On Ajoute les données dans la table de destination
>>          DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ 2, Champ3,
>> Champ4 )
>> SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Ex pr4
>> FROM [" & Nom_Tbl & "];"
>>        'On libère le fichier
>>        docmd.DeleteObject acTable,Nom_Tbl
>>      End If
>> Suite:
>>      'passe à l'élément suivant
>>      rep = Dir
>> Loop
>> GoTo Fin
>> Erreur:
>> Fin:
>> End Sub

>> Voilà vite fait ...
>> A tester
>> @+

Salut,
Qu'est ce qui ne marche pô ?
J'aurais besoin de quelques précisions pour affiner le code :
- Nom des champs de la table de destination et de la table source.
- Leurs correspondances
- J'ai parié sur le fait que dans tes fichiers csv la premiére ligne
contenait le noms des champs. Est ce correct?
- Faut il faire des conversions de type ?

@+- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Fabien
Le #19858301
sleg a écrit :
juste une petite demande parce que je suis un grand débutant en acces
donc comment faire pour avec le code ,

je le met dans un module et je le lance comment via un formulaire ?

le fichier contient bien le nom des champs :
application group
job
description
status
date_debut
horaire_debut
date_fin
horaire_fin

c quoi une "conversions de type ?" ?

merci de ton aide

exemple de fichier a importer : http://cjoint.com/?hFiNtBFIKi
ma bdd : http://cjoint.com/?hFiNWqV72Z


On 31 juil, 08:08, Fabien
sleg a écrit :



BOnjour,
grand merci pour ton aide mais j'ai oublié de signalé que je ne
connias rien au sql et pas grand chose a acces, donc je te presente
mon bdd
une table ==> temps ( utile pour ta requete )
une table ==> data( ma table definitive )
repertoire contenant mais fichier *.csv ==> D:batchfiles
j'ai essayé de modifier le code et bien ça marche po alors merci de
ton aide.
On 30 juil, 16:25, Fabien
sleg a écrit :> BOnjour,
j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.
merci de votre aide.


Salut,
Il faut parcourir le dossier qui contient les fichiers CSV
Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
temporaire puis par un sql tu ajoute le contenu de cette table dans la
table définitive.
Tu libères la table temporaire et tu passes au fichier suivant.
Sub Transfert()
Dim rep,Dossier, Nom_Tbl As String
'obtient le premier fichier ou répertoire qui est dans "c:"
Dossier="c:Mondossier"
rep = Dir(Dossier & "*.CSV", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Tbl = Left(rep, Len(rep) - 4)
'On attache le fichier trouvé
DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
'On Ajoute les données dans la table de destination
DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ2, Champ3,
Champ4 )
SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
FROM [" & Nom_Tbl & "];"
'On libère le fichier
docmd.DeleteObject acTable,Nom_Tbl
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
Fin:
End Sub
Voilà vite fait ...
A tester
@+




Salut,
Qu'est ce qui ne marche pô ?
J'aurais besoin de quelques précisions pour affiner le code :
- Nom des champs de la table de destination et de la table source.
- Leurs correspondances
- J'ai parié sur le fait que dans tes fichiers csv la premiére ligne
contenait le noms des champs. Est ce correct?
- Faut il faire des conversions de type ?

@+- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -





Re
Voici ta base avec quelques correction ;-) : http://cjoint.com/?hFjL2eFEbf

Dans la structure de la table DATA : Date_fin -> Date/heure et
Heure_debut -> Texte

Dans le module Import
Dossier="C:NomDossier" : il maquait le à la fin
Pour ce qui est de la conversion : voir la fonction convertit_date() qui
convertit en type et format date les champs texte issus de ton fichier
import

Pour l'execution : il suffit d'ouvrir le module, de se mettre dans la
sub et utiliser la touche de fonction F5.

@+
Oups : j'ai laissé en commentaire ton Dossier="d:......
Pense a supprimer mon Dossier="c:access" et a dé-commenter ton
Dossier="D:..."
;-)
sleg
Le #19858491
super vraiment grand merci de aide.

passe un bon week end.



On 31 juil, 09:44, Fabien
sleg a écrit :



> juste une petite demande parce que je suis un grand débutant en acces
> donc comment faire pour avec le code ,

> je le met dans un module et je le lance comment via un formulaire ?

> le fichier contient bien le nom des champs :
> application        group
> job
> description
> status
> date_debut
> horaire_debut
> date_fin
> horaire_fin

> c quoi une "conversions de type ?" ?

> merci de ton aide

> exemple de fichier a importer :http://cjoint.com/?hFiNtBFIKi
> ma bdd :http://cjoint.com/?hFiNWqV72Z

> On 31 juil, 08:08, Fabien >> sleg a écrit :

>>> BOnjour,
>>> grand merci pour ton aide mais j'ai oublié de signalé que je ne
>>> connias rien au sql et pas grand chose a acces, donc je te presente
>>> mon bdd
>>> une table ==> temps ( utile pour ta requete )
>>> une table ==> data( ma table definitive )
>>> repertoire contenant mais fichier *.csv ==> D:batchfiles
>>> j'ai essayé de modifier le code et bien ça marche po alors merci de
>>> ton aide.
>>> On 30 juil, 16:25, Fabien >>>> sleg a écrit :> BOnjour,
>>>>> j'aimerais savoir s'il est possible d'importer dans un table exista nte
>>>>> dans acces tous les fichies *.csv d'un repertoire ? et si oui comme nt
>>>>> faire cela. je ne pourrais pas passer par un fichier excel car le
>>>>> nombre de ligne total de tous mes fichiers csv depasse le nbr max
>>>>> d'une feuille.
>>>>> merci de votre aide.
>>>> Salut,
>>>> Il faut parcourir le dossier qui contient les fichiers CSV
>>>> Pour chaque fichier trouvé, tu fait un lien avec le nom d'une tabl e
>>>> temporaire puis par un sql tu ajoute le contenu de cette table dans la
>>>> table définitive.
>>>> Tu libères la table temporaire et tu passes au fichier suivant.
>>>> Sub Transfert()
>>>>         Dim rep,Dossier, Nom_Tbl As String
>>>> 'obtient le premier fichier ou répertoire qui est dans "c:"
>>>> Dossier="c:Mondossier"
>>>> rep = Dir(Dossier & "*.CSV", vbDirectory)
>>>> 'boucle tant que le répertoire n'a pas été entièrement parco uru
>>>> On Error GoTo Erreur
>>>> Do While (rep <> "")
>>>>      'teste si c'est un fichier ou un répertoire
>>>>      If (GetAttr(Dossier & rep) And vbDirectory) = vbDirecto ry Then
>>>>          'MsgBox "Répertoire " & rep
>>>>      Else
>>>>          Nom_Tbl = Left(rep, Len(rep) - 4)
>>>>         'On attache le fichier trouvé
>>>>         DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
>>>>         'On Ajoute les données dans la table de destinatio n
>>>>          DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Cha mp2, Champ3,
>>>> Champ4 )
>>>> SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
>>>> FROM [" & Nom_Tbl & "];"
>>>>        'On libère le fichier
>>>>        docmd.DeleteObject acTable,Nom_Tbl
>>>>      End If
>>>> Suite:
>>>>      'passe à l'élément suivant
>>>>      rep = Dir
>>>> Loop
>>>> GoTo Fin
>>>> Erreur:
>>>> Fin:
>>>> End Sub
>>>> Voilà vite fait ...
>>>> A tester
>>>> @+
>> Salut,
>> Qu'est ce qui ne marche pô ?
>> J'aurais besoin de quelques précisions pour affiner le code :
>> - Nom des champs de la table de destination et de la table source.
>> - Leurs correspondances
>> - J'ai parié sur le fait que dans tes fichiers csv la premiére lig ne
>> contenait le noms des champs. Est ce correct?
>> - Faut il faire des conversions de type ?

>> @+- Masquer le texte des messages précédents -

>> - Afficher le texte des messages précédents -

Re
Voici ta base avec quelques correction ;-) :    http://cjoint.com/?hF jL2eFEbf

Dans la structure de la table DATA  : Date_fin -> Date/heure et
Heure_debut -> Texte

Dans le module Import
Dossier="C:NomDossier" : il maquait le à la fin
Pour ce qui est de la conversion : voir la fonction convertit_date() qui
convertit en type et format date les champs texte issus de ton fichier
import

Pour l'execution : il suffit d'ouvrir le module, de se mettre dans la
sub et utiliser la touche de fonction F5.

@+
Oups : j'ai laissé en commentaire ton Dossier="d:......
Pense a supprimer mon Dossier="c:access" et a dé-commenter ton
Dossier="D:..."
;-)- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Fabien
Le #19858741
sleg a écrit :
super vraiment grand merci de aide.

passe un bon week end.



On 31 juil, 09:44, Fabien
sleg a écrit :



juste une petite demande parce que je suis un grand débutant en acces
donc comment faire pour avec le code ,
je le met dans un module et je le lance comment via un formulaire ?
le fichier contient bien le nom des champs :
application group
job
description
status
date_debut
horaire_debut
date_fin
horaire_fin
c quoi une "conversions de type ?" ?
merci de ton aide
exemple de fichier a importer :http://cjoint.com/?hFiNtBFIKi
ma bdd :http://cjoint.com/?hFiNWqV72Z
On 31 juil, 08:08, Fabien
sleg a écrit :
BOnjour,
grand merci pour ton aide mais j'ai oublié de signalé que je ne
connias rien au sql et pas grand chose a acces, donc je te presente
mon bdd
une table ==> temps ( utile pour ta requete )
une table ==> data( ma table definitive )
repertoire contenant mais fichier *.csv ==> D:batchfiles
j'ai essayé de modifier le code et bien ça marche po alors merci de
ton aide.
On 30 juil, 16:25, Fabien
sleg a écrit :> BOnjour,
j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.
merci de votre aide.


Salut,
Il faut parcourir le dossier qui contient les fichiers CSV
Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
temporaire puis par un sql tu ajoute le contenu de cette table dans la
table définitive.
Tu libères la table temporaire et tu passes au fichier suivant.
Sub Transfert()
Dim rep,Dossier, Nom_Tbl As String
'obtient le premier fichier ou répertoire qui est dans "c:"
Dossier="c:Mondossier"
rep = Dir(Dossier & "*.CSV", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Tbl = Left(rep, Len(rep) - 4)
'On attache le fichier trouvé
DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
'On Ajoute les données dans la table de destination
DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ2, Champ3,
Champ4 )
SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
FROM [" & Nom_Tbl & "];"
'On libère le fichier
docmd.DeleteObject acTable,Nom_Tbl
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
Fin:
End Sub
Voilà vite fait ...
A tester
@+




Salut,
Qu'est ce qui ne marche pô ?
J'aurais besoin de quelques précisions pour affiner le code :
- Nom des champs de la table de destination et de la table source.
- Leurs correspondances
- J'ai parié sur le fait que dans tes fichiers csv la premiére ligne
contenait le noms des champs. Est ce correct?
- Faut il faire des conversions de type ?
@+- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -




Re
Voici ta base avec quelques correction ;-) : http://cjoint.com/?hFjL2eFEbf

Dans la structure de la table DATA : Date_fin -> Date/heure et
Heure_debut -> Texte

Dans le module Import
Dossier="C:NomDossier" : il maquait le à la fin
Pour ce qui est de la conversion : voir la fonction convertit_date() qui
convertit en type et format date les champs texte issus de ton fichier
import

Pour l'execution : il suffit d'ouvrir le module, de se mettre dans la
sub et utiliser la touche de fonction F5.

@+
Oups : j'ai laissé en commentaire ton Dossier="d:......
Pense a supprimer mon Dossier="c:access" et a dé-commenter ton
Dossier="D:..."
;-)- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -





De rien
@+
Fabien
Le #19860311
sleg a écrit :
super vraiment grand merci de aide.

passe un bon week end.



On 31 juil, 09:44, Fabien
sleg a écrit :



juste une petite demande parce que je suis un grand débutant en acces
donc comment faire pour avec le code ,
je le met dans un module et je le lance comment via un formulaire ?
le fichier contient bien le nom des champs :
application group
job
description
status
date_debut
horaire_debut
date_fin
horaire_fin
c quoi une "conversions de type ?" ?
merci de ton aide
exemple de fichier a importer :http://cjoint.com/?hFiNtBFIKi
ma bdd :http://cjoint.com/?hFiNWqV72Z
On 31 juil, 08:08, Fabien
sleg a écrit :
BOnjour,
grand merci pour ton aide mais j'ai oublié de signalé que je ne
connias rien au sql et pas grand chose a acces, donc je te presente
mon bdd
une table ==> temps ( utile pour ta requete )
une table ==> data( ma table definitive )
repertoire contenant mais fichier *.csv ==> D:batchfiles
j'ai essayé de modifier le code et bien ça marche po alors merci de
ton aide.
On 30 juil, 16:25, Fabien
sleg a écrit :> BOnjour,
j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.
merci de votre aide.


Salut,
Il faut parcourir le dossier qui contient les fichiers CSV
Pour chaque fichier trouvé, tu fait un lien avec le nom d'une table
temporaire puis par un sql tu ajoute le contenu de cette table dans la
table définitive.
Tu libères la table temporaire et tu passes au fichier suivant.
Sub Transfert()
Dim rep,Dossier, Nom_Tbl As String
'obtient le premier fichier ou répertoire qui est dans "c:"
Dossier="c:Mondossier"
rep = Dir(Dossier & "*.CSV", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Tbl = Left(rep, Len(rep) - 4)
'On attache le fichier trouvé
DoCmd.TransferText acLinkDelim, , Nom_Tbl, Dossier & rep, True
'On Ajoute les données dans la table de destination
DoCmd.RunSQL "INSERT INTO Tabledest ( Champ1, Champ2, Champ3,
Champ4 )
SELECT Champ1 AS Expr1, Champ2 AS Expr2, Champ3 AS Expr3, Champ4 AS Expr4
FROM [" & Nom_Tbl & "];"
'On libère le fichier
docmd.DeleteObject acTable,Nom_Tbl
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
Fin:
End Sub
Voilà vite fait ...
A tester
@+




Salut,
Qu'est ce qui ne marche pô ?
J'aurais besoin de quelques précisions pour affiner le code :
- Nom des champs de la table de destination et de la table source.
- Leurs correspondances
- J'ai parié sur le fait que dans tes fichiers csv la premiére ligne
contenait le noms des champs. Est ce correct?
- Faut il faire des conversions de type ?
@+- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -




Re
Voici ta base avec quelques correction ;-) : http://cjoint.com/?hFjL2eFEbf

Dans la structure de la table DATA : Date_fin -> Date/heure et
Heure_debut -> Texte

Dans le module Import
Dossier="C:NomDossier" : il maquait le à la fin
Pour ce qui est de la conversion : voir la fonction convertit_date() qui
convertit en type et format date les champs texte issus de ton fichier
import

Pour l'execution : il suffit d'ouvrir le module, de se mettre dans la
sub et utiliser la touche de fonction F5.

@+
Oups : j'ai laissé en commentaire ton Dossier="d:......
Pense a supprimer mon Dossier="c:access" et a dé-commenter ton
Dossier="D:..."
;-)- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -





Encore un petit oubli
au début de la sub, aprés les déclarations Dim ajoute un
docmd.setwarnings false et avant le end sub un docmd.setwarnings True

Ces deux inscructions ont pour but d'eviter le message "votre requete va
ajouter ......" a chaque docmd.runsql de la boucle et de rétablir ce
parametre avant de sortir de la sub. Sinon tu n'aurais plus aucune
demande de confirmation en cas de supression, modification d'objet ect ...
@+
beloteux
Le #20031911
sleg a écrit le 30/07/2009 à 14h57 :
BOnjour,

j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.

merci de votre aide.


Bonjour,

Merci pour ce morceau de code qui sera bien utile a nombreux d'entre nous.

Par ailleurs, est-il possible d'ajouter une verification pour ne pas importer 2 fois le même fichiers ?
Sachant que mes fichiers sont construit sur un critère date_ref.txt (ex : 2009-09-01_C365) et que dans la table, j'ai également un champ date ?

Merci de votre aide
beloteux
Le #20044381
beloteux a écrit le 01/09/2009 à 14h04 :
sleg a écrit le 30/07/2009 à 14h57 :
BOnjour,

j'aimerais savoir s'il est possible d'importer dans un table existante
dans acces tous les fichies *.csv d'un repertoire ? et si oui comment
faire cela. je ne pourrais pas passer par un fichier excel car le
nombre de ligne total de tous mes fichiers csv depasse le nbr max
d'une feuille.

merci de votre aide.



Bonjour,

Merci pour ce morceau de code qui sera bien utile a nombreux d'entre nous.

Par ailleurs, est-il possible d'ajouter une verification pour ne pas importer 2
fois le même fichiers ?
Sachant que mes fichiers sont construit sur un critère date_ref.txt (ex
: 2009-09-01_C365) et que dans la table, j'ai également un champ date ?

Merci de votre aide


Je vais créer une table log d'import afin de verifier l'existance du fichier avant son traitement.
sinon, en fin de traitement, je le rajouterais dans la table de log, je pense que c'est une bonne solution pour ne pas avoir de doublon
Publicité
Poster une réponse
Anonyme