OVH Cloud OVH Cloud

Import sur liste déroulante d'un fichier .txt

19 réponses
Avatar
Chevrot
Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:\Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de lancer une
ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:\Développement\ «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans le
champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

9 réponses

1 2
Avatar
Fabien
Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste =""
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)
Liste=Liste & "'" & Rep &"';"
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
Liste=left(liste,len(liste)-1) 'Pour enlever le dernier ;
Me.ListeFichier.rowsource=Liste
GoTo Fin
Erreur:
Msgbox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:
End Sub

A toi la suite ...
J'ai oublié ....

"INSERT INTO Client1 ( RéfDossier ) SELECT '"& me.listeFichier &"' AS
Nomfichier;"
Pour inserer le nom du fichier choisit dans la table Client1

Re


Je suis partit du principe que l'appel de ce code tu le mettais dans
l'événement le form_load de ton formulaire dans lequel tu a un controle
liste nommé ListeFichier.
Voilà..
Bon week
A lundi pour la suite si pas d'autre intervenant d'ici là ;-)


Bonjour,


'Il s'en ajoute régulièrement' ? Est ce que ça veux dire que lorsque tu
est dans ta procédure d'import, des fichiers txt continuent a arriver
dans le dossier?

Pour le formulaire
Tu créé donc un nouveau formulaire
Dans celui ci tu met un controle liste déroulante nommé ListeFichier
Dans l'événement 'sur chargement' du formulaire tu copie le bout de code
qui va initialiser ta liste lorsque tu va ouvrir le formulaire.
Tu ajoute un bouton que tu nommes Import.
Sur l'evenement 'sur clic' de ce bouton tu ajoutes ta procedure d'import

'Pour ne pas avoir les message Systéme
docmd.setwarnings false

'Pour l'import
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement " & me.listeFichier & ", False, ""

'pour mettre a jour les nouveaux enregistrement dans ta table
Bonjour,




L'import a 'la main' est il correct ?










Avatar
Chevrot
Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste =""
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)
Liste=Liste & "'" & Rep &"';"
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
Liste=left(liste,len(liste)-1) 'Pour enlever le dernier ;
Me.ListeFichier.rowsource=Liste
GoTo Fin
Erreur:
Msgbox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:
End Sub

A toi la suite ...
J'ai oublié ....

"INSERT INTO Client1 ( RéfDossier ) SELECT '"& me.listeFichier &"' AS
Nomfichier;"
Pour inserer le nom du fichier choisit dans la table Client1

Re


Je suis partit du principe que l'appel de ce code tu le mettais dans
l'événement le form_load de ton formulaire dans lequel tu a un controle
liste nommé ListeFichier.
Voilà..
Bon week
A lundi pour la suite si pas d'autre intervenant d'ici là ;-)



















Avatar
Fabien
Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste =""
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)
Liste=Liste & "'" & Rep &"';"
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
Liste=left(liste,len(liste)-1) 'Pour enlever le dernier ;
Me.ListeFichier.rowsource=Liste
GoTo Fin
Erreur:
Msgbox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:
End Sub

A toi la suite ...
J'ai oublié ....

"INSERT INTO Client1 ( RéfDossier ) SELECT '"& me.listeFichier &"' AS
Nomfichier;"
Pour inserer le nom du fichier choisit dans la table Client1

Re


Je suis partit du principe que l'appel de ce code tu le mettais dans
l'événement le form_load de ton formulaire dans lequel tu a un controle
liste nommé ListeFichier.
Voilà..
Bon week
A lundi pour la suite si pas d'autre intervenant d'ici là ;-)





















Avatar
Chevrot
Merci, ça marche parfaitement.
Par contre en ce qui concerne la ligne d'instruction permettant de nommer le
premier champ "RéfDossier" de la table importée du nom du fichier, à
l'écriture de la ligne, le mot "Client1" est surligne avec le message "Erreur
de compilation attendu fin d'instruction. je rappelle la ligne:
INSERT INTO Client1 (RéfDossier) SELECT '"& me.listeFichier &"' AS
Nomfichier;"

Où est l'erreur?

Merci

Alain




Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste =""
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)
Liste=Liste & "'" & Rep &"';"
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
Liste=left(liste,len(liste)-1) 'Pour enlever le dernier ;
Me.ListeFichier.rowsource=Liste
GoTo Fin
Erreur:
Msgbox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:
End Sub

