IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Importation fichier texte avec DoCmd.Transfertext [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Importation fichier texte avec DoCmd.Transfertext
    Bonjour,

    Je cherche à importer automatiquement dans Access un fichier texte au format personnalisé ("ITI Ipc Spécification d'importation"), mais au chemin d'accès non figé.

    J'ai pour cela fait une macro de façon automatique directement dans Access (grâce à l'action TransférerTexte), mais je n'ai alors pas le choix du chemin d'accès.

    J'essaie donc de faire un module avec l'objet DoCmd ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.TransferText acImportDelim, "ITI Ipc Spécification d'importation", "ITI", "chemin d'accès que je souhaite non fixe", -1
    Là j'ai deux problèmes que je n'avais pas à résoudre malgré mes recherches sur internet ! Car je débute !

    1) comment faire pour qu'une boîte de dialogue s'ouvre me proposant le fichier à choisir => comment faire pour me donner le choix du chemin d'accès.

    2) comment faire en sorte que tout cela marche dans une macro automatique ? Grâce à l'action ExécuterApplication ? J'essaie en tapant ma ligne de commande ci-dessus, mais cela ne fonctionne pas (ce serait trop simple !, je me doute que c'est plus compliqué ).

    Pourriez-vous m'apporter votre aide s'il vous plaît ? Je patauge !

    D'avance merci pour vos réponses.

    Clemini.

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut choix chemin d'accès
    Re-bonjour,

    j'ai résolu à forces de recherche le problème numéro 2)
    Reste le 1) sur lequel je sèche... si vous avez des réponses

    Merci !
    Clémini

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Je vous mets mon code au cas où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function import()
    
    DoCmd.TransferText acImportDelim, "monformatdimport", "monnomdetable", "monchemindaccesfixe", True
    
    End Function
    Et j'appelle cette fonction dans une macro automatique grâce à l'action ExécuterCode (qui sera complétée par d'autres actions ensuite)

    Il me reste juste à rajouter ce qui me permettra d'ouvrir une boîte de dialogue pour choisir mon fichier à importer !

    Merci !
    Clémini

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir

    Utilise cette fonction toute faite, trouvée sur ce même site
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    Option Compare Database
     
      'Déclaration de l'API
    Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                       "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
     
     'Structure du fichier
    Private Type OPENFILENAME
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End Type
     
     'Constantes
    Private Const OFN_READONLY = &H1
    Private Const OFN_OVERWRITEPROMPT = &H2
    Private Const OFN_HIDEREADONLY = &H4
    Private Const OFN_NOCHANGEDIR = &H8
    Private Const OFN_SHOWHELP = &H10
    Private Const OFN_ENABLEHOOK = &H20
    Private Const OFN_ENABLETEMPLATE = &H40
    Private Const OFN_ENABLETEMPLATEHANDLE = &H80
    Private Const OFN_NOVALIDATE = &H100
    Private Const OFN_ALLOWMULTISELECT = &H200
    Private Const OFN_EXTENSIONDIFFERENT = &H400
    Private Const OFN_PATHMUSTEXIST = &H800
    Private Const OFN_FILEMUSTEXIST = &H1000
    Private Const OFN_CREATEPROMPT = &H2000
    Private Const OFN_SHAREAWARE = &H4000
    Private Const OFN_NOREADONLYRETURN = &H8000
    Private Const OFN_NOTESTFILECREATE = &H10000
     
    Private Const OFN_SHAREFALLTHROUGH = 2
    Private Const OFN_SHARENOWARN = 1
    Private Const OFN_SHAREWARN = 0
     
     
    Public Function OuvrirUnFichier(Handle As Long, _
                                    Titre As String, _
                                    TypeRetour As Byte, _
                                    Optional TitreFiltre As String, _
                                    Optional TypeFichier As String, _
                                    Optional RepParDefaut As String) As String
     'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
     'la boîte de dialogue de sélection d'un fichier.
     'Explication des paramètres
        'Handle = le handle de la fenêtre (Me.Hwnd)
        'Titre = Titre de la boîte de dialogue
        'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
            '1 = Chemin complet + Nom du fichier
            '2 = Nom fichier seulement
        'TitreFiltre = Titre du filtre
            'Exemple: Fichier Access
            'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
        'TypeFichier = Extention du fichier (Sans le .)
            'Exemple: MDB
            'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
        'RepParDefaut = Répertoire d'ouverture par defaut
            'Exemple: C:\windows\system32
            'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
     
    Dim StructFile As OPENFILENAME
    Dim sFiltre As String
     
     'Construction du filtre en fonction des arguments spécifiés
    If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
      sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
    End If
    sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
     
     
     'Configuration de la boîte de dialogue
      With StructFile
        .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
        .hwndOwner = Handle 'Identification du handle de la fenêtre
        .lpstrFilter = sFiltre 'Application du filtre
        .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
        .nMaxFile = 254 'Taille maximale du fichier
        .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
        .nMaxFileTitle = 254  'Taille maximale du nom du fichier
        .lpstrTitle = Titre 'Titre de la boîte de dialogue
        .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
        If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
            RepParDefaut = CurrentDb.Name
            PathStripPath (RepParDefaut)
            .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
    InStr(1, RepParDefaut, vbNullChar) - 1)))
            Else: .lpstrInitialDir = RepParDefaut
        End If
      End With
     
    If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
        Select Case TypeRetour
          Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
          Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
        End Select
      End If
     
    End Function
    Ensuite, tu l'appelles sur un fomulaire, par exemple comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ChoixFichier = OuvrirUnFichier(Me.Hwnd, "Message boite dialogue a personnaliser", 2, "Format de fichier désiré exemple :Texte", "Extension : exemple TXT", "Si vide, répertoire par défaut.)
    Les paramètres sont expliqués dans le corps de la fonction..

    Dans mon exemple, ChoixFichier est la variable qui recueille le nom du fichier et ou le chemin complet.
    Ensuite, tu fais ton traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferText acImportDelim, "monformatdimport", "monnomdetable", etc
    avec la variable ChoixFichier à la place du nom de fichier..


    J'espère que ça t'aidera

    Bon courage
    Didier71

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Pour choisir un fichier, il y a peut être plus simple.
    J'ai utilisé le code ci-dessous qui lors d'un import de fichier texte, permet de choisir le fichier à importer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim oFile As FileDialog, txtCheminFichier As String
     
        Set oFile = Application.FileDialog(msoFileDialogOpen)
        oFile.AllowMultiSelect = False
        If oFile.Show = -1 Then ' bouton ouvrir
            txtCheminFichier = oFile.SelectedItems(1)
        End If
    Frédéric
    Développeur d'Applications Access

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut merci ! encore une question ?
    Merci beaucoup à tous les deux !

    Didier, quand tu dis appeler sur un formulaire le code :

    ChoixFichier = OuvrirUnFichier(Me.Hwnd, "Message boite dialogue a personnaliser", 2, "Format de fichier désiré exemple :Texte", "Extension : exemple TXT", "Si vide, répertoire par défaut.)

    C'est-à-dire concrètement ?
    Je dois créer un formulaire avec un bouton de commande etc, ou y a t-il une simple ligne de code spécifique à intégrer dans une nouvelle fonction ou nouvelle sub ? J'ai vu sur internet des choses sur l'application DoCmd. OpenForm. Est-ce de ça qu'il s'agit.

    D'avance merci !
    Clémentine.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Besoin de précision
    Encore une question à Frédéric cette fois

    Comment placer dans ma fonction tes lignes de code ? Je n'arrive pas à le faire marcher.

    Merci encore.
    Clémentine.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    A essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function import()
        Dim oFile As FileDialog, txtCheminFichier As String
     
        Set oFile = Application.FileDialog(msoFileDialogOpen)
        oFile.AllowMultiSelect = False
        If oFile.Show = -1 Then ' bouton ouvrir
            txtCheminFichier = oFile.SelectedItems(1)
          DoCmd.TransferText acImportDelim, "monformatdimport", "monnomdetable", txtCheminFichier,True
       End If
    End Function
    Frédéric
    Développeur d'Applications Access

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Merci.
    J'ai déjà essayé ainsi et il me dit qu'il y a une erreur de compilation au niveau du type défini par l'utilisateur non défini sur "oFile As FileDialog".

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Il faut vérifier que dans Outils/Références la bibilothèque Microsoft Office xx Object Library est cochée
    Frédéric
    Développeur d'Applications Access

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    ça marche !!!! génial merci mille fois !

    Vous avez illuminé ma journée (rien que ça !)

    Clémentine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Importer fichier texte avec autre extension --> Schema.ini
    Par damsmut dans le forum VBA Access
    Réponses: 10
    Dernier message: 31/08/2011, 15h35
  2. [Débutant] Importer fichier texte avec des cases vides
    Par doublegadobax dans le forum MATLAB
    Réponses: 2
    Dernier message: 20/05/2011, 17h05
  3. Importer fichier texte avec mise en forme sur page Web
    Par Ditrius dans le forum Langage
    Réponses: 6
    Dernier message: 18/10/2010, 16h34
  4. Import fichier texte avec des champs variables
    Par joshua12 dans le forum Access
    Réponses: 4
    Dernier message: 26/09/2006, 09h06
  5. Import fichier texte avec separateur milliers "."
    Par mgrsys dans le forum Access
    Réponses: 8
    Dernier message: 12/09/2006, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo