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

Import fichier avec boite de dialogue

15 réponses
Avatar
FFO
Bonjours à vous
Sous excel si je souhaite importer un fichier texte en utilisant une boite
de dialogue j'utilise une commande simple :
Application.GetOpenFilename
Peut on dans le même esprit (simplicité, rapidité) importer un fichier texte
dans une table au moyen d'une boite de dialogue quant à sa selection en
utilisance la commande DoCmd.TransferText par exemple
Cette commande associé au chemin du fichier fonctionne sans difficulté mais
avec une boite de dialogue pour aller le sélectionner les ennuis commencent

Merci pour vos suggestions

10 réponses

1 2
Avatar
Eric
Bonjour,

Aussi simple et rapide je ne sais pas, mais une idée quand même:
Utiliser l'API OpenFile() pour ouvrir la boite de dialogue de choix de
fichier et récupérer le fichier puis lancer derrière la commande
TransferText en fonction de la valeur récupérée (0 si annulation).

L'API ici : http://officesystem.access.free.fr/apiopenfile.htm


Bonjours à vous
Sous excel si je souhaite importer un fichier texte en utilisant une boite
de dialogue j'utilise une commande simple :
Application.GetOpenFilename
Peut on dans le même esprit (simplicité, rapidité) importer un fichier texte
dans une table au moyen d'une boite de dialogue quant à sa selection en
utilisance la commande DoCmd.TransferText par exemple
Cette commande associé au chemin du fichier fonctionne sans difficulté mais
avec une boite de dialogue pour aller le sélectionner les ennuis commencent

Merci pour vos suggestions


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
FFO
Tout d'abord merci beaucoup pour ta réactivité
La fonction Openfile ne fonctionne pas avec ma base :
Message d'erreur : "Sub ou function non défini
Si je sélectionne cette commande et active la touche F1 pour l'aide
j'obtiens "Mot clé introuvable"

Ou se trouve mon erreur ????

Merci pour ton aide

Bonjour,

Aussi simple et rapide je ne sais pas, mais une idée quand même:
Utiliser l'API OpenFile() pour ouvrir la boite de dialogue de choix de
fichier et récupérer le fichier puis lancer derrière la commande
TransferText en fonction de la valeur récupérée (0 si annulation).

L'API ici : http://officesystem.access.free.fr/apiopenfile.htm


Bonjours à vous
Sous excel si je souhaite importer un fichier texte en utilisant une boite
de dialogue j'utilise une commande simple :
Application.GetOpenFilename
Peut on dans le même esprit (simplicité, rapidité) importer un fichier texte
dans une table au moyen d'une boite de dialogue quant à sa selection en
utilisance la commande DoCmd.TransferText par exemple
Cette commande associé au chemin du fichier fonctionne sans difficulté mais
avec une boite de dialogue pour aller le sélectionner les ennuis commencent

Merci pour vos suggestions


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

Il faut que tu copies l'API dans un module de portée globale c'est la
raison du lien que je t'ai donné, elle se trouve après le 1er tiers de
la page.

Pour mémoire:
L'API ici : http://officesystem.access.free.fr/apiopenfile.htm




Tout d'abord merci beaucoup pour ta réactivité
La fonction Openfile ne fonctionne pas avec ma base :
Message d'erreur : "Sub ou function non défini
Si je sélectionne cette commande et active la touche F1 pour l'aide
j'obtiens "Mot clé introuvable"

Ou se trouve mon erreur ????

Merci pour ton aide


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
FFO
En résumé si je comprends bien, là ou excel se contente d'une simple commande
en
2 mots Access nécessite la bagatelle de plus de 50 lignes d'instruction pour
obtenir le même résutat !!!
Particulièrement déconcertant mais si il n'y a plus simple contre mauvaise
fortune je ferais bon coeur
Je tente la manoeuvre

Merci

re,

Il faut que tu copies l'API dans un module de portée globale c'est la
raison du lien que je t'ai donné, elle se trouve après le 1er tiers de
la page.

Pour mémoire:
L'API ici : http://officesystem.access.free.fr/apiopenfile.htm




Tout d'abord merci beaucoup pour ta réactivité
La fonction Openfile ne fonctionne pas avec ma base :
Message d'erreur : "Sub ou function non défini
Si je sélectionne cette commande et active la touche F1 pour l'aide
j'obtiens "Mot clé introuvable"

Ou se trouve mon erreur ????

Merci pour ton aide


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re FFO,

Pourtant j'avais débuté mon post comme suit ;-)
Aussi simple et rapide je ne sais pas


