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

Macros et VBA Excel Discussion :

Macro avec données externe


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut Macro avec données externe
    Bonjour

    Je crée une macro en allant chercher un fichier externe CSV. (sne?fcs102m)
    donc je fais enregistrer une macro;
    Je vais sur la cellule de ma feuille
    Je clique sur données, puis sur obtenir des données, puis a partir d'un fichier texte/csv.
    Je clique sur mon fichier et importer. un tableau apparait. Le délimiteur est bon (point virgule).
    Je fais modifier, un nouveau tableau apparait.
    Je supprime les colonnes ne m'intéressant pas.
    Je clique sur fermer et charger, puis je clique sur fermer et charger dans .....
    un pop-up s'ouvre (importation des données)
    je coche sur "feuille de calcul existante" et je met la cellule où je veux B4 par exemple.
    Tout est bon. super.
    J’arrête la macro.

    Je supprime le tableau, et je refais la macro en pas à pas.
    et là il y a une erreur.
    Il y a indiqué "Erreur d’exécution '2147024809 (80070057)
    Une requête portant le nom 'sne (6)' existe déjà.
    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
       ActiveWorkbook.Queries.Add Name:="sne (6)", Formula:= _
            "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""\\NXPFile001.commun01.svc\VDI_CA-GIP$\Homedir_VDI_CAGIP\U54KR63\My Documents\Thierry\Production\LCL\Suivi acces passerelles SGF\2021\Fichiers Février 2021\sne.fcs102m""),[Delimiter="";"", Columns=12, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", ty" & _
            "pe text}, {""Column2"", type text}, {""Column3"", type date}, {""Column4"", type text}, {""Column5"", Int64.Type}, {""Column6"", Int64.Type}, {""Column7"", Int64.Type}, {""Column8"", Int64.Type}, {""Column9"", Int64.Type}, {""Column10"", Int64.Type}, {""Column11"", Int64.Type}, {""Column12"", type text}})," & Chr(13) & "" & Chr(10) & "    #""Colonnes supprimées"" = Table.RemoveColumns(#""Type " & _
            "modifié"",{""Column1"", ""Column3"", ""Column12""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Colonnes supprimées"""
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""sne (6)"";Extended Properties=""""" _
            , Destination:=Range("$B$4")).QueryTable
            .CommandType = xlCmdSql
            .CommandText = Array("SELECT * FROM [sne (6)]")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "sne__6"
            .Refresh BackgroundQuery:=False
        End With
    Comment je peux contourner ce problème
    Merci beaucoup.
    Cordialement

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Passer par VBA pour construire une requête PowerQuery est contre productif

    Quel est l'objectif final ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut
    Bonjour
    Je dois récupérer des données provenant du mainframe chaque mois pour avoir un document de travail pour notre client.
    Que me proposez vous ?
    Sachant que je viens changer de version excel. Avant cela fonctionnait très bien, mais j'utilisais un fichier texte.
    Cordialement

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Partir d'un classeur vierge

    Faire la manip sans enregistreur macro jusqu'au chargement du tableau dans un onglet en laissant 2 lignes vides (donc coin du tableau en A3 par exemple)

    Dans une cellule de la ligne 1, B1 par exemple, taper le chemin d'accès au fichier et le nom du fichier : exemple D:\Dossier Truc\toto.csv
    Sans doute dans ton cas "\\NXPFile001.commun01.svc\VDI_CA-GIP$\Homedir_VDI_CAGIP\U54KR63\My Documents\Thierry\Production\LCL\Suivi acces passerelles SGF\2021\Fichiers Février 2021\sne.fcs102m"

    Nommer la cellule Fichier

    Ouvrir PowerQuery: la 1ère étape de la requête (liste des étapes à droite) est Source : cliquer sur Source et dans la barre de formule de PowerQuery remplacer la référence au fichier chargé, guillemets compris, par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel.CurrentWorkbook(){[Name="Fichier"]}[Content][Column1]{0}
    Vérifier que c'est OK (pas d'erreur affichée) et fermer PowerQuery

    Chaque mois il suffit de changer le contenu de la cellule Fichier puis d'actualiser la requête

Discussions similaires

  1. Réponses: 20
    Dernier message: 24/02/2021, 23h23
  2. [XL-2013] Calcul dans TCD avec données externes d'un autre TCD
    Par CCE13 dans le forum Excel
    Réponses: 5
    Dernier message: 23/06/2016, 16h11
  3. [AC-2007] Enregistrer une table avec données externes
    Par Lyysis dans le forum IHM
    Réponses: 4
    Dernier message: 27/05/2013, 23h50
  4. Donnée externe avec une macro
    Par swissmade dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/08/2007, 16h48
  5. [VBA-E] macro avec base de données externe
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2007, 14h12

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