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

IMPORTATION AUTOMATISEE FICHIER EXCEL ET CONSERVER NOM FICHIER

5 réponses
Avatar
Nadyajah
Bonsoir,

J'ai une table "CONTACT" avec "nom";"prénom";"adresse"...
Tout les jours je vais importer des informations dans cette table en
provenance de fichiers excel tous sous le même format (mêmes en-têtes) mais
avec un nom différent à chaque fois
("STE_A_JANVIER_2005","STE_B_FEVRIER_2005" ...)
Je voudrais automatiser l'importation de ses fichiers excel en créant une
macro liée à un bouton ou une fenêtre apparaitra pour aller sélectionner le
fichier que je souhaite importer.
Ensuite, je veux conserver dans la table le nom du fichier importé.
Par exemple, je vais importer 10 contacts et dans le champ "nom fichier lié"
que j'ai créé dans ma table "CONTACT" soit inséré "STE_A_JANVIER_2005".

En effet, par la suite j'ai besoin de créér des actions sur les contacts de
chaque fichier et je pense que de conserver le nom du fichier est la
meilleure méthode pour pouvoir agir dessus.
A moins que vous ayez de meilleures idées ....

Cordialement.

Nadya

P.S : Je ne suis pas une experte en access alors pitié essayer de me
détailler au mieux la procédure ....

5 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Déjà, pour récupérer le nom d'un fichier sélectionné, tu peux utiliser
le code qui se trouve ici et le mettre dans un module standard de ta
base :
http://access.jessy.free.fr/index.html?Menu=7&Page=OpenFile

Ensuite, pour l'ensemble de l'importation, le mieux serait de le faire
entièrement dans le code, en fait, le mieux serait de récupérer le
chemin que te retournera la fonction OpenFile dans une variable
et ensuite, tu pourras mettre à jour ta table avec une requête de mise
à jour en mettant pour chaque ligne vide, la valeur de la variable...

En gros, simplement ça donnerais une fonction dans ce genre :

Function toto()

Dim strFile As String

strFile = openfile("c:")
If strFile = "" Then Exit Function

DoCmd.TransferSpreadsheet acImport, , "TaTable", strFile, True

CurrentDb.Execute "UpDate TaTable " _
& "SET [Nom fichier lié] = '" & strFile & "' " _
& "Where isnull([nom fichier lié]);"

End Function

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Nadyajah" a écrit dans le message de
news:
Bonsoir,

J'ai une table "CONTACT" avec "nom";"prénom";"adresse"...
Tout les jours je vais importer des informations dans cette table en
provenance de fichiers excel tous sous le même format (mêmes en-têtes)
mais

avec un nom différent à chaque fois
("STE_A_JANVIER_2005","STE_B_FEVRIER_2005" ...)
Je voudrais automatiser l'importation de ses fichiers excel en créant une
macro liée à un bouton ou une fenêtre apparaitra pour aller sélectionner
le

fichier que je souhaite importer.
Ensuite, je veux conserver dans la table le nom du fichier importé.
Par exemple, je vais importer 10 contacts et dans le champ "nom fichier
lié"

que j'ai créé dans ma table "CONTACT" soit inséré "STE_A_JANVIER_2005".

En effet, par la suite j'ai besoin de créér des actions sur les contacts
de

chaque fichier et je pense que de conserver le nom du fichier est la
meilleure méthode pour pouvoir agir dessus.
A moins que vous ayez de meilleures idées ....

Cordialement.

Nadya

P.S : Je ne suis pas une experte en access alors pitié essayer de me
détailler au mieux la procédure ....


Avatar
Nadyajah
Bonsoir,

J'ai tapé cette fonction mais il me dit :
"erreur d'éxecution 3144 : erreur de synthaxe dans l'instruction UPDATE.
Pour information, j'ai access 2002.

Merci.

Nadya
Avatar
Jessy Sempere [MVP]
Bonjour

