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 :

Hyperlink invisible Excel VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut Hyperlink invisible Excel VBA
    Bonjour,
    J'aimerais rendre invisible le texte d'un lien vers internet dans une cellule Excel en programmation VBA.
    Dans cette même cellule j'affiche une icône.
    En cliquant sur l'icône j'aurais voulu être dirigé vers la page internet.
    Si quelqu'un pouvait m'aider je lui en serais drôlement reconnaissant.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 594
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 594
    Par défaut
    Il faut mettre l'hyperlien sur cette icone et pas en texte

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Aïe aïe, je vais essayer de trouver la fonction alors.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, vois si ça peut t'aider:

    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
    Sub CacherLien()
        Dim ws As Worksheet
        Dim cell As Range
        Dim hyperlink As hyperlink
     
        ' Spécifiez la feuille de calcul où se trouve votre lien
        Set ws = ThisWorkbook.Worksheets("Feuil1")
     
        ' Spécifiez la cellule contenant le lien et le texte à cacher
        Set cell = ws.Range("A1")
     
        ' Supprimez le texte affiché dans la cellule
        cell.ClearContents
     
        ' Créez un nouvel objet Hyperlink et définissez l'adresse URL et le texte à afficher
        Set hyperlink = cell.Hyperlinks.Add(cell, "https://www.exemple.com/")
        'si tu veux cacher complètement le texte du lien, supprime la ligne ci-dessous
        hyperlink.TextToDisplay = "Cliquez ici"
    End Sub

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 594
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 594
    Par défaut
    Ton icone est sans doute un Shape de la feuille, donc avec un code de ce type (à adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Worksheets(1) 
     .Hyperlinks.Add Anchor:=.Shapes(1), _ 
     Address:="https://example.microsoft.com", _ 
     ScreenTip:="Microsoft Web Site", _ 
     TextToDisplay:="Microsoft" 
    End With
    https://learn.microsoft.com/fr-fr/of...hyperlinks.add

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Merci les amis,
    C'est bien ça mais je ne parviens pas à retranscrire ce code en Xojo (RealBasic) ou Delphi.
    Il y a toujours un petit truc à écrire différemment et je ne l'ai pas encore trouvé sur le net, je continue.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Pour le moment j'en suis à ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      iCol = 0
      iLine = 1
     
      CaseXY = Chr(65+iCol+2) + Str(iLine)
      Excel.ActiveSheet.Range(CaseXY).Select_
      Excel.ActiveSheet.Pictures.Insert("E:\Projets informatiques\Icones\RB\Wikipedia.png").Select_
     
      Excel.range(CaseXY).Value = " "
      Excel.range(CaseXY).Hyperlinks.Add(Excel.ActiveSheet.Range(CaseXY),"https://fr.wikipedia.org/wiki/Cheval", " ")
    La valeur de cellule " ", caractère blanc, me sert à cacher le texte du lien mais il reste le "soulignage" de ce caractère blanc.
    Je dois encore figer l'icône sinon lorsque je clique dessus je n'ai que la possibilité de déplacer l'icône.
    Donc je peux afficher l'icône et le lien internet mais ce n'est pas optimal ou transparent.

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    J'ai enfin pu adapter un code à ce que je voulais obtenir!
    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
    Dim Excel As New ExcelApplication
     
      Excel.Workbooks.Add
      Excel.Visible = True
     
      Excel.ActiveSheet.Cells(2, 2).Select_  // Par exemple.
     
      Dim Pic As String = "E:\Projets informatiques\Icones\RB\Wikipedia.png"  // Chemin de l'image.
     
    ws.Shapes.AddPicture(PicWikipedia,_  // Nom du fichier.
          Office.msoFalse, _   // Lien vers le fichier.
          Office.msoTrue, _  // Sauvegarde avec le document..
          Excel.ActiveCell.Left, _   // Paramètre gauche.
          Excel.ActiveCell.Top, _  // Paramètre au-dessus.
          -1, _  // Width (-1 = On garde la largeur originale).
          -1)  // Height (-1 = On garde la hauteur originale).
          ws.Shapes(PicNr).Name = "PicWikipedia" + Str(PicNr)
     
          //On ajoute le lien à la shape.
          Excel.ActiveSheet.Hyperlinks.Add(Excel.ActiveSheet.Shapes("PicWikipedia" + Str(PicNr)), "https://fr.wikipedia.org/wiki/" + Mot, "Wikipedia", "Mot")
    Je ne suis pas sûr à 100% de la façon de traiter la "shape", pour que ça marche, j'ai dû incrémenter la shape de PicNr pour chaque ligne de la feuille même si l'icône est identique pour chaque ligne.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 594
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 594
    Par défaut
    c'est une info supplémentaire que l'on avait pas, que le code était pour un autre langage, vu qu'on est dans une section VBA, on s'attend à du code VBA (par définition).
    Tu dois utiliser l'Interop Excel donc.

    Je séparerai la création de son nommage (pas obligatoire) et je récupérerai l'image à sa création
    idem pour la worksheet (variable ws non défini dans ton code) et la cellule (objet Range)
    (à utiliser de préférence (selon moi) à la place de Excel.ActiveSheet ou AcitveCell )


    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
    Dim Excel As New ExcelApplication
     Dim wb as Workbook
     Dim r as Range
     Dim ws as WorkSheet
     
      Set wb = Excel.Workbooks.Add
      Excel.Visible = True
      Set ws = wb.WorkSheets(1) 
      Set r = ws.Cells(2, 2) // Par exemple.
     
      Dim Pic As String = "E:\Projets informatiques\Icones\RB\Wikipedia.png"  // Chemin de l'image.
      dim myShape as Shape 
      Set myShape =ws.Shapes.AddPicture(PicWikipedia,_  // Nom du fichier.
          Office.msoFalse, _   // Lien vers le fichier.
          Office.msoTrue, _  // Sauvegarde avec le document..
          r.Left, _   // Paramètre gauche.
          r.Top, _  // Paramètre au-dessus.
          -1, _  // Width (-1 = On garde la largeur originale).
          -1)  // Height (-1 = On garde la hauteur originale).
          ws.Shapes(PicNr)
      myShape.Name = "PicWikipedia" + Str(PicNr)
     
          //On ajoute le lien à la shape.
          ws.Hyperlinks.Add(Excel.ActiveSheet.Shapes(myShape.Name, "https://fr.wikipedia.org/wiki/" + Mot, "Wikipedia", "Mot")

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Ah! Excuse-moi, j'avais précisé que je voulais adapter le code VBA en Xojo (RealBasic) ou Delphi.
    De là la difficulté, il y a toujours des petits trucs à trouver et à adapter.

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 594
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 594
    Par défaut
    sans doute au niveau des déclarations des variables
    Par exemple, dans la doc de Xojo https://documentation.xojo.com/api/w...ml#sample-code
    Var excel As New ExcelApplication
    Var book As ExcelWorkbook
    Var sheet As ExcelWorksheet

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 265
    Par défaut
    Ça c'est depuis je ne sais quelle version de Xojo.
    J'en suis toujours à la version 2010 et là c'était Dim et pas Var.
    Peu importe la syntaxe, ça marche et en ai peu à faire des remarques de ce genre par contre je ne t'ai pas vu avant pour apporter une solution.
    C'est fou depuis que je suis né je ne vois que des critiques jamais rien de constructif!
    Je suis sûr que le code que j'ai donné peut fonctionner partout.

  13. #13
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 290
    Par défaut
    Benoit
    Si vous faites allusion à la remarque d'umfred, que je salue, dans son Post#9, elle est légitime.
    Dans le Post#1 rien est indiqué à propos de Xojo. Ça arrive qu'au bout du Post#6 et Post#10.
    Citation Envoyé par BBouille Voir le message
    ... en ai peu à faire des remarques de ce genre par contre je ne t'ai pas vu avant pour apporter une solution.
    C'est fou depuis que je suis né je ne vois que des critiques jamais rien de constructif!...
    Peut-être devriez-vous solliciter à nouveau Eugene Dakin !
    Citation Envoyé par BBouille Voir le message
    ... Je suis sûr que le code que j'ai donné peut fonctionner partout.

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 594
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 594
    Par défaut
    Excuse nous de ne pas avoir su quelle version de Xojo tu utilises, et quelles difficultés d'adaptation/retranscription du code tu rencontrais. Nous aurions dû utiliser notre boule de cristal, c'est vrai (mais bon elle est en panne, pas de bol).

    Ma remarque sur ActiveCell/ActiveSheet, c'est que ça pointe sur la cellule/feuille active; ce qui parfois peut ne pas être celle que l'on croit, c'est pourquoi que ma préférence va vers utiliser des objets bien identifiés (feuille "truc", cellule "A12"), comme ça, on est sûr de la cible.

Discussions similaires

  1. Comment créer des hyperlinks dans Excel faisant référence à Word?
    Par mouncefdi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/04/2009, 10h42
  2. [VBA] Conversion de texte en lien hyperlink sous Excel
    Par logica dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/06/2006, 14h10
  3. [VBa-E] Feuille de calcul excel Invisible?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/06/2006, 11h35
  4. Hyperlink dans Excel
    Par cedrolin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2006, 08h54
  5. Macro invisible dans Excel
    Par Christian Lab dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/03/2006, 16h52

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