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 :

liens hypertexte vers fichier existant


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tous,
    Je travaille sur une base de données Excel, qui envoie ses données sous Access. Lors de la recherche de ces données, elles s'affichent dans des cellules Excel.
    Une de ces données est le nom du schéma que j'ai inséré; j'aimerais pouvoir cliquer sur ce nom et que le fichier s'ouvre automatiquement.
    Tous les schémas sont contenus dans un dossier "link", qui est lui-même contenu dans le dossier parent du classeur.
    Connaissez vous la démarche afin que le nom s'affiche directement en liens hypertexte?
    Merci à tous, bonne journée.
    Cavrom

    Je pars avec une syntaxe du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'requête permettant de récupérer le nom du schéma
     
    Set Rs = Cnx.Execute("SELECT Link_train_diagram FROM Main_table WHERE project='" & choice_model & "'")
    Sheets("search").[C26].CopyFromRecordset Rs
     
    'partie permettant de convertir le nom du schéma en lien hypertexte
     
    Range("C26").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
    "Link\ & Range("C26").Value"
    le nom du fichier en C26 est bien converti en lien hypertexte, c'est bien le bon nom de fichier qui s'affiche, Microsoft Photo Editor s'ouvre, mais pas de photo... pouvez vous m'aider?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Points : 414
    Points
    414
    Par défaut Hyperlien sur image .jpg dans une cellule d'Excel en VBA
    Bonjour cavrom,

    1. Contexte des répertoires

    Citation Envoyé par cavrom Voir le message
    Tous les schémas sont contenus dans un dossier "link", qui est lui-même contenu dans le dossier parent du classeur.
    Supposons que l'on soit dans le dossier parent du classeur .xls. On y trouve deux sous-répertoires :

    • Link\Schema.jpg : C'est l'image au format .jpg d'un Train Diagram.
    • Excel\HLink.xls : C'est la maquette du classeur Excel pour insérer un hyperlien.


    Le nom "Excel" du répertoire du classeur importe peu puisqu'on sera dedans lors de l'exécution de la macro.
    Par contre il faut une image de test ayant le nom Schema.jpg dans le répertoire Link.

    2. Accès à l'image en Excel VBA

    La tentative initiale montre une concaténation du répertoire Link avec la valeur de la cellule C26 c-a-d la chaîne "Schema.jpg".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Link\ & Range("C26").Value"
    En rouge sont les erreurs de syntaxe car il faut fermer la double quote en fin du nom du répertoire Link et non après la propriété Value de la cellule C26.
    Sinon VBA ne va pas pouvoir accéder au contenu de la cellule C26 car on a deux constantes littérales "Link\ & Range(" d'une part et ").Value" d'autre part avec C26 au milieu un peu perdu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Link\" & Range("C26").Value
    On a déplacé la dernière double quote après l'anti-slash de Link.

    3. Chemin relatif par rapport au .xls

    Comme on se trouve dans le répertoire du classeur HLink.xls, il faut remonter au dossier parent par le classique ".." avant de redescendre dans le répertoire Link.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "..\Link\" & Range("C26").Value
    4. Le code du Module1 de la maquette HLink.xls

    Exprimons ce chemin relatif et la rangée et colonne de C26 avec des constantes en début du Module1 du classeur HLink.xls
    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
    Option Explicit ' Hyperlien sur image .jpg dans une cellule d'Excel en VBA
    Public Const pathPic = "..\Link\" ' Répertoire des schémas relatif à ce classeur
    Public Const rowPic = 26, colPic = 3 ' rangée et colonne de C26 du schéma
     
    Sub AddHLink() ' Point d'entrée principal de la maquette
    Dim strPicture As String
     
        DbReadTrainDiagram
        'partie permettant de convertir le nom du schéma en lien hypertexte
        strPicture = ThisWorkbook.Path + "\" + pathPic + Cells(rowPic, colPic)
        ActiveSheet.Hyperlinks.Add Anchor:=Cells(rowPic, colPic), Address:=strPicture
    End Sub
     
    Sub DbReadTrainDiagram() 'requête permettant de récupérer le nom du schéma
        Cells(rowPic, colPic) = "Schema.jpg" ' En C26 après lecture de la base Access
    End Sub
    Cells(rowPic, colPic) est plus court et plus rapide en temps d'exécution par rapport à l'initial Range("C26").Value
    Toute la valeur ajoutée de la description de la feuille Search avec des constantes, c'est que si on ajoute plus tard une rangée ou une colonne qui fait tout décaler, on n'aura à modifier que les constantes et pas "C26" partout dans le code. De plus cela permet de commenter le Module1.

    Comme la feuille Excel de la maquette HLink.xls est vide, on utilise le simulateur d'accès la base de données DbReadTrainDiagram(). Pour simplifier la maquette, on n'a pas besoin d'exécuter une requête SQL pour affecter la cellule C26 de la feuille "search" avec la chaîne "Schema.jpg"

    5. Test de la maquette

    Dans la fenêtre d'Exécution immédiate (Ctrl+G) du VBE, copier-coller et valider par ENTER :
    En cellule C26, on voit que Schema.jpg est un hyperlien pointant sur l'image dans le répertoire Link.
    Si on clique sur l'hyperlien, l'image apparaît dans le navigateur Internet si dans Windows, l'extension des fichiers images .jpg est associée au browser plutôt qu'à Microsoft Photo Editor.

    6. Conclusion

    Si la question n'a pas eu de réponse jusqu'à maintenant, c'est qu'elle est exprimée en terme complexe tel que "le dossier parent" sans donner d'exemple simple comme dans le chapitre 1.

    De plus toute la partie sur la base Access et la requête SQL dans le code proposé ont plutôt complexifié inutilement le problème.
    Il suffisait d'indiquer qu'est-ce qu'un nom de schéma dans la cellule C26.
    ___________

    Si la discussion est résolue, vous pouvez cliquer sur le bouton

    En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.

Discussions similaires

  1. [XL-2007] Activer lien hypertext vers internet au lancement du fichier
    Par gaston64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2013, 20h50
  2. [2010] Désactivations messages apres clic sur lien hypertexte vers fichier interne
    Par wrdaniel dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 27/07/2012, 13h22
  3. [XL-2003] Liens hypertexte vers des fichiers photos
    Par jcp66 dans le forum Excel
    Réponses: 9
    Dernier message: 24/05/2011, 07h19
  4. Excel : lien hypertexte vers un autre fichier avec nom page
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 09h33
  5. Comment exporter un lien hypertexte vers excel
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 09h33

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