A toi la suite ...
J'ai oublié ....

"INSERT INTO Client1 ( RéfDossier ) SELECT '"& me.listeFichier &"' AS
























Avatar
Fabien
On progresse, on progresse ;-)

L'instruction compléte c'est
docmd.runsql "INSERT INTO Client1 (RéfDossier) SELECT '"&
me.listeFichier &"' AS Nomfichier;"
C'est ce que tu as écrit ?

Merci, ça marche parfaitement.
Par contre en ce qui concerne la ligne d'instruction permettant de nommer le
premier champ "RéfDossier" de la table importée du nom du fichier, à
l'écriture de la ligne, le mot "Client1" est surligne avec le message "Erreur
de compilation attendu fin d'instruction. je rappelle la ligne:
INSERT INTO Client1 (RéfDossier) SELECT '"& me.listeFichier &"' AS
Nomfichier;"

Où est l'erreur?

Merci

Alain




Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste =""
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)
Liste=Liste & "'" & Rep &"';"
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
Liste=left(liste,len(liste)-1) 'Pour enlever le dernier ;
Me.ListeFichier.rowsource=Liste
GoTo Fin
Erreur:
Msgbox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:
End Sub

A toi la suite ...
J'ai oublié ....

"INSERT INTO Client1 ( RéfDossier ) SELECT '"& me.listeFichier &"' AS


























Avatar
Chevrot
Effectivement on brùle.

L'instruction place dans le champ "RéfDossier" de la table importée une
ligne ne comportant que le nom du fichier, à la suite de la première ligne
importée comportant tous les champs, dont "RéfDossier" vide

Comment n'avoir qu'une ligne?

Merci, je crois que nous touchons au but si vous pouvez m'indiquer quelle
modif effectuer.

Alain


On progresse, on progresse ;-)

L'instruction compléte c'est
docmd.runsql "INSERT INTO Client1 (RéfDossier) SELECT '"&
me.listeFichier &"' AS Nomfichier;"
C'est ce que tu as écrit ?

Merci, ça marche parfaitement.
Par contre en ce qui concerne la ligne d'instruction permettant de nommer le
premier champ "RéfDossier" de la table importée du nom du fichier, à
l'écriture de la ligne, le mot "Client1" est surligne avec le message "Erreur
de compilation attendu fin d'instruction. je rappelle la ligne:
INSERT INTO Client1 (RéfDossier) SELECT '"& me.listeFichier &"' AS
Nomfichier;"

Où est l'erreur?

Merci

Alain




Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru





























Avatar
Fabien
Avec toutes mes excuses
docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier='';"
est la bonne formule.
On fait une mise a jour (UPDATE) et non pas une insertion (INSERT)

Effectivement on brùle.

L'instruction place dans le champ "RéfDossier" de la table importée une
ligne ne comportant que le nom du fichier, à la suite de la première ligne
importée comportant tous les champs, dont "RéfDossier" vide

Comment n'avoir qu'une ligne?

Merci, je crois que nous touchons au but si vous pouvez m'indiquer quelle
modif effectuer.

Alain


On progresse, on progresse ;-)

L'instruction compléte c'est
docmd.runsql "INSERT INTO Client1 (RéfDossier) SELECT '"&
me.listeFichier &"' AS Nomfichier;"
C'est ce que tu as écrit ?

Merci, ça marche parfaitement.
Par contre en ce qui concerne la ligne d'instruction permettant de nommer le
premier champ "RéfDossier" de la table importée du nom du fichier, à
l'écriture de la ligne, le mot "Client1" est surligne avec le message "Erreur
de compilation attendu fin d'instruction. je rappelle la ligne:
INSERT INTO Client1 (RéfDossier) SELECT '"& me.listeFichier &"' AS
Nomfichier;"

Où est l'erreur?

Merci

Alain




Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».

Grosse complication :
Je suis relativement faible en VBA

Merci de votre aide

Alain

Bonjour Pascal

Pour mettre a jour ta liste
En supposant que ta liste s'appelle ListeFichier
Il faut la définir comme étant une liste de valeur

