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

Access Discussion :

Sélection de fichier dans une importation enregistrée


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Transports

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Sélection de fichier dans une importation enregistrée
    Bonjour à tous,

    J'ai cherché sur ce forum, mais malheureusement, je ne trouve pas mon bonheur.
    J'ai une Importation enregistrée qui est assez complexe dans le format des données (et avec 157 champs à intégrer).

    Le chemin d'import pointe toujours vers un nom de fichier, mais le nom de mon fichier source peut changer (il aura évidement toujours la même structure).
    Je souhaite pouvoir sélectionner le fichier à importer via une boite de dialogue, mais en gardant mes spec d'import.

    Auriez vous la solution ?
    Merci d'avance.
    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 649
    Points : 14 627
    Points
    14 627
    Par défaut
    bonjour,
    Le chemin d'import pointe toujours vers un nom de fichier, mais le nom de mon fichier source peut changer
    l'importation enregistrée est une boite hermétique impossible à ouvrir et donc à modifier également.
    Soit tu refais ton importation en passant par l'enregistrement du format via le bouton "Avancé" de l'assistant d'importation, mais ce n'est possible que pour les fichiers texte car, bizarrement, cela ne fonctionne plus pour les fichiers Excel:

    Nom : Acc_EnregImport_Txt.JPG
