none
VBA: QueryTables authentication RRS feed

  • Question

  • Bonjour à tous,

    Je suis tout nouveau en programmation vba et je rencontre un pb que je n'arrive pas à résoudre: j'essaie d'importer des données depuis un google spreadsheet vers excel. J'ai procédé comme suit: 

    - Démarrage de l'enregistrement d'une macro

    - Onglet Données -> A partir du Web

    - Je rentre l’adresse du google spreadsheet puis ok.

    - A la première connexion, je suis redirigé sur la page pour m'authentifier avec mon login & password Google et après connexion, j'accède bien à mon tableau. 

    - Je sélectionne le tableau de data et j'importe

    - Une fois le tableau copié dans excel j’arrête la macro et le code vba ressemble à ca: 

    With ThisWorkbook.Sheets("Temp").QueryTables.Add(Connection:= _
            "URL;"URL de mon google spreadsheet"", Destination:=ThisWorkbook.Sheets("Temp").Range("$A$1"))
            .Name = "Le nom de ma Query"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            .WebTables = """tblMain"""
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    

    Bref, jusque là, pas de pb, tout fonctionne correctement et j'arrive à importer les données. Par contre, lorsque j'envoie mon fichier excel à quelqu'un d'autre et qu'il exécute la macro, l'onglet Temp est vide (ps: il a les droits en lecture et écriture). 

    Après quelques recherches sur le net, j'ai l'impression que cela vient du fait que l'utilisateur n'est pas authentifié lorsqu'il exécute la macro. En effet, la query passe par internet explorer pour récupérer les données et ce n'est pas le browser par défaut de l'utilisateur. Cependant, si l'utilisateur se connecte au préalable à Google en utilisant internet explorer (sans passer par excel) ça ne fonctionne pas non plus. Comme si l'instance d'internet explorer utilisée dans excel n'était pas la même. 

    Donc ma question est de savoir s'il y a un moyen pour que l'utilisateur s'authentifie (si pas déjà authentifié) via la query pour importer les données ? Si oui, comment faire ? 

    Merci par avance pour vos réponses

    mardi 23 septembre 2014 10:19