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 :

Comment extraire le chemin d'un lien calculé [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut Comment extraire le chemin d'un lien calculé
    Bonjour à tous,

    J'ai des cellules qui contiennent des liens hypertexte calculés avec des formules type hyperlink et concatener.
    Exemple:
    Dans la cellule A1 j'ai le contenu suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =HYPERLINK(CONCATENATE(G$3,H$3,"\",K3), L3)
    Cela me crée un lien valide et un affichage lisible (L3).

    Depuis une macro, je voudrais extraire de cela le lien sous la forme d'une chaine de caractères, tel qu'affiché lorsque je passe le pointeur de la souris sur le cellule. Soit qqch du genre "c:\data\ici\la\text.txt"

    - Si j'utilise cell.Formula, cela me donne le formule ci dessus ( "HYPERLINK(CONCATENATE(G$3,H$3,"\",K3), L3)" )
    - Et si je l’évalue avec Evaluate, cele me renvoi le texte en L3 (qui n'est que décoratif dans mon cas) mais pas le lien lui même.
    - J'ai aussi essayé de convertir en range pour ensuite appliquer Hyperlinks(1).Address
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(c.Address).Hyperlinks(1).Address          (où c est ma cellule A1).
    mais là mon range ne semble pas contenir de lien hypertexte (Range(c.Address).Hyperlinks.count retourne 0 )
    - Enfin si je sélectionne A1 et requiert Selection.Hyperlinks.Count, là encore j'ai 0! Mon lien n'est pas vraiment considéré comme tel ://

    Vos lumières sont les bienvenues, merci

    Alexandre

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Puisque ton lien est la concaténation des valeurs de tes 3 cellules, pour quoi faire le détour?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AdresseLien=Range("G3") & Range("H3") &"\" & Range("K3")

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    Salut Mercatog,

    C'est en effet une solution... À condition de savoir où sont les parties du chemin. Cet exemple est simplifié, mais en réalité je ne sais pas où sont les strings du chemin...
    Merci quand même pour l'idée.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
        Dim Var As String, Var1 As Integer
        With ActiveCell
            Var = Evaluate(Replace(Left(.Formula, InStrRev(.Formula, ",") - 1), "=HYPERLINK(", ""))
            Var1 = InStrRev(Evaluate(Replace(Left(.Formula, InStrRev(.Formula, ",") - 1), "=HYPERLINK(", "")), "\")
            MsgBox Left(Var, Var1 - 1)
        End With
    End Sub
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
        Dim Var As String, Var1 As Integer
        With ActiveCell
            Var = Evaluate(Replace(Left(.Formula, InStrRev(.Formula, ",") - 1), "=HYPERLINK(", ""))
            Var1 = InStrRev(Var, "\")
            MsgBox Left(Var, Var1 - 1)
        End With
    End Sub

    Je ne sais pas si c'est valable dans tous les cas de figure; en tout cas, il faut que le second paramètre (nom convivial) soit renseigné.
    Intéressant de noter, au passage, que le lien ne soit pas considéré comme hyperlink au niveau de la cellule.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    Bonsoir Daniel,

    Merci aussi pour cette solution. Je n'avais pas penser à récupérer le résultat du Concaténer...
    Ça marche en effet ! Par contre je ne vois pas l'usage du nom convivial ?

    Toutefois, n'y a t il aucune solution plus "régulière", qui évaluerait normalement le lien et permettrait d'en récupérer le ".Address" ?
    Comment se fait il que ce lien ne soit pas reconnu en tant que tel ? Faudrait il l'affecter à l'objet Cell pour qu'il soit reconnu ?

    Merci encore

    Alexandre

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Par contre je ne vois pas l'usage du nom convivial ?
    C'est le second paramètre de la fonction, celui qui apparaît dans la cellule :

    Aide Excel :

    Syntaxe
    LIEN_HYPERTEXTE(emplacement_lien, [nom_convivial])
    La syntaxe de la fonction LIEN_HYPERTEXTE contient les arguments suivants :
    emplacement_lien Obligatoire. Représente le chemin d’accès et le nom de fichier du document à ouvrir. L’argument emplacement_lien peut faire référence à un emplacement précis d’un document, tel qu’une cellule ou une plage nommée dans une feuille de calcul ou un classeur Microsoft Excel, ou bien à un signet d’un document Microsoft Word. Le chemin d’accès peut spécifier un fichier stocké sur un lecteur de disque dur. Il peut également s’agir d’un chemin UNC (convention d’affectation des noms) pour un fichier stocké sur un serveur (dans Microsoft Excel pour Windows), ou encore d’un chemin URL (Uniform Resource Locator) sur Internet ou un réseau intranet.

    Remarque Dans Excel Web App, la fonction LIEN_HYPERTEXTE est valide pour les adresses web (URL) uniquement.L’argument emplacement_lien peut être une chaîne de caractères entourée de guillemets ou une référence de cellule contenant le lien sous forme de chaîne de texte.

    Si le renvoi spécifié par l’argument emplacement_lien n’existe pas ou n’est pas accessible, une erreur s’affiche lorsque vous cliquez sur la cellule.

    nom_convivial Facultatif. Représente le texte de renvoi ou la valeur numérique qui s’affiche dans la cellule. Le contenu de la cellule est affiché en bleu et souligné. Si vous ne spécifiez pas l’argument nom_convivial, la cellule affiche l’argument emplacement_lien comme texte de renvoi.
    Toutefois, n'y a t il aucune solution plus "régulière"
    Je n'en ai pas trouvé. J'ai constaté, comme toi, que ce type de lien n'est pas comptabilisé comme lien hypertexte.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    LoL désolé me suis mal exprimé: j'ai bien compris le rôle de ce second paramètre dans la fonction hyperlink... mais c'est dans ton code que je n'en ai pas vu l'usage.
    en tout cas, il faut que le second paramètre (nom convivial) soit renseigné.
    [mise à jour] Ok, ok, j'ai pigé... Ce dernier paramètre est extrait par le left imbriqué !

    Bon, sinon, faute de plus "régulier" .... je vais essayer d'arranger cela à cette sauce ;-)

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment extraire le nom de fichier à partir d'un chemin?
    Par salimo79 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/07/2010, 03h58
  2. Réponses: 2
    Dernier message: 11/04/2009, 11h04
  3. Comment extraire le chemin du code source ?
    Par elsouljacker dans le forum Langage
    Réponses: 9
    Dernier message: 13/04/2007, 16h29
  4. Comment extraire chemin complet (UNC) d'un dossier ?
    Par kikica dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 27/10/2005, 17h25
  5. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 14h01

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