Power Query Comment conserver les liens hypertexte suite a une Requêtes Powerquery

lennyg

XLDnaute Nouveau
Bonjour à tous

je voudrais d'abord vous remercier grâce a vous j'ai découvert Powerquery et cela m'aide beaucoup

cependant j'ai encore besoin de votre aide sur le fichier ci-joint .

j'ai créé une requête pour afficher une copie du tableau sommaire pour faire une feuille avec seulement les procédures par service
ces feuilles évolue avec le temps tout marche bien seul problème j'aimerais conserver les liens hypertexte présent sur le sommaire.
je n'ai pas trouvé comment faire sachant que j'ai un peu plus d'onglet sur le fichier de base un onglet pour chaque services.
j'ai changé les lien hypertexte aussi pour garder les chemins d'accès confidentiel

j'espère être clair n'hésitez pas a regarder le fichier vous allez mieux comprendre

le fichier contient des requêtes Powerquery
 

Pièces jointes

  • Classeur1.xlsx
    72.2 KB · Affichages: 7
Solution
Bonjour lennyg, chris, le forum,

Avec ce fichier (4) tous les liens de la feuille "Sommaire" sont traités :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire]
    If c <> "" Then If c.Hyperlinks.Count Then d(c.Value) = c.Hyperlinks(1).Address 'mémorise l'adresse du lien
Next c
For Each c In [Procédures_Applicable_HSE]
    If d.exists(c.Value) Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V]
    If d.exists(c.Value) Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
3 liens digiqual sont parfaitement restitués dans la 2ème feuille.

A+

lennyg

XLDnaute Nouveau

job75

XLDnaute Barbatruc
Avant de créer les liens hypertextes il faut mémoriser leurs adresses, la macro du bouton "Liens" :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
ThisWorkbook.RefreshAll 'actualise les tableaux PQ
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire[Liaisons PCVEHS ]]
    If c.Hyperlinks.Count Then d(c.Value) = c.Hyperlinks(1).Address 'mémorise l'adresse du lien
Next c
For Each c In [Procédures_Applicable_HSE[Liaisons PCVEHS]]
    c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V[Liaisons PCVEHS]]
    c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
Notez l'espace superflu dans le nom de la colonne "Liaisons PCVEHS " du tableau "Sommaire".
 

Pièces jointes

  • Classeur(1).xlsm
    85.3 KB · Affichages: 1

job75

XLDnaute Barbatruc
Au temps pour moi, il ne faut pas dans la macro actualiser les tableaux PQ :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire[Liaisons PCVEHS ]]
    If c.Hyperlinks.Count Then d(c.Value) = c.Hyperlinks(1).Address 'mémorise l'adresse du lien