Sub Import_contenu_repertoire(Dossier As String)
Dim rep, Nom_Tbl As String,Liste as string
'obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.xls", vbDirectory)
Dans ton cas :

rep = Dir(Dossier & "*.txt", vbDirectory)


'boucle tant que le répertoire n'a pas été entièrement parcouru































Avatar
Chevrot
Bon, cette fois ci on y est. Tous mes remerciements et mon profond respect
pour votre gentillesse et votre compétence.

A bientôt peut être

Alain


Avec toutes mes excuses
docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier='';"
est la bonne formule.
On fait une mise a jour (UPDATE) et non pas une insertion (INSERT)

Effectivement on brùle.

L'instruction place dans le champ "RéfDossier" de la table importée une
ligne ne comportant que le nom du fichier, à la suite de la première ligne
importée comportant tous les champs, dont "RéfDossier" vide

Comment n'avoir qu'une ligne?

Merci, je crois que nous touchons au but si vous pouvez m'indiquer quelle
modif effectuer.

Alain


On progresse, on progresse ;-)

L'instruction compléte c'est
docmd.runsql "INSERT INTO Client1 (RéfDossier) SELECT '"&
me.listeFichier &"' AS Nomfichier;"
C'est ce que tu as écrit ?

Merci, ça marche parfaitement.
Par contre en ce qui concerne la ligne d'instruction permettant de nommer le
premier champ "RéfDossier" de la table importée du nom du fichier, à
l'écriture de la ligne, le mot "Client1" est surligne avec le message "Erreur
de compilation attendu fin d'instruction. je rappelle la ligne:
INSERT INTO Client1 (RéfDossier) SELECT '"& me.listeFichier &"' AS
Nomfichier;"

Où est l'erreur?

Merci

Alain




Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».


































Avatar
Fabien
Bonjour,
Qu'en termes élégants ces chose sont dites !!!
A une prochaine fois ;-)
A pluche !!!
Bon, cette fois ci on y est. Tous mes remerciements et mon profond respect
pour votre gentillesse et votre compétence.

A bientôt peut être

Alain


Avec toutes mes excuses
docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier='';"
est la bonne formule.
On fait une mise a jour (UPDATE) et non pas une insertion (INSERT)

Effectivement on brùle.

L'instruction place dans le champ "RéfDossier" de la table importée une
ligne ne comportant que le nom du fichier, à la suite de la première ligne
importée comportant tous les champs, dont "RéfDossier" vide

Comment n'avoir qu'une ligne?

Merci, je crois que nous touchons au but si vous pouvez m'indiquer quelle
modif effectuer.

Alain


On progresse, on progresse ;-)

L'instruction compléte c'est
docmd.runsql "INSERT INTO Client1 (RéfDossier) SELECT '"&
me.listeFichier &"' AS Nomfichier;"
C'est ce que tu as écrit ?

Merci, ça marche parfaitement.
Par contre en ce qui concerne la ligne d'instruction permettant de nommer le
premier champ "RéfDossier" de la table importée du nom du fichier, à
l'écriture de la ligne, le mot "Client1" est surligne avec le message "Erreur
de compilation attendu fin d'instruction. je rappelle la ligne:
INSERT INTO Client1 (RéfDossier) SELECT '"& me.listeFichier &"' AS
Nomfichier;"

Où est l'erreur?

Merci

Alain




Et avec cette syntaxe ?
DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier , False

Oui, à la main c'est impeccable
Merci
Alain


Merci, mais j'ai un message d'erreur

