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 :

Lien hypertexte dans cellule variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Par défaut Lien hypertexte dans cellule variable
    Bonjour à tous,

    Je tente de créer un bout de macro qui demande de sélectionner un fichier, puis qui extrait son chemin pour le mettre sous forme de lien hypertexte dans une cellule.

    Pour l'instant j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim CheminPJ As String
    Chemin = Application.GetOpenFilename
    With Worksheets(1)
        .Hyperlinks.Add .Range("C38"), Chemin
    End With
    Et ça marche très bien.

    Le problème, c'est qu'en réalité je voudrais écrire non pas dans la cellule C38, mais dans la cellule qui est un cran à coté de ma cellule active.

    J'ai donc essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ActiveCell.Offset(0, 1).Activate
    With Worksheets(1)
        .Hyperlinks.Add .ActiveCells, Chemin
    End With
    Mais ça ne marche pas.
    J'imagine que .Hyperlinks.Add ne fonctionne qu'avec Range, mais comment faire alors?

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets(1)
        .Hyperlinks.Add ActiveCell.Offset(0,1), Chemin
    End With

  3. #3
    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,

    J'utilise "Offset" pour me décaler verticalement et/ou horizontalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Chemin As String
    Chemin = Application.GetOpenFilename
    Hyperlinks.Add ActiveCell.Offset(0, 1), Chemin 'un cran à droite de la cellule active

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Par défaut
    Merci,

    effectivement ça fonctionne.

    Cependant le lien est "invisible". Je sais qu'il est dans la cellule car le curseur devient main lors du survol.
    En quand je clique dessus rien ne se passe

    vous sauriez pourquoi?

    au survol de la cellule, une bulle affiche l'adresse du fichier excel dans lequel on est, au lieu du fichier sélectionné

  5. #5
    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
    Renseigne le paramètre "TextToDisplay" de la méthode "HyperLinks.Add"

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tu ne t'es pas emmêlé quelque part dans tes variables ? Dans ton premier exemple, il y a du cheminPJ et du chemin. Ça devrait marcher sinon.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Par défaut
    Ok pour le nom de la variable et TextToDisplay.

    J'ai peut-être oublié de préciser qu'en réalité cette macro se fait dans deux sub différentes.

    Dans le sub d'un premier bouton j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Bp_PieceJointe_Click()
     
    Dim CheminPJ As String
    CheminPJ = Application.GetOpenFilename
    et dans le bouton valider du formulaire, qui permet d'ecrire tous les infos dans la feuille excel, j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets(1)
        .Hyperlinks.Add ActiveCell.Offset(0, 1), CheminPJ, , , CheminPJ
    End With
    J'ai testé en mettant tout dans le premier sub, et ça marche. Mais je voudrais que si l'utilisateur appuie sur annuler dans mon formulaire, rien ne s'écrit sur la feuille. Donc je dois absolument séparer cette macro. Vous voyez ce que je veux dire?

  8. #8
    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
    Essaie en précisant la feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Chemin As String
    Chemin = Application.GetOpenFilename
    With Sheets("Feuil1")
        .Hyperlinks.Add ActiveCell.Offset(0, 1), Chemin  'un cran à droite de la cellule active
    End With

  9. #9
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tu déclares CheminPJ en variable globale

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Par défaut
    ça ne change rien.
    Par contre j'ai remarquer que quand il s'arrete à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Hyperlinks.Add ActiveCell.Offset(0, 1), CheminPJ, , , CheminPJ
    il m'indique CheminPj=vide
    Se-pourrait-il que la variable CheminPJ ne passe pas d'un sub à l'autre?

  11. #11
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    C'est ce que je te disais dans le message précédent. Une variable définie dans une sub ou une function n'est pas accessible à l'extérieur.
    Tu dois faire en haut de ton userForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public CheminPJ As String

  12. #12
    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
    Dans le code du bouton de validation, utilise le code suivant à condition que CheminPJ soit défini comme variable publique de type Variant ou passée comme paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If CheminPJ = False Then Exit Sub
    With Worksheets(1)
        .Hyperlinks.Add ActiveCell.Offset(0, 1), CheminPJ, , , CheminPJ
    End With
    Note que "TextToDisplay" est par défaut égal à l'adresse; précise-le si tu veux un autre libellé.

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Par défaut
    heu, je n'ai jamais déclarer une variable public! Peux-tu m'indiquer comment faire s'il te plait?
    Merci

  14. #14
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Mes messages ne s'affichent pas ou quoi ?

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Par défaut
    Salut ZebreLoup !
    Effectivement il y a ûrement eu un problème de synchonisation ou un truc de ce genre, je viens de recevoir tes messages que maintenant!

    C'était bien un pb de variable public
    ça marche à merveille maintenant.

    Merci à tous et bonne journée

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

Discussions similaires

  1. [XL-2010] AFFICHER LA CIBLE D'UN LIEN HYPERTEXTE DANS UNE CELLULE
    Par MALTER dans le forum Excel
    Réponses: 7
    Dernier message: 22/08/2013, 20h03
  2. Lien hypertexte dans la même cellule (proc report)
    Par Nirvana84 dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 13/05/2011, 18h41
  3. Tester la présence de liens hypertexte dans des cellules Excel
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2010, 00h27
  4. Réponses: 1
    Dernier message: 17/03/2009, 21h24
  5. Affichage lien hypertexte dans une cellule
    Par JACQUEMIN dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/12/2006, 10h36

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