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 :

Probléme de syntaxe vba pour importation fichier avec condition nom du fichier [AC-2013]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de kikinou61
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut Probléme de syntaxe vba pour importation fichier avec condition nom du fichier
    Bonjour,

    Je souhaite importer des fichiers txt automatiquement selon leur nom qui commence par une variable fournie par l'utilisateur.
    Chaque jour, des fichiers txt sont créés avec dans leur nom la date du jour ex: G10220118205627.txt
    Je passe donc par une Inputbox pour récuperer une valeur fournie par l'utilisateur, mais mon script ne reconnaît pas "MyValue" dans la condition.

    Voici le 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
     
    ' importation auto de tous les fichiers text du répertoire guardians selon datej
    Public Sub ImportDj()
        Dim FileName, FilePathName, Path, FileNamelist() As String
        Dim FileCount As Integer
        Dim Message, Title, Default, MyValue
     
        Message = "Début du nom de fichier"
        Title = "Variable extraction"
        Default = "G10220118"
        MyValue = InputBox(Message, Title, Default)
     
        DoCmd.SetWarnings False
        Path = "W:\FTP\RSFLERS\rapport_guardian2\"
        FileName = Dir(Path & "")
     
        While FileName <> "" And Right(FileName, 3) = "txt" And Left(FileName, 9) = "MyValue"
     
            FileCount = FileCount + 1
            ReDim Preserve FileNamelist(1 To FileCount)
            FileNamelist(FileCount) = FileName
            FileName = Dir()
     
        Wend
     
        If FileCount > 0 Then
            For FileCount = 1 To UBound(FileNamelist)
                FilePathName = Path & FileNamelist(FileCount)
                DoCmd.TransferText transferType:=acImportDelim, SpecificationName:="SpeImport", TableName:=FileNamelist(FileCount), FileName:=FilePathName, hasfieldnames:=False
     
     
            Next
        End If
        DoCmd.SetWarnings True
       MsgBox ("terminé !")
    End Sub
    Merci de votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    Bonjour kikinou61.

    Il faut prendre en compte que ton FileName commence par Dir(Path & "")
    Donc, pour rechercher ta valeur MyValue dans une chaine ,et non pas au début, il faut utiliser la fonction Mid.
    D'autre part, tu as mis des guillemet , = "MyValue" ,donc Access va chercher le texte "MyValue", au lieu de sa valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While FileName <> "" And Right(FileName, 3) = "txt" And Mid(FileName,31, 9) = MyValue
    31 étant (sauf erreur) le nombre de lettres dans "W:\FTP\RSFLERS\rapport_guardian2\".
    On peut aussi écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While FileName <> "" And Right(FileName, 3) = "txt" And Mid(FileName,Len(Path)+1, 9) = MyValue

    Cdlt

  3. #3
    Membre averti Avatar de kikinou61
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut probleme-syntaxe-vba
    Bonjour Thierry,

    J'ai essayé tes deux solutions, même en mettant 32 si on compte le '\' avant le nom du fichier txt, mais rien.
    Le script se termine sans erreur mais aucun résultat.
    Du coup, j'ai aussi essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While FileName <> "" And Right(FileName, 3) = "txt" And Left(Right(FileName, 19), 9) = MyValue
    en prenant en compte un nom du fichier complet : G10220118224514.txt mais c'est toujours pareil.

  4. #4
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    Il faudrait que tu expliques ce que tu veux faire exactement.
    Est-ce en fonction de la valeur par défaut de l'inputbox , ou bien la valeur tapée (dans l'inputbox) ?
    Ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim FileName as String, FilePathName as String, Path as String, FileNamelist() As String
    Utilise le 2° code que je t'ais donné, donc Mid(FileName,Len(Path), 9)+1 = MyValue (le + 1 puisqu' on veut commencer au caractère qui suit Path),
    place un point d'arret sur la ligne 17, et regarde les valeurs renvoyées Mid(FileName,31, 9).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While FileName <> "" And Right(FileName, 3) = "txt" And Mid(FileName,Len(Path)+1, 9) = MyValue
    Cdlt

  5. #5
    Membre averti Avatar de kikinou61
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 57
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Par défaut Syntaxe du Critère
    Bonjour Thierry,

    Je veux utiliser la valeur saisie par l'utilisateur, Default étant un exemple de masque de saisie.
    Voici ce que cela renvoie :
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    Bonjour kikinou61.

    En fait ton code n'est pas bon, il reste toujours sur le 1° fichier ,sans repasser par FileName = Dir()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       Path = "W:\FTP\RSFLERS\rapport_guardian2\"
        FileName = Dir(Path & "*.txt")    'Dir(Path & "")
     
        Do While Len(FileName) > 0
            If Left(FileName, 15) Like MyValue Then
     
                FileCount = FileCount + 1
                ReDim Preserve FileNamelist(1 To FileCount)
                FileNamelist(FileCount) = FileName
            End If
            FileName = Dir()
     
        Loop  'Wend
    15 ,c'est le nombre de caractère dans ton 2° post. Il doit correspondre au nbre de caractères tapés dans l'InputBox

    Cdlt

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

Discussions similaires

  1. [AC-2003] nom de fichier avec un espace pour import avec DoCmd.TransferSpreadsheet
    Par dyolet dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/12/2014, 18h56
  2. [AC-2003] Code VBA pour importer un fichier Excel dans access
    Par granddebutant dans le forum VBA Access
    Réponses: 5
    Dernier message: 24/01/2012, 14h51
  3. comparaison 1 fichier avec 1 feuille à 1 fichier avec 2 feuilles
    Par sofiane06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/08/2008, 13h21
  4. créer fichier avec un nom de fichier
    Par shirya dans le forum C++
    Réponses: 1
    Dernier message: 01/06/2008, 23h44
  5. Réponses: 2
    Dernier message: 26/01/2007, 14h58

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