En fait je me suis tromper dans la synthaxe du critère...

Essais :

CurrentDb.Execute "UpDate TaTable " _
& "SET [Nom fichier lié] = '" & strFile & "' " _
& "Where [nom fichier lié] Is Null;"

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Nadyajah" a écrit dans le message de
news:
Bonsoir,

J'ai tapé cette fonction mais il me dit :
"erreur d'éxecution 3144 : erreur de synthaxe dans l'instruction UPDATE.
Pour information, j'ai access 2002.

Merci.

Nadya


Avatar
Nadyajah
Bonjour,

Même message d'erreur........

Pour information,
Nom table = titi
nom fichier lié = tata.xls

Je dois bien mettre :

CurrentDb.Execute "UpDate titi " _
& "SET [tata] = '" & strFile & "' " _
& "Where [tata] Is Null;"

Merci d'avance pour ton aide.

P.S : Pour info, voici le code que j'ai intégré pour importer un fichier.
D'ailleurs si tu sais comment faire pour qu'il me pose la question lorsque
j'importe le fichier afin que je la personne confirme le bon import.
Par exemple : "Souhaitez-vous réellement importer le fichier tata.xls?" avec
bouton "ok" et "annuler"


Function fOpenFiles() As String

Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)

With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.xls"
.Filters.Clear
.Filters.Add "Tableur Microsoft Excel", "*.xls"
.Filters.Add "Base de données Microsoft Access", "*.mdb"
.Filters.Add "Document Microsoft Word", "*.doc"
.InitialView = msoFileDialogViewList
.Title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Cancel = True
Next
End If
End With

If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If

Set Dialogue = Nothing

End Function
Avatar
Jessy Sempere [MVP]
Bonjour

C'est bizarre, normalement ça devrait fonctionner...
Bon peut-être que tes noms de fichiers peuvent contenir des apostrophes,
dans le doute remplaces par :

CurrentDb.Execute "UpDate titi " _
& "SET [tata] = """ & strFile & """ " _
& "Where [tata] Is Null;"

Sinon, la fonction que tu mets sert à sélectionner ton fichier, elle ne fait
aucune
importation, je suppose que tu as une autre fonction pour l'importation où
tu fais
appel à fOpenFiles.

En théorie, elle devrait ressembler à ça (avec ton message de confirmation
d'importation) :

Function ImportTATA()

dim strFile as string

strfile = fopenfiles
if strfile ="" or isnull(strfile) then exit function
if msgbox("Voulez-vous vraiment...",vbOkCancel) = vbCancel then exit
function

docmd.TransferSpreadsheet ...
CurrentDb.Execute "UpDate titi " _
& "SET [tata] = """ & strFile & """ " _
& "Where [tata] Is Null;"

end function
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Nadyajah" a écrit dans le message de
news:
Bonjour,

Même message d'erreur........

Pour information,
Nom table = titi
nom fichier lié = tata.xls

Je dois bien mettre :

CurrentDb.Execute "UpDate titi " _
& "SET [tata] = '" & strFile & "' " _
& "Where [tata] Is Null;"

Merci d'avance pour ton aide.

P.S : Pour info, voici le code que j'ai intégré pour importer un fichier.
D'ailleurs si tu sais comment faire pour qu'il me pose la question lorsque
j'importe le fichier afin que je la personne confirme le bon import.
Par exemple : "Souhaitez-vous réellement importer le fichier tata.xls?"
avec

bouton "ok" et "annuler"


Function fOpenFiles() As String

Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)

With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.xls"
.Filters.Clear
.Filters.Add "Tableur Microsoft Excel", "*.xls"
.Filters.Add "Base de données Microsoft Access", "*.mdb"
.Filters.Add "Document Microsoft Word", "*.doc"
.InitialView = msoFileDialogViewList
.Title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Cancel = True
Next
End If
End With

If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If

Set Dialogue = Nothing

End Function