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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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..

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