Next c
For Each c In [Procédures_Applicable_HSE[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
Mais les liens créés ne sont pas ceux de la feuille "Sommaire", ils ne fonctionnent pas.
 

Pièces jointes

  • Classeur(2).xlsm
    84.8 KB · Affichages: 6

lennyg

XLDnaute Nouveau
Au temps pour moi, il ne faut pas dans la macro actualiser les tableaux PQ :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire[Liaisons PCVEHS ]]
    If c.Hyperlinks.Count Then d(c.Value) = c.Hyperlinks(1).Address 'mémorise l'adresse du lien
Next c
For Each c In [Procédures_Applicable_HSE[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
Mais les liens créés ne sont pas ceux de la feuille "Sommaire", ils ne fonctionnent pas.
ça ressemble un peu oui en effet les liens ne fonctionne pas et ils sont pas tous fonctionnel :s ça l'air compliqué a faire
 

job75

XLDnaute Barbatruc
En fait les liens du tableau "Sommaire" ont tous la même adresse web "https://www.wowhead.com/fr".

Utilisez donc ce fichier (3) :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire[Liaisons PCVEHS ]]
    If c.Hyperlinks.Count Then d(c.Value) = "https://www.wowhead.com/fr" 'mémorise l'adresse du lien"
Next c
For Each c In [Procédures_Applicable_HSE[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
 

Pièces jointes

  • Classeur(3).xlsm
    85.5 KB · Affichages: 2

lennyg

XLDnaute Nouveau
En fait les liens du tableau "Sommaire" ont tous la même adresse web "https://www.wowhead.com/fr".

Utilisez donc ce fichier (3) :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire[Liaisons PCVEHS ]]
    If c.Hyperlinks.Count Then d(c.Value) = "https://www.wowhead.com/fr" 'mémorise l'adresse du lien"
Next c
For Each c In [Procédures_Applicable_HSE[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
oui mais c'est juste pour le test qu'il ont tout la même adresse en vrai ce n'est pas le cas au début j'ai changé j'en ai mis des diffèrent mais je ne pouvais pas tous les changer par des différents a chaque fois les lien digiqual et les ancien numéro ne s'affiche pas du tout
 

lennyg

XLDnaute Nouveau
Je ne vois pas comment récupérer l'adresse web, les liens du fichier (2) conduisent à des fichiers.
j'avoue que je suis un peu perdu j'ai l'impression que ce n'est pas possible ou trop complexe c'est dommage que powerquery ne détecte pas automatiquement les liens il suffirait qu'il ajoute la fonction quand la case est au format lienhypertexte -_-'

et oui les liens du fichier 2 il a récupéré mes liens d'origine que j'avais effacé étrangement
 

lennyg

XLDnaute Nouveau
Au temps pour moi, il ne faut pas dans la macro actualiser les tableaux PQ :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire[Liaisons PCVEHS ]]
    If c.Hyperlinks.Count Then d(c.Value) = c.Hyperlinks(1).Address 'mémorise l'adresse du lien
Next c
For Each c In [Procédures_Applicable_HSE[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V[Liaisons PCVEHS]]
    If c <> "" Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
Mais les liens créés ne sont pas ceux de la feuille "Sommaire", ils ne fonctionnent pas.


Bonjour est il possible d'ajouter également les liens hypertexte sur la colonne numéro digiqual et ancien numéro ?
Comme ça je vais pouvoir essayer sur mon fichier de base si cela fonctionne merci encore pour votre aide
 

chris

XLDnaute Barbatruc
Bonjour à tous
c'est dommage que powerquery ne détecte pas automatiquement les liens il suffirait qu'il ajoute la fonction quand la case est au format lienhypertexte
PowerQuery est un requêteur.

Comme tous les requêteurs il manipule des données brutes, typées, et ne traite donc pas le format : dans les systèmes de bases de données où sont nés les requêteurs, le format est totalement indépendant des données et passe par des outils de représentation des données : écrans d’interface utilisateurs, listings d'impressions...
Cela est très souple et très puissant.

Excel mélange la donnée et sa représentation ce qui présente des avantages et des inconvénients

PowerQuery propose de restituer les données brutes sous forme de tableau structuré ou de TCD

Je doute que PowerQuery évolue sur l'aspect des hyperliens

Il y a eu plusieurs propositions de VBA ici et sur l'autre fil
Selon ton besoin, à définir clairement, tu as donc le choix des solutions
 

job75

XLDnaute Barbatruc
Bonjour lennyg, chris, le forum,

Avec ce fichier (4) tous les liens de la feuille "Sommaire" sont traités :
VB:
Private Sub CommandButton1_Click() 'bouton Liens
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Sommaire]
    If c <> "" Then If c.Hyperlinks.Count Then d(c.Value) = c.Hyperlinks(1).Address 'mémorise l'adresse du lien
Next c
For Each c In [Procédures_Applicable_HSE]
    If d.exists(c.Value) Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
For Each c In [Procédures_Applicable_M_V]
    If d.exists(c.Value) Then c.Hyperlinks.Add c, d(c.Value) 'crée le lien
Next c
End Sub
3 liens digiqual sont parfaitement restitués dans la 2ème feuille.

A+
 

Pièces jointes

  • Classeur(4).xlsm
    85.5 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG