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

Excel Discussion :

Import donnees csv avec QueryTable.Refresh [XL-2007]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut Import donnees csv avec QueryTable.Refresh
    Bonjour,

    Je ne manipule pas souvent VBA et je galère depuis un moment car je souhaite écrire une macro qui importe des données provenant de fichiers csv dont je ne connais pas l'emplacement et le nom a l'avance.
    J'utilise donc QueryTable.Refresh plutôt que QueryTables.Add.

    Voici mon 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
     
    Sub ma_fonction()
        ' Ajout du 1er csv dans feuil_1
        Sheets("feuil_1").Select
        Range("A2").Select
        With Selection.QueryTable
            .TextFilePlatform = 65001
            .TextFileStartRow = 2
        End With
        Selection.QueryTable.Refresh BackgroundQuery:=False
     
     
        ' Ajout du 1er csv dans feuil_2
        Sheets("feuil_2").Select
        Range("A2").Select
        With Selection.QueryTable
            .TextFilePlatform = 65001
            .TextFileStartRow = 2
        End With
        Selection.QueryTable.Refresh BackgroundQuery:=False
     
     
    End Sub
    La première fois que j'ai exécué ma fonction j'ai bien réussi à avoir l'explorateur de fichier pour choisir l'emplacement de mon 1er csv et l'import de ce 1er csv a bien été réalisé, j'ai ensuite eu une erreur pour le 2eme csv.
    L'erreur est du type: Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet
    J'ai relancer ma fonction et maintenant j'ai l'erreur même dès le 1er csv.

    J'ai essayé un ActiveWorkbook.RefreshAll qui ne m'a rien apporté.
    On dirais que quelque chose est resté en cache ....

    Est-ce que quelqu'un a une idée pour me débloquer?
    Merci pour votre aide

    Claire

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut Solution
    Bonjour,

    J'ai trouvé la solution à mon problème.
    J'ai finalement écrit une fonction qui utilise:

    Application.GetOpenFilename("Fichiers CSV (*.csv), *.csv", , "Fichier a importer")

    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
     
    Sub Add_Data(feuille As String, cellule As String, comment As String)
     
        rep = Application.GetOpenFilename("Fichiers CSV (*.csv), *.csv", , comment)
     
        If rep <> False Then
            With ActiveSheet.QueryTables.Add(Connection:= _
                "TEXT;" + rep, Destination:=Range(cellule))
                .Name = "feuille"
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePromptOnRefresh = False
                .TextFilePlatform = 65001
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileConsecutiveDelimiter = False
                .TextFileTabDelimiter = True
                .TextFileSemicolonDelimiter = False
                .TextFileCommaDelimiter = True
                .TextFileSpaceDelimiter = False
                .TextFileColumnDataTypes = Array(1, 1, 1, 1)
                .TextFileTrailingMinusNumbers = True
                .Refresh BackgroundQuery:=False
            End With
        End If
    End Sub

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

Discussions similaires

  1. [MySQL] Importer un csv avec un script php
    Par helkøwsky dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/06/2012, 11h56
  2. [AC-2002] Import fichier csv avec parametre
    Par ratapoilu dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/04/2012, 11h28
  3. [AC-2002] Import fichier csv avec parametre
    Par ratapoilu dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/04/2012, 17h43
  4. Importer fichier csv avec changement de nom
    Par devilprinprin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2010, 08h24
  5. Problème d'import fichier csv avec PostgreSQL
    Par Aztecks dans le forum Ruby
    Réponses: 10
    Dernier message: 10/11/2009, 11h42

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