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 hypertext vba vers une feuille du classeur ne fonctionne pas. [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut Lien hypertext vba vers une feuille du classeur ne fonctionne pas.
    Bonjour,

    J'ai créé dans une feuille de récapitualtif des feuilles d'un classeur
    La première colonne contient le lien hypertexte avec chaque feuille.

    J'ai créé un macro qui est sensée lire les feuilles les unes après les autres pour mettre à jour ma feuille principale
    cependant mon lien hypertexte ne fonctionne pas et je ne comprends pas pourquoi ?

    le debug.print activecell.adress me renvoie $B$2 (logique!)
    comment voir le contenu du lien ?
    le debug.print ActiveCell.Hyperlinks(1) plante (erreur 438) ?


    Denis

    Le code
    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
    Sub maj_liste_mandat()
        Appel = "liste"
        Sheets("Liste des projets").Range("B2").Select
        CurLig = ActiveCell.Row
        While Not IsEmpty(ActiveCell)
            ' je boucle sur la liste des projets en colonne B
            Mandat = ActiveCell.Value
            ' j'appelle la feuille   ----> ca ne marche pas !!!!!!!!!!!!!!!
            Debug.Print ' quoi mettre pour voir le lien ?
            Selection.Hyperlinks(1).Follow NewWindow:=False
            Application.Run "'" & ActiveWorkbook.Name & "'!Modif_mandat"
            CurLig = CurLig + 1
            Cells(CurLig, 2).Select
        Wend
        MsgBox "Liste Terminée"
        Appel = ""
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Denis_67,

    Je ne comprends pas bien ton histoire de "lien hypertexte avec chaque feuille"...
    Si tu as une feuille récapitulative des autres, au sein d'un même classeur, peut-être devrais-tu te pencher sur quelque chose de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Denis_67()
    Dim oWksh As Worksheet
     
    For Each oWksh In Worksheets
        If oWksh.Name <> "Feuille principale" Then
            With oWksh
                'je fais ce que je veux dans chacune des feuilles.
            End With
        End If
    Next oWksh
     
    End Sub
    N'hésite pas à donner peut-être plus de précisions.
    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Merci Kim_ire,

    Parfois à vouloir donner trop d'explications on est plus confus !

    En fait ma question est :
    pourquoi la séquence d'activation du lien hypertext ne fonctionne pas.

    Je lis une cellule contenant un lien et je veux activer la feuille appelée par ce lien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets("Liste des projets").Range("B2").Select
    Selection.Hyperlinks(1).Follow NewWindow:=False
    mais en debug, il ne va pas activer la feuille

    merci
    Denis

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Regarde peut-être avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Denis_67_2()
    Dim Rng As Range
     
    With Worksheets("Source1")
        Set Rng = .Range("B2")
        ActiveWorkbook.FollowHyperlink Address:=Rng.Value
    End With
     
    End Sub
    N'étant pas un expert en Hyperlinks, je ne pense pas t'aider d'avantage...

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Merci pour Kimy pour les tentatives, mais ça ne marche pas ta fonction me renvoie le texte de la cellule mais le lien contenu dans la cellule.

    En fait la séquence ne fonctionne pas car le lien hypertext renvoie à une autre feuille du classeur et pas vers un lien externe.
    J'ai fait un test en mettant un lien vers un fichier externe et là ça marche, j'arrive à activer le lien par la séquence.

    Avec cette fonction, il ne semble pas possible d'activer une autre feuille du classeur par lien hypertext.

    Il ne me reste plus qu'à mettre le nom des feuilles dans ma liste et de les appeler classiquement.

    A tout hasard je mets un fichier d'exemple. Si je clique le bouton la feuille 2 n'est pas sélectionnée comme lorsque je clique sur le lien hypertexte.
    Classeur1.xlsm

    Merci Denis

  6. #6
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Faux espoir,

    Je me suis souvenu que Excel n'aimait pas les espaces dans les noms de feuilles, j'ai donc renomé mes feuilles en mettant des "_"
    à la place des espaces, mais ça e marche toujours pas.

  7. #7
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour le forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro1()
     
     With Selection.Hyperlinks(1)
     
       .Follow NewWindow:=False, AddHistory:=True
     
        If .SubAddress <> "" Then
         Sheets(Split(.SubAddress, "!")(0)).Select
         Range(Split(.SubAddress, "!")(1)).Select
        End If
     
     End With
     
    End Sub
    Cordialement

    Docmarti.

  8. #8
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    MERCI DOC MARTI !!!!!

    Par contre j'ai encore deux questions:

    Comment afficher .subaddress en debug ce n'est pas une variable si je mets un espion je ne vois pas le contenu. debug.print non plus
    la seule astuce que j'ai trouvé c'est un msgbox(.subaddress).

    Pourquoi cette question ?

    Parce que j'ai des feuilles dont le nom commence par un nombre.
    or j'ai renuméroté ces feuilles par macro et certains nom on une ' devant le nombre certaines pas et bien sûr quand il y a ' le lien ne marche plus.

    Bon je vais ajouter une lettre préfixe en attendant, mais si vous pouvez m'indiquer comment renomer sans avoir l'apostrophe ce serait cool.
    A peine l'avais-je fais que j'ai vu des feuilles ou j'avais l'apostrophe en début et en fin du nom de la feuille !!!
    ceci est lié au fait que dans le nom figurait d'autres caractères inapropriés en l'occurence une virgule !

    Je mettrai en résolu d'ici fin de semaine si pas de réponse mon problème initial étant résolu

    Encore MERCI

    Denis

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comment afficher .subaddress en debug ce n'est pas une variable si je mets un espion je ne vois pas le contenu. debug.print non plus
    la seule astuce que j'ai trouvé c'est un msgbox(.subaddress).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Selection.Hyperlinks(1).SubAddress
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Range("B4").Hyperlinks(1).SubAddress
    Parce que j'ai des feuilles dont le nom commence par un nombre.
    or j'ai renuméroté ces feuilles par macro et certains nom on une ' devant le nombre certaines pas et bien sûr quand il y a ' le lien ne marche plus.
    Lorsqu'un nom de feuille contient un ou plusieurs espaces, il est automatiquement encadré par des apostrophes.
    Exemple : Pas d'espace donc pas d'apostrophes : laFeuille!A1 alors que ici oui 'ma feuille'!A1
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Merci à vous tous qui m'avez apporté chacun un élément pour solutionner complètement mon problème.
    Denis

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

Discussions similaires

  1. Créer un lien hypertexte vers une feuille nouvellement créée
    Par BOU59000 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/09/2023, 12h54
  2. [PPT-2007] Lien hypertexte Powerpoint vers une cellule Excel
    Par Deciprog dans le forum Powerpoint
    Réponses: 2
    Dernier message: 15/02/2012, 22h04
  3. [XL-2007] Créer un lien hypertexte après voir enregistrer vers une feuille dans un classeur
    Par maxval18 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/02/2012, 13h30
  4. comment transferer une tableau VBA vers une feuille de calcul
    Par Bonero dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2010, 17h30
  5. envoyer le contenu de variables vba vers une feuille excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h58

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