Hyperlink fonction cell VBA

Bonjour,

Mon problème concerne ce code en VBA, et non en formule Excel simple =HYPERTEXTE() ou autre, parce que je dois mettre à jour la page régulièrement

[Sub Lit_dossier(ByRef dossier, ByVal niveau)

   Cells(ligne, 1) = dossier.Name
    'With Active Worksheet
    'Hyperlinks.Add Anchor:= .Cells(ligne,1), _
    'Address:=dossier.Path
    'TextToDisplay:="dossier.Name"
    'End With

   Cells(ligne, 2) = dossier.Files.Count

   Cells(ligne, 1).Interior.ColorIndex = xlNone
   Cells(ligne, 1).Font.Bold = True

   ligne = ligne + 1
   For Each f In dossier.Files
     Cells(ligne, 1) = String(4 * niveau, " ") & f.Name
Cells(ligne, 1).Interior.ColorIndex = xlNone
     Cells(ligne, 2) = f.Size
     Cells(ligne, 3) = f.Path
     ligne = ligne + 1
   Next
   ligne = ligne + 1
   For Each d In dossier.SubFolders
     Lit_dossier d, niveau + 1
     ligne = ligne + 1
   Next
   End Sub ]

qui liste les dossiers de windows en utilisant une certaine fonction cell que je ne connais pas.

Mon but est de non seulement mettre le nom du dossier dans la première colonne, mais aussi en même temps le lien hypertexte.

Sur internet la manière de créer un lien hypertexte en VBA est multiple et complexe, je n'ai pas trouvé ce que je voulais,

je cherche donc une écriture simple du morceau en commentaire qui ne fonctionne pas, et qui utilise la fonction Cells au lieu de Range.

Je précise que je n'y connais rien en VBA, je ne comprendrai pas tout de suite vos solutions, mais j'apprends vite. Merci !

Bonjour,

avec une présentation différente ... tu y trouveras néanmoins le lien hypertext

Bonjour,

C'est normal que ça ne fonctionne pas, il y a de très nombreuses erreurs sur ces lignes de code:

With Active Worksheet 'ça s'écrit activeworksheet

ça ne sert à rien d'utiliser with pour travailler sur la feuille actuelle, ça le fait déjà quand tu ne précises pas la feuille.

Hyperlinks.Add Anchor:= .Cells(ligne,1), _

si tu voulais utiliser with, tu aurais du mettre .Hyperlinks dans la logique, mais ça ne marchait pas de toute façon, il faut utiliser ActiveSheet

Address:=dossier.Path

tu as oublié le _ à la fin, la ligne suivante te donne un erreur.

TextToDisplay:="dossier.Name"

tu écris "dossier.Name", ce qui va afficher dossier.Name en texte, et non pas la propriété Name de l'objet dossier, enlève les guillemets

End With

Le code corrigé donne:

    ActiveSheet.Hyperlinks.Add Anchor:=Cells(ligne, 1), _
    Address:=dossier.Path, _
    TextToDisplay:=dossier.Name

J'ai supprimé

Cells(ligne, 1) = dossier.Name

car cette ligne ne sert à rien.

Salut Steelson

J'ai apporté la correction à ton application

edit : bonjour Ausecour, je viens de lire ta prose ...

bonjour,

une proposition de correction

Sub Lit_dossier(ByRef dossier, ByVal niveau)

    Cells(ligne, 1) = dossier.Name

    Cells(ligne, 2) = dossier.Files.Count

    Cells(ligne, 1).Interior.ColorIndex = xlNone
    Cells(ligne, 1).Font.Bold = True
     Cells(ligne, 3) = dossier.Path
    ligne = ligne + 1
    For Each f In dossier.Files
        Cells(ligne, 1) = String(4 * niveau, " ") & f.Name
        With ActiveSheet
            .Hyperlinks.Add Anchor:=.Cells(ligne, 1), _
                           Address:=f.Path, _
                           TextToDisplay:=f.Name
        End With
        Cells(ligne, 1).Interior.ColorIndex = xlNone
        Cells(ligne, 3) = f.Path
        ligne = ligne + 1
    Next
    ligne = ligne + 1
    For Each d In dossier.SubFolders
        Lit_dossier d, niveau + 1
        ligne = ligne + 1
    Next

End Sub

Contrairement à H2SO4 que je salue, c'est le lien hypertexte vers le dossier que j'ai mis, mais on peut aussi y mettre les fichiers.

Merci,

C'est bien la correction de h2so4 que j'ai prise, elle s'applique aux fichiers, et donc j'ai pu la réutiliser aussi pour les dossiers. Je veux tout mettre en lien hypertexte en affichant les noms dossiers et fichiers, donc c'était parfait.

J'y étais presque mais je galérais vraiment pour écrire with et la syntaxe de hyperlinks.

Grand merci à tous

Par contre ce que je vois c'est que l'indentation prévue dans les noms de fichiers pour visualiser s'ils sont loin dans les dossiers disparaît si on leur met l'hyperlink. Je ne sais pas si vous avez vu. C'est dommage, mais le plus important est d'avoir l'hyperlink partout, en même temps que le nom du dossier/fichier soit affiché.

Merci à Ausecour parce qu'il me donne un peu de conseils.

bonjour,

pour avoir l'identation de niveau.

Sub Lit_dossier(ByRef dossier, ByVal niveau)

    Cells(ligne, 1) = dossier.Name

    Cells(ligne, 2) = dossier.Files.Count

    Cells(ligne, 1).Interior.ColorIndex = xlNone
    Cells(ligne, 1).Font.Bold = True
     Cells(ligne, 3) = dossier.Path
    ligne = ligne + 1
    For Each f In dossier.Files
        'Cells(ligne, 1) = String(4 * niveau, " ") & f.Name
        With ActiveSheet
            .Hyperlinks.Add Anchor:=.Cells(ligne, 1), _
                           Address:=f.Path, _
                           TextToDisplay:=String(4 * niveau, " ") & f.Name
        End With
        Cells(ligne, 1).Interior.ColorIndex = xlNone
        Cells(ligne, 3) = f.Path
        ligne = ligne + 1
    Next
    ligne = ligne + 1
    For Each d In dossier.SubFolders
        Lit_dossier d, niveau + 1
        ligne = ligne + 1
    Next

End Sub

Re

Merci d'avoir pris le temps de faire un retour pour tous le monde, et d'avoir passé le sujet en résolu

Bonne continuation et bonjour aux membres que je n'aie pas encore salué

Rechercher des sujets similaires à "hyperlink fonction vba"