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
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
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
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 :
'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é ....
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 :
'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é ....
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 :
'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é ....
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
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
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
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
AlainBonjour à 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
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
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
AlainBonjour à 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
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
AlainBonjour à 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à ;-)
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à ;-)
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
AlainBonjour à 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à ;-)
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.
AlainMerci 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
AlainBonjour à 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,
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,
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.
AlainMerci 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
AlainBonjour à 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,
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.
AlainMerci 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
AlainBonjour à 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 !!
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 !!
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.
AlainMerci 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
AlainBonjour à 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 !!
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
Alainj'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.
AlainMerci 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
AlainBonjour à 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
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
'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
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
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
'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
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
Alainj'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.
AlainMerci 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
AlainBonjour à 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
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
'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
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
Alainj'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.
AlainMerci 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
AlainBonjour à 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
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
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
Alainj'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.
AlainMerci 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
AlainBonjour à 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
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
Alainj'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.
AlainMerci 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
AlainBonjour à 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
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
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
Alainj'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.
AlainMerci 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
AlainBonjour à 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