Affichages : 622
Taille : 56,5 Ko

    soit tu renommes ton fichier source avant chaque importation avec la commande Name:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Name "C:\NomfichierATraiter.txt" As "C:\NomFichierOrigine.txt"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Transports

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse.
    Malheureusement ça ne résout pas mon problème.
    Je vais laisser la disscussion ouverte pour savoir s'il y ' a d'autres pistes.

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 649
    Points : 14 627
    Points
    14 627
    Par défaut
    bonsoir,
    Malheureusement ça ne résout pas mon problème.
    si cela concerne la sélection de fichiers, il est possible de faire la sélection avec Application.FileDialog, ensuite renommer le fichier sélectionné avec la commande Name et lancer l'importation enregistrée avec la commande RunSavedImportExport.
    Quel est le type de fichier qui est utilisé : Excel ou Texte ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 649
    Points : 14 627
    Points
    14 627
    Par défaut
    un suggestion de code:
    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
    Sub cmdFileDialog()
     
       ' Référence Microsoft Office XX.0 Object Library nécessaire
     
       Dim fDialog As Office.FileDialog
       Dim varFile As Variant
       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
     
       With fDialog
          ' Ne pas autoriser la multi-sélection de fichiers
          .AllowMultiSelect = False
          ' spécifie le répertoire par défaut
          .InitialFileName = "C:\MesFichiers\"
          ' Titre de la boite de dialogue
          .Title = "Sélection du fichier à importer"
     
          ' Filtre des types de fichiers
          .Filters.Clear
          .Filters.Add "Fichiers Excel", "*.xlsx"
          .Filters.Add "All Files", "*.*"
     
          ' Affiche la boite de dialogue
          If .Show = True Then
          ' Fichier sélectionné
             varFile = .SelectedItems.Item(1)
          End If
       End With
     
    ' Traitement du fichier
        If varFile <> "" Then
            'renomme le fichier pour le traitement
            Name varFile As "C:\NomfichierATraiter.xlsx"
            ' exécute la spécification d'importation enregistrée
            DoCmd.RunSavedImportExport ("NomDeLaSpécificationDImportationEnregistrée")
          Else
             MsgBox "Traitement annulé.", vbCritical, "Sélection du fichier à importer"
        End If
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Cost Controller
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Cost Controller
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je ne suis pas un spécialiste du VBA mais j'ai du affronter le même problème …
    Après de nombreuses recherches sur le WEB, j'ai trouvé une solution qui fonctionne (attention, le code n'est sûrement pas des plus beau et peut sûrement être amélioré, mais pour moi il fonctionne)
    j'espère ne rien avoir oublié en essayant de le retranscrire pour ton besoin, et encore une fois je n'ai fais qu'appliquer ce que j'ai lu, je n'en revendique aucune paternité
    En souhaitant t'avoir été d'une quelconque utilité

    (N. B: je suis preneur de toutes les améliorations )


    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
    Private Sub Bouton_Import_01_Click()
     
        Dim OldPath as String                           'Ancien chemin du fichier
        Dim NewPath As String                           'Nouveau chemin du fichier
        Dim oFD As FileDialog                           'Boite de dialogue
        Dim OldSpec As ImportExportSpecification        'Ancienne spéficication
        Dim NewSpec As ImportExportSpecification        'Nouvelle spécification
        Dim x As Integer                                'Compteur
     
    '----------------------------------------------------------------
    '-----   Permet de voir la structure de la spec d'origine   -----
    '----------------------------------------------------------------
    Open "\\Path où l'on veut sauvegarder la spec d'origine\SpecsOrigine.txt" For Output As #1
    Write #1, CurrentProject.ImportExportSpecifications(nom de la spec d'origine).XML
    Close #1
     
        '-------------------------------------------------------------------
        '-----     Ouvre la boite de dialogue selection de fichier     -----
        '-------------------------------------------------------------------
     
        'Paramètre la fenêtre Ouvrir
        Set oFD = Application.FileDialog(msoFileDialogOpen)
     
        With oFD                                                    'Ajoute les filtres pour fichiers textes et tous
            With .Filters
                .Clear
                .Add "Fichier", "*.csv*", 1
                .Add "Tous", "*.*", 2
            End With
            .InitialFileName = ""                                   'Interdit la multisélection
            .AllowMultiSelect = False                               'Affiche la fenêtre et vérifie qu'un fichier a bien été choisi
            If .show Then
                NewPath = .SelectedItems(1)
                NewPath = Replace(NewPath, "&", "&amp;")            'Gestion caractère spécial dans le chemin (gestion du caractère spécial dans le path, pas forcémentent nécessaire)
            Else
                Exit Sub
            End If
        End With
     
        'CurrenctProject.ImportExportSpecifications
        If MsgBox("Confirmez-vous l'emploi du fichier" & Chr(10) & NewPath, vbYesNo + vbQuestion + vbDefaultButton2, "Demande de confirmation") = vbYes Then
     
            Screen.MousePointer = 11                                    'Pointeur souris en forme sablier
     
            '---------------------------------------------------------------------
            '-----     Effacement de l'ancienne spécification temporaire     -----
            '---------------------------------------------------------------------    
            'Effacement ancienne spécification temporaire
            For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
                If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
                    CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
                    x = CurrentProject.ImportExportSpecifications.Count
                End If
            Next x
     
            '------------------------------------------------------------    
            '-----     Correction chemin nouvelle spécification     -----
            '------------------------------------------------------------
            OldPath = "\\ Pathe du fichier connu dans la spec d'origine"
            Set OldSpec = CurrentProject.ImportExportSpecifications.Item("nom de la spec d'origine")
            CurrentProject.ImportExportSpecifications.Add "TemporaryImport", OldSpec.XML
            Set NewSpec = CurrentProject.ImportExportSpecifications.Item("TemporaryImport")
     
            NewSpec.XML = Replace(NewSpec.XML, OldPath, NewPath)
            NewSpec.Execute
            Set NewSpec = Nothing
     
            Bouton_Import_01.Enabled = False
            Bouton_Import_02.Enabled = True
     
            Screen.MousePointer = 0                                    'Pointeur souris en forme sablier
     
        Else
            Exit Sub
        End If
     
    End Sub

Discussions similaires

  1. [AC-2007] Modifier le chemin du fichier pour une Importation enregistrée
    Par damsmut dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/10/2016, 15h32
  2. Réponses: 6
    Dernier message: 07/11/2012, 00h45
  3. Sélection de fichiers dans une fenêtre
    Par web59matth dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/08/2010, 11h40
  4. Upload et enregistrement du nom du fichier dans une bdd
    Par johan_barbier dans le forum XMLRAD
    Réponses: 8
    Dernier message: 26/09/2005, 12h02
  5. enregistrer le chelin d'un fichier dans une table
    Par piscine dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/09/2004, 15h13

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