Lorsque je lance le formulaire, il me propose une liste de fichier à
importer dans la liste déroulante. Je surligne un fichier (par exemple
B12259856MJC.txt) et je clicke sur le bouton importer (actionnant la
procédure Sub Importer_Click dans laquelle pour le moment je n'ai placé que
la ligne DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """):

J'ai alors un message d'"erreur d'exécution 31519 vous ne pouvez pas
importer ce fichier"

Que faire?

Merci





Merci Fabien.

J’ai maintenant un Formulaire, nommé « Import Fichier txt », comportant une
liste déroulante « ListeFichier » et un bouton exécutant une macro «
ImportFichierTxt » qui exécute une fonction « ImportFichierTxt () » situé
dans un module « Macro convertie – ImportFichierTxt ».

J’ai bien une procédure évènementielle sur chargement du Formulaire:

Private Sub Form_Load(Dossier As String)

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir"U:DéveloppementFichier choisi" & "*.txt", vbDirectory)

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr"U:DéveloppementFichier choisi" & rep) And vbDirectory) =
vbDirectory Then
'MsgBox "Répertoire " & rep
Else
'Nom_Tbl = Left(rep, Len(rep) - 4)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

End Sub

Lorsque j’ouvre le formulaire, j’ai bien la liste des fichiers txt stockés
dans le Directory et c’est fantastique. Merci beaucoup.

Par contre, lorsque j’actionne le bouton d’exécution de l’importation,
j’obtiens le message d’erreur suivant: « Erreur de compilation : utilisation
incorrecte du mot clef Me » dans DoCmd.TransferText acImportDelim, "Paramêtre
Client", "Client 1", "U:DéveloppementFichier choisi" & Me.ListeFichier &
", False, """

Qu’est ce qui cloche ?

La fonction est écrite comme suit :
Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

DoCmd.SetWarnings False

'Importer le fichier choisi
DoCmd.TransferText acImportDelim, "Paramêtre Assuré", "Assuré 1",
"U:DéveloppementFichier choisi" & Me.ListeFichier & ", False, """

DoCmd.SetWarnings False

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Dans le module Forms_Import_Liste_Fichier, j’ai également la procédure
suivante :

Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String

stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName

Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub

Merci par avance

Alain



j'espère que le WE a été bon!

En fait je m'étais probablement mal exprimé:

Les fichiers txt ne me sont pas connus au lancement de la recherche et il
s'en ajoute réglièrement. Il sont tous stockés dans le même Directory. Je
souhaite donc écrire un code permettant d'explorer le Directory (le mieux
serait une liste déroulante), sélectionner un fichier, l'importer sous le nom
"Client 1" et recopier le nom du fichier dans le premier champ de la table
ainsi créée.

Je suis prêt à créer un formulaire, mais que mettre dedans?
Par ailleurs le code écrit est un module, une fonction, une procédure ??

Merci de vos réponses au béotien que je suis.

Alain


Merci Fabien

J’ai écrit les lignes suivantes :

Option Compare Database

'------------------------------------------------------------
' ImportFichierTxt
'
'------------------------------------------------------------
Function ImportFichierTxt()
On Error GoTo ImportFichierTxt_Err

'DoCmd.SetWarnings False

Dim rep, Nom_Tbl As String, Liste As String

'Obtient le premier fichier ou répertoire qui est dans Dossier
rep = Dir(Dossier & "*.txt", "U:Développement Fichiers")

'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Liste = ""
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)
Liste = Liste & "'" & rep & "';"
End If
Suite:
'Passe à l'élément suivant
rep = Dir
Loop
Liste = Left(Liste, Len(Liste) - 1)
'Pour enlever le dernier ;
Me.ListeFichier.RowSource = Liste
GoTo Fin
Erreur:
MsgBox "Erreur N°" & Err.Number & " ', Message : " & Err.Description
Resume Suite
Fin:

'DoCmd.SetWarnings True

ImportFichierTxt_Exit:
Exit Function

ImportFichierTxt_Err:
MsgBox Error$
Resume ImportFichierTxt_Exit

End Function

Lorsque je lance le programme à partir d’une macro « Exécuter code
ImportFichierTxt() », un message d’erreur apparaît : utilisation incorrecte
du mot clef Me »

Je pense que j’ai commis des erreurs, mais lequelles ?

Est une fonction, une procédure (private ou public) ?

Merci de vos conseils

Alain



Bonjour à tous,

Je dispose de multiples fichiers .txt de structure identique, dans un
directory « U:Développement ».

Je souhaite, sous Access 2003, au moyen d‘un code VBA en choisir un à
importer dans une liste déroulante qui présenterait l’ensemble de ces
fichiers et me permettrait, en cliquant sur l’un d’entre eux, de
lancer une ligne du type :

DoCmd.TransferText acImportDelim, "Paramêtre Client", "Client 1",
"U:Développement «Fichier choisi».txt", False, ""

Petite complication :
Je souhaite aussi que le nom du « fichier choisi ».txt soit copié dans
le champ « RéfDossier » de la Table « Client 1 ».




































1 2