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 :

Import .tab noms de colonnes différents


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut Import .tab noms de colonnes différents
    Bonjour à tous,

    J'ai un dossier avec des fichiers .tab qui n'ont pas les mêmes noms de colonnes.
    Mon code est le suivant :
    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
    Option Compare Database
    Option Explicit
     
     
    Dim so As New FileSystemObject
    Dim f As Folder
    Dim fichier As File
    Const Chemin = "F:\test"
     
    Sub importation()
       Set f = so.GetFolder(Chemin)
       For Each fichier In f.Files
         Debug.Print fichier.Name
         DoCmd.TransferText acImportDelim, ImportationTAB, fichier.Name, fichier.Name
       Next
    End Sub
    Le problème est que le fichier "ImportationTAB" indique le noms de colonnes qui n'est pas le même pour tous les fichiers...

    Comment faire pour importer tous les fichiers .tab simplement ?

    Merci d'avance pour vos réponses !

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2007
    Messages : 184
    Points : 188
    Points
    188
    Par défaut
    Bonjour,
    2 pistes à creuser :

    - si les noms des colonnes sont connus : les modifier avant importation dans le fichier .tab
    en s'inspirant de la FAQ
    http://access.developpez.com/faq/?page=Fichier#FicTxt

    - importer dans une table temporaire, puis faire une requete d'ajout entre cette table temporaire et la table ImportationTAB


    Bonne journée
    fevec

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour ta réponse.

    Je ne connais pas le nom des colonnes, ni leur type.

    Avant je les importais une par une avec Access qui déterminait automatiquement le type des colonnes.

    Il n'y a pas de moyen simple pour importer toutes les tables ?

    Merci d'avance pour vos réponses !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    J'ai en fait réussi à récupérer le nom ainsi que le type des colonnes sous ce format :



    La première colonne est le nom de la table.

    Est il possible de créer un fichier .ini pour chaque table avant son importation avec la commande DoCmd.TransferText ?

    Merci d'avance pour vos réponses

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    J'ai réussi à avancer :

    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
     
    Option Compare Database
    Option Explicit
     
     
    Dim fso As New FileSystemObject
    Dim f As Folder
    Dim fichier As File
    Const Chemin = "............"
     
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
     
    Sub importation()
       Set oApp = CreateObject("excel.application")
       Set oWkb = oApp.Workbooks.Open("...........\0 Liste des tables.xlsx")
       Set oWSht = oWkb.Worksheets("Liste des tables non vides")
     
       Set f = fso.GetFolder(Chemin)
     
       Dim a As Integer
          a = 1
          While oWSht.Range("C" & a) <> ""
             a = a + 1
          Wend
     
       For Each fichier In f.Files
           If Right(fso.GetFile(fichier).Name, 3) = "tab" Then
             Debug.Print fichier.Name
     
             Dim nomtable As String
             nomtable = fso.GetFile(fichier).Name
             nomtable = Mid(nomtable, 1, Len(nomtable) - 4)
     
             Dim i As Integer
             i = 1
     
             For i = 1 To a
                Dim nomcase As String
                nomcase = oWSht.Range("A" & i).Value
                If nomcase = nomtable Then Exit For
             Next
     
             Dim tablevide As Boolean
             If i = a + 1 Then tablevide = True Else tablevide = False
     
             Dim fichierparam
                If Not tablevide Then
                   Set fichierparam = f.CreateTextFile(nomtable & ".ini")
                   fichierparam.WriteLine "[" & nomcase & " ]"
                   fichierparam.WriteLine "ColNameHeader = True"
                   fichierparam.WriteLine "Format = FixedLength"
                   fichierparam.WriteLine "MaxScanRows = 0"
     
                   Dim j As Integer
                   j = 4
     
                   While oWSht.Cells(i, j) <> ""
     
                       Dim nomcolonne As String
                       nomcolonne = oWSht.Cells(i, j)
     
                       Dim typecolonne As String
                       typecolonne = oWSht.Cells(i + 1, j)
                       typecolonne = Left(typecolonne, 4)
     
                       Select Case typecolonne
                           Case "NUMB"
                               typecolonne = "Float"
                           Case "VARC"
                               typecolonne = "Char"
                           Case "DATE"
                               typecolonne = "Date"
                           Case Else
                               typecolonne = "Char"
                       End Select
     
                       fichierparam.WriteLine "Col" & j & "=""" & nomcolonne & """ " & typecolonne
     
                       j = j + 1
     
                   Wend
     
                   fichierparam.Close
     
                   DoCmd.TransferText acImportDelim, Chemin & "\" & nomtable & ".ini", nomtable, Chemin & "\" & nomtable & ".tab", True
     
                   'Kill (Chemin & "\" & nomtable & ".ini")
                End If
           Else
           End If
       Next
    End Sub
    Maintenant, j'ai l'erreur suivante :

    "La spécification de fichier texte "..." n'existe pas. Vous ne pouvez pas importer, exporter, ou lier en utilisant cette spécification."

    Quelqu'un a une solution ?

    Merci d'avance !

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Est-ce que la Spécification Chemin & "\" & nomtable & ".ini" existe bien ?
    Tu ne l'aurais pas supprimée avec le Kill qui suit (avant de mettre le ') ?

    titi95

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Le Kill qui suit est en commentaire,
    J'ai le même problème en le supprimant...

  8. #8
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le Kill qui suit est en commentaire,
    On est bien d'accord, mais je te demandais si, éventuellement, par inadvertance avant de transformer la ligne en commentaire (en ajoutant '), tu n'aurais pas exécuté le code avec Kill ?
    Ton fichier est toujours existant ?
    Tout le reste du code fonctionne parfaitement ?

    Sinon... ???

    titi95

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse.
    Les fichiers .ini sont tous créés et le reste du code fonction bien.
    Je suis un peu perdu là...

  10. #10
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Je suis un peu perdu là...
    Moi aussi !
    Le message est pourtant clair
    "La spécification de fichier texte "..." n'existe pas.
    Mais...

    titi95

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/12/2012, 00h14
  2. [DATA] Importation d'un fichier plat avec nom de colonnes en lignes
    Par Invité dans le forum SAS Base
    Réponses: 3
    Dernier message: 21/12/2011, 12h49
  3. [PHP 5.3] Import CSV : Index par nom de colonnes et pas numérique
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2011, 10h44
  4. Recuperation nom de colonne d'une table importée
    Par fafabzh6 dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/11/2007, 09h53
  5. Import avec noms de tablespace différent dans le schéma cible
    Par farenheiit dans le forum Administration
    Réponses: 6
    Dernier message: 01/08/2007, 17h59

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