Mais peut-être que d'autres connaissent une solution plus économique.
J'en ai hélas pas d'autre à te proposer.

En résumé si je comprends bien, là ou excel se contente d'une simple commande
en
2 mots Access nécessite la bagatelle de plus de 50 lignes d'instruction pour
obtenir le même résutat !!!
Particulièrement déconcertant mais si il n'y a plus simple contre mauvaise
fortune je ferais bon coeur
Je tente la manoeuvre

Merci



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
FFO
Manoeuvre réussie mais 2 inconvénients de taille quant aux paramètres de base
de la boite de dialogue :
Son positionnement immuable dans le répertoire de la base utilisée
Le type de fichier recherché : Fichiers Access et non Fichier texte ou Tout
fichier

Avec excel j'utilise les commandes :
Chdrive "lecteur"
Chdir "Chemin"

pour à la demande positionner par défaut la boite de dialogue sur un
répertoire stratégique afin de limiter la selection à réaliser

Quelles solutions pour Access dans cet esprit et pour adapter le type de
fichier à rechercher ???

Merci encore de ton dévouement


En résumé si je comprends bien, là ou excel se contente d'une simple commande
en
2 mots Access nécessite la bagatelle de plus de 50 lignes d'instruction pour
obtenir le même résutat !!!
Particulièrement déconcertant mais si il n'y a plus simple contre mauvaise
fortune je ferais bon coeur
Je tente la manoeuvre

Merci

re,

Il faut que tu copies l'API dans un module de portée globale c'est la
raison du lien que je t'ai donné, elle se trouve après le 1er tiers de
la page.

Pour mémoire:
L'API ici : http://officesystem.access.free.fr/apiopenfile.htm




Tout d'abord merci beaucoup pour ta réactivité
La fonction Openfile ne fonctionne pas avec ma base :
Message d'erreur : "Sub ou function non défini
Si je sélectionne cette commande et active la touche F1 pour l'aide
j'obtiens "Mot clé introuvable"

Ou se trouve mon erreur ????

Merci pour ton aide


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Eric
re,

Pour avoir les fichiers de type Texte(*.txt, *.csv, *.prn, *.rtf)
Il faut que tu modifies l'Enumération et la fonction ExtendChoose() dans
un premier temps puis modifier la fonction OpenFile()

Ca devrait donner pour l'énumération:
Public Enum acOpenFileType
allfiles
Image
msoffice
MultiMedia
Sound
texte
End Enum

Pour la fonction ExtendChoose
Private Sub ExtendChoose(FileType As acOpenFileType)
Select Case FileType
Case AllFiles
strFiltre = "Tous les fichiers" & Chr$(0) & "*.*"
Case texte
strFiltre = _
"Fichiers Texte" & Chr$(0) & "*.txt;*.prn;*.csv;*.rtf"
& Chr$(0) & _
"Tous les fichiers (*.*)" & Chr$(0)
Case Image
... ' suite inchangée


Au niveau d'OpenFile()
Définir dans la fonction le Rep Stratégique. Dans ce cas-là, si on ne
passe pas de répertoire lors de l'appel, le repertoire déclaré derriere
l'argument optionnel InitialFolder est utilisé.

Public Function OpenFile( _
Optional InitialFolder As String = "RepStratégique", _
Optional MultiSelect As Selection = Mono_Sélection, _
Optional ModalWindow As Boolean = True, _
Optional FileType As acOpenFileType = MSOffice, _
Optional KbBufferLength As Long = 4, _
Optional WithPath As Boolean = True _
) As String

et supprimer la ligne suivante:
If InitialFolder = "" Then InitialFolder = CurrentProject.Path

Enfin pour l'appel, au choix si tu veux fournir un repertoire ou non.
En l'absence d'un répertoire avec par défaut que les fichiers de type
Texte (prn, txt, csv, rtf), cela donne
Dim Id
id = OpenFile(, Multi_Sélection, True, texte, 12, False)

id = OpenFile(, Multi_Sélection, True, allfiles, 12, False) 'pour tous

Avec repertoire et tous types de fichiers:
id = OpenFile("CheminRepertoire", Multi_Sélection, True, allfiles, 12,
False)


En espérant n'avoir pas été trop obscur.

PS : chdir et chdrive fonctionne aussi sous Access

Manoeuvre réussie mais 2 inconvénients de taille quant aux paramètres de base
de la boite de dialogue :
Son positionnement immuable dans le répertoire de la base utilisée
Le type de fichier recherché : Fichiers Access et non Fichier texte ou Tout
fichier

Avec excel j'utilise les commandes :
Chdrive "lecteur"
Chdir "Chemin"

pour à la demande positionner par défaut la boite de dialogue sur un
répertoire stratégique afin de limiter la selection à réaliser

Quelles solutions pour Access dans cet esprit et pour adapter le type de
fichier à rechercher ???



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...

Une erreur dans la sub ExtendChoose()

Mettre :

Private Sub ExtendChoose(FileType As acOpenFileType)
Select Case FileType
Case AllFiles
strFiltre = "Tous les fichiers" & Chr$(0) & "*.*"
Case texte
strFiltre = _
"Fichiers Texte" & Chr$(0) & "*.txt;*.prn;*.csv;*.rtf" _
& Chr$(0) & "Tous les fichiers" & Chr$(0) & "*.*" & Chr$(0)

(suite inchangée)

au lieu de
Private Sub ExtendChoose(FileType As acOpenFileType)
Select Case FileType
Case AllFiles
strFiltre = "Tous les fichiers" & Chr$(0) & "*.*"
Case texte
strFiltre = _
"Fichiers Texte" & Chr$(0) & "*.txt;*.prn;*.csv;*.rtf" &
Chr$(0) & _
"Tous les fichiers (*.*)" & Chr$(0)
Case Image
... ' suite inchangée



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
Bonjour FFO,

Un peu de ménage dans mes réponses à l'emporte-pieces ;-)

Conserver la modification de l'énumération et celle de la procédure
ExtendChoose() précédente.

Définir par défaut les paramètres optionnels de la fonction OpenFile
ainsi (adapter le rep stratégique) :

Public Function OpenFile( _
Optional InitialFolder As String = "RepStrategique", _
Optional MultiSelect As Selection = Mono_Sélection, _
Optional ModalWindow As Boolean = True, _
Optional FileType As acOpenFileType = texte, _
Optional KbBufferLength As Long = 4, _
Optional WithPath As Boolean = True _
) As String

(Supprimer la ligne
If InitialFolder = "" Then InitialFolder = CurrentProject.Path)

Dans la procédure d'importation, dans la cas d'une sélection simple:

Dim SelectedFile As String
' Utilisation de rep déclaré en Optionnel
' et visualisation des fichiers textes
SelectedFile = OpenFile()
If Len(SelectedFile) > 0 Then
'MsgBox SelectedFile
'Adapter le nom de la table
DoCmd.TransferText acImportDelim, , _
"TestImport", SelectedFile, True
End If

Pour avoir un rep spécifique et tous les fichiers, toujours dans le cas
d'une sélection simple, mettre:
SelectedFile = OpenFile("LeRep", , , AllFiles)


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
FFO
On sent à travers toute cette procédure le doigt de l'expert
Aprés avoir quelque peu tatonné aprés toutes ces corrections successives
avec le concours de mes maigres connaissances j'ai réussi à obtenir ce que
je souhaitais
Et de garder le résutat bien au chaud pour de futur besoin (la compléxité du
code oblige)
Merci pour ton généreux coup de main salutaire

Bonjour FFO,

Un peu de ménage dans mes réponses à l'emporte-pieces ;-)

Conserver la modification de l'énumération et celle de la procédure
ExtendChoose() précédente.

Définir par défaut les paramètres optionnels de la fonction OpenFile
ainsi (adapter le rep stratégique) :

Public Function OpenFile( _
Optional InitialFolder As String = "RepStrategique", _
Optional MultiSelect As Selection = Mono_Sélection, _
Optional ModalWindow As Boolean = True, _
Optional FileType As acOpenFileType = texte, _
Optional KbBufferLength As Long = 4, _
Optional WithPath As Boolean = True _
) As String

(Supprimer la ligne
If InitialFolder = "" Then InitialFolder = CurrentProject.Path)

Dans la procédure d'importation, dans la cas d'une sélection simple:

Dim SelectedFile As String
' Utilisation de rep déclaré en Optionnel
' et visualisation des fichiers textes
SelectedFile = OpenFile()
If Len(SelectedFile) > 0 Then
'MsgBox SelectedFile
'Adapter le nom de la table
DoCmd.TransferText acImportDelim, , _
"TestImport", SelectedFile, True
End If

Pour avoir un rep spécifique et tous les fichiers, toujours dans le cas
d'une sélection simple, mettre:
SelectedFile = OpenFile("LeRep", , , AllFiles)


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



1 2