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 :

Requête SQL vers un classeur comportant des liens hypertexte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur en conception mécanique
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en conception mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Par défaut Requête SQL vers un classeur comportant des liens hypertexte
    Bonjour à tous/toutes !

    Comme précisé dans l'intitulé, j'ai réalisé une requête SQL via l'outil (sans passer par la partie VBA) pour récupérer une feuille "STOCK" d'un autre classeur qui sera utilisé en VBA après ! L'avantage de cette méthode est que les modifications sont gardées dans les deux sens via l'actualisation... Cependant la "source" comprend un tableau avec des liens hypertexte et après importation et/ou actualisation... SURPRISE: les cellules sont exportées sous format texte, sans les liens.

    En jetant un oeil ci dessous vous pourrez observer que le problème serait le "type" de {""Lien vers fichier"", type text} et {""Lien vers dossier"", type text}

    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
     
    Sub Partage()
    '
    ' Partage Macro
    '
     
    '
        ActiveWorkbook.Queries.Add Name:="STOCK_A", Formula:= _
            "let" & Chr(13) & "" & Chr(10) & "    Source = Excel.Workbook(File.Contents(""\\dsb-tchnovts\7 - Espace Individuel\Brot\VBA\3 - Recherche_Bibliothèque\Recherche_Bibliothèque_V1.23.xlsm""), null, true)," & Chr(13) & "" & Chr(10) & "    STOCK_A_Sheet = Source{[Item=""STOCK_A"",Kind=""Sheet""]}[Data]," & Chr(13) & "" & Chr(10) & "    #""En-têtes promus"" = Table.PromoteHeaders(STOCK_A_Sheet, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.Tra" & _
            "nsformColumnTypes(#""En-têtes promus"",{{""Noms"", type text}, {""Date de modification"", type datetime}, {""Lien vers fichier"", type text}, {""Lien vers dossier"", type text}, {""QTE#(lf)EN STOCK"", type any}, {""#(lf)Auteur #(lf)dernière sortie / entrée#(lf)"", type any}, {""Projet"", type any}, {""Qte#(lf) Avant modification"", type any}, {""Commentaire(s)"", ty" & _
            "pe any}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Type modifié"""
        Sheets.Add After:=ActiveSheet
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=STOCK_A;Extended Properties=""""" _
            , Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdSql
            .CommandText = Array("SELECT * FROM [STOCK_A]")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "STOCK_A"
            .Refresh BackgroundQuery:=False
        End With
        Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    End Sub
    Auriez-vous une idée pour conserver le format hypertexte? Aucun soucis si la manip' se tourne vers un code VBA

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je ne comprends pas ce que tu veux dire par "mise à jour dans les deux sens", car la requête Power Query que tu as proposée ne permet pas la mise à jour "dans les deux sens"... Peut-être as-tu du code pour renvoyer "dans l'autre sens"? Bref, ce n'est pas le sujet ici.


    A ma connaissance, les requêtes d'importation importent la donnée qui correspond en gros à cellule.Value pour tenter de coller au mieux au type de données. La deuxième étape "adapte" la valeur récupérée et c'est ce que tu constates avec "type text"... Jamais tu ne récupèreras le lien hypertexte d'une cellule par ce biais, car c'est une propriété de la cellule que Power Query n'est pas capable de ramener. Tu dois donc reconstruire ce lien après importation.
    • Si la valeur récupérée correspond au lien, ce n'est pas un problème, car tu peux mettre la colonne désirée au style de cellule "hypertexte";
    • C'est à mon avis impossible par Power Query si le lien est "masqué" dans la cellule source et ne correspond pas à ce qui est affiché, car Power Query ne connaîtra que .Value de la source pas .Hyperlinks(1);
    • Via Power Pivot, tu pourrais passer la colonne au data type "Web URL", à nouveau lorsque le lien correspond au texte qui est récupéré.


    Si les liens sont masqués derrière du texte, je ne vois pas d'autre solution qu'une importation classique en VBA qui prendrait en charge la copie des liens hypertextes (copier-coller mais attention aux scories) ou analyse des cellules censées contenir un hyperlien pour le récupérer et le restaurer dans la cible.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur en conception mécanique
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en conception mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Par défaut
    Visiblement je n'avais pas compris le principe ! J'essaie de passer par une MAJ via code VBA et je vous redis quoi

Discussions similaires

  1. [AC-2010] Exporter vers un classeur Excel des requêtes sous forme de TCD
    Par Conconsultant dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/04/2019, 15h23
  2. classeur comportant des liaisons avec un autre
    Par soussie dans le forum Excel
    Réponses: 5
    Dernier message: 12/09/2008, 16h08
  3. Distribuer les requêtes SQL vers d'autres serveurs BD
    Par mega_info dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/10/2007, 16h51
  4. Exporter une requête SQL vers excel
    Par Info_76 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2007, 09h09
  5. [MySQL] requête sql vers excel en php
    Par jenny06 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 20/04/2007, 11h27

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