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 :

[VBA-E] -Hyperlinks pages htm


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut [VBA-E] -Hyperlinks pages htm
    Bonjour,
    J'ai écrit une macro en VBA dans laquelle je crée des liens hypertext dans des cellules vers des pages html.
    Lorsque je regarde le résultat (lien créé dans la cellule), le chemin complet a été ajouté, ce qui ne rend pas mon code portable.
    exemple, dans le VBA, je crée le lien "Page.htm" et lorsque je consulte le lien créé dans la cellule, il est écrit "file:///c:\répertoire\page.htm" !!!
    Comment créer un lien sans que soit généré le chemin de la page ?
    En fait, page.htm se trouve dans le répertoire courant et je veux pouvoir déplacer ce répertoire sur n'importe quel autre disque et que le lien fonctionne toujours, ce que ne permet pas ce lien "en dur" créé automatiquement par VBA.
    Merci beaucoup de votre aide.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    on pourrai voir le code ... et savoir comment il est lancé..?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut
    Voici un exemple très simple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("A1").Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="page%20.htm"
    Or, lorsque je regarde le ien créé dans la cellule A1, il est écrit :

    file:///C:\Users\Jacques\Documents\page.htm

    Si je déplace le classeur, par exemple sur mon disque D, le lien n'est plus correct, car il reste comme ci-dessus au lieu de file:///D:\page%20.htm

    Suis-je clair ?

    L'exemple réel est plus compliqué ! En effet, j'ai écrit un programme en VBA qui lance des requêtes sur une base Oracle pour y récupérer des valeurs numériques et qui génère des Smileys (rouge, orange ou vert) dans des cellules. Ensuite, cette page de Smileys est sauvegardée comme page WEB par le VBA et je dois ensuite copier (manuellement) cette page sur un Serveur. C'est pour celà que je suis embêté avec ce lien "en dur" puisque les pages à appeler sont sur mon Serveur et le répertoire est par conséquent différent.

    Merci de votre aide.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    Une solution pourrait consister à vérifier lors de l'ouverture du classeur si le répertoire indiqué dans les liens est identique à celui du classeur .
    Si le répertoire est erroné, la macro boucle sur les liens de la premiere feuille de calcul afin de modifier le chemin:


    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
    Private Sub Workbook_Open()
        Dim Cible As String, Texte As String
        Dim x As Integer
        Dim Lien As Hyperlink
     
        For Each Lien In ThisWorkbook.Worksheets(1).Hyperlinks
            Cible = Lien.Address
            x = InStr(1, StrReverse(Cible), "\")
     
            Texte = Lien.TextToDisplay
            If Left(Cible, Len(Cible) - x) <> ThisWorkbook.Path Then
                Lien.Address = ThisWorkbook.Path & Right(Cible, x)
                Lien.TextToDisplay = Texte
            End If
        Next Lien
    End Sub


    michel

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Citation Envoyé par jacques13
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="page%20.htm"
    Or, lorsque je regarde le ien créé dans la cellule A1, il est écrit :
    file:///C:\Users\Jacques\Documents\page.htm
    C'est très étrange, moi, je suis en Office 2000 et ça ne fait pas ça du tout...
    Ca me donne bien un chemin relatif, et dans A1 j'ai bien : "Page .htm"

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut
    Merci, mais cette solution ne peut pas s'appliquer dans mon cas : rappel du contexte :

    1) Ma macro, assez longue, exécute des requêtes sur une table Oracle pour récupérer des valeurs numériques, pour un mois donné.
    2) En fonction des valeurs numériques récupérées, la macro crée des smileys sur une page (environ 150 répartis en 22 lignes et 6 colonnes).
    3) Chacun des smileys (police Windings) peut être vert, orange ou rouge, en fonction de la valeur récupérée. Ces valeurs seront différentes chaque mois, donc les smileys, pourront changer de couleur d'un mois sur l'autre.
    4) La macro crée une page htm avec les smileys.

    Jusque là, tout fonctionne comme je l'attendais, excepté que le chemin se retrouve dans ma page htm et qu'elle ne devient plus portable de ce fait.

    5) Je dois envoyé cette page htm par mail afin que le destinataire la copie dans un répertoire (sur une autre machine) qui contient déjà les autres pages auxquelles elle fait appel. Je ne suis donc pas censé connaître le répertoire où sera rangée cette page et les autres pages auxquelles les liens font appel. Or la macro a "arbitrairement" ajouté le chemin dans le lien, et par conséquent ne retrouve plus les pages correspondantes.

    Dernière précision, je suis en office 2003 english.

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    je viens de faire l'essai en version 2002 .. française et pas de problème...le lien (créé avec ton code ..) reste bien relatif à la position du classeur..

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Bon apparemment, ca viendrait de Office2003???
    En attendant que qqn qui a Office 2003 veuille bien se pencher sur le probleme...
    Que te donne l'enregistreur de macro quand tu modifies ton lien manuellement en chemin relatif?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut
    Bonjour,
    Merci de vos réponses.
    Avez-vous essayé de sauvegarder le classeur et de le réouvrir en activant les macros ?
    Si oui, passez la souris sur le lien (elle se transforme en une petite main).
    Qu'indique alors le lien ?
    Moi, en faisant cette manip, le chemin a été rajouté au nom de la page.

    En fait, je me suis trompé sur la version d'office que j'ai au bureau : c'est bien le version xp !

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Oui oui, enregistré et déplacé, et dans la cellule A1 j'ai toujours "Page .htm"
    et le lien m'ouvre bien la page dans le dossier du fichier Excel.

    Le texte affiché en tooltip n'est qu'une interprétation du chemin absolu par Excel. Mais même une fois déplacé, en passant la souris, j'ai le nouveau chemin de la page htm, qui fait référence au dossier ThisWorkbook.Path.
    Pour qu'il n'affiche pas cela, il suffit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="page%20.htm", _
    ScreenTip:="aller à la page"

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut
    Merci beaucoup de consacrer du temps pour m'aider.
    Mon problème vient du fait que je sauvegarde ma page de smileys en page WEB et que c'est cette page que je déplace.
    Lorsque la page WEB est enregistrée (uniquement la sélection que je fais du tableau des Smileys), si je l'ouvre, par exemple avec wordpad, le chemin est écrit en dur dans href !

Discussions similaires

  1. Modèle de page HTM pour copier/vers
    Par freya91 dans le forum IHM
    Réponses: 2
    Dernier message: 08/06/2006, 09h52
  2. [VB]Afficher une page ".htm" ou ".html"
    Par Claude l'ancien dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 22/01/2006, 13h38
  3. Afficher une page HTM ds un frameset
    Par roro56 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/12/2005, 10h19
  4. [VBA-E] Impression page paire sur plusieurs onglets
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 17/02/2005, 15h19
  5. [VBA] Saut de page...
    Par _Maniak dans le forum Général VBA
    Réponses: 5
    Dernier message: 24/09/2004, 15h26

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