Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
Fabien
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)
'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 ...

Avatar
Fabien
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


Avatar
Chevrot
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





Avatar
Fabien
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
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
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

docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier)='';"
'Pour remettre en place l'affichage des messages systéme futur
Docmd.setwarnings True

Voilà !
A toi de jouer !!






Avatar
Chevrot
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

docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier)='';"
'Pour remettre en place l'affichage des messages systéme futur
Docmd.setwarnings True

Voilà !
A toi de jouer !!









Avatar
Fabien
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

docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier)='';"
'Pour remettre en place l'affichage des messages systéme futur
Docmd.setwarnings True

Voilà !
A toi de jouer !!

Ben c'est normal puisque bien qu'ayant créé un fonction ImportFichierTxt


tu continu a appeler la macro
Private Sub Importer_Click()
On Error GoTo Err_Importer_Click

Dim stDocName As String



'Tu fait appel a la Marco !!!! et dans une marco on ne peux par mettre
de référence directe de type me.
stDocName = "ImportFichierTxt"
DoCmd.RunMacro stDocName
'**********************************



Exit_Importer_Click:
Exit Sub

Err_Importer_Click:
MsgBox Err.Description
Resume Exit_Importer_Click

End Sub


Ci dessous pour faire plus simple ;-)

Private Sub Importer_Click()
DoCmd.SetWarnings False

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

'Mettre a jour la table Clients1

docmd.runsql "UPDATE Client1 SET Client1.RéfDossier = '" &
Me.ListeFichier &"' WHERE Client1.RéfDossier)='';"
DoCmd.SetWarnings False
End sub

@+








Avatar
Chevrot
B20070585MJC.txt" Merci, mais j'ai un nouveau problème:

Lorsque après avoir ouvert le formulaire et surligné un nom de fichier txt
(par exemple "B20070585MJC.txt"à importer, je clique sur le bouton "importer"
actionnant sur click l'importation du fichier choisi (DoCmd.TransferText
acImportDelim, "Paramêtre Client", "Client1", "U:DéveloppementFichiers
choisi" & Me.ListeFichier & ", False, """), j'ai un message d'"erreur
d'exécution 31519 vous ne pouvez pas importer ce fichier"

Merci de votre conseil


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












Avatar
Chevrot
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












1 2