Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer un lien hypertext dans Excel depuis VB

8 réponses
Avatar
Daniel AUBRY
Bonsoir à tous,

j'essaie vainement de créer un lien hypertext dans Excel depuis Vb
de cette façon :

AppExcel.Worksheets(1).Hyperlinks.Add AppExcel.Worksheets(1).Range("A1"),
AppExcel.Worksheets(1).Sheets("Menu").Select

Impossible.

J'ai fouillé un peu le Net et j'ai trouvé la fonction LIEN_HYPERTEXT
mais elle fonctionne pour un site internet, pour un fichier sur le disque
dur
mais pas pour se déplacer sur un autre onglet dans le même classeur.

Si quelqu'un a la solution.............

D'avance, merci.

dany

8 réponses

Avatar
parci
On Fri, 14 Mar 2008 19:47:14 +0100, "Daniel AUBRY"
wrote:

Bonsoir à tous,

j'essaie vainement de créer un lien hypertext dans Excel depuis Vb
de cette façon :

AppExcel.Worksheets(1).Hyperlinks.Add AppExcel.Worksheets(1).Range("A1"),



' sur une seule ligne
AppExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("A1"),
Address:="", SubAddress:= "Feuil2!B2"

Insère un lien de la plage A1 de la feuille "Feuil1" vers la plage B2
de feuille "Feuil2". Avec l'enregistreur de macro, il faut 2 secondes
pour trouver.
Avatar
Daniel AUBRY
Bonsoir,
merci de ta réponse mais je pense que tu as dégainé un peu vite.
Je ne travaille pas dans Excel, mais je créé un fichier Excel depuis VB6.
Et, l'enregistreur de macro c'est la première chose que j'ai fait.
Essaie la ligne de code que tu m'as donné et tu verras que VB n'en veux pas
!!

Merci quand même.
Dany,


"parci" a écrit dans le message de news:

On Fri, 14 Mar 2008 19:47:14 +0100, "Daniel AUBRY"
wrote:

Bonsoir à tous,

j'essaie vainement de créer un lien hypertext dans Excel depuis Vb
de cette façon :

AppExcel.Worksheets(1).Hyperlinks.Add AppExcel.Worksheets(1).Range("A1"),



' sur une seule ligne
AppExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("A1"),
Address:="", SubAddress:= "Feuil2!B2"

Insère un lien de la plage A1 de la feuille "Feuil1" vers la plage B2
de feuille "Feuil2". Avec l'enregistreur de macro, il faut 2 secondes
pour trouver.



Avatar
Jean-marc
Daniel AUBRY wrote:
Bonsoir,



Hello,

merci de ta réponse mais je pense que tu as dégainé un peu vite.
Je ne travaille pas dans Excel, mais je créé un fichier Excel depuis
VB6. Et, l'enregistreur de macro c'est la première chose que j'ai
fait. Essaie la ligne de code que tu m'as donné et tu verras que VB n'en
veux pas !!



Je ne sais pas quelle version d'Excel que tu utilses.
Mais avec Excel 2003 et Excel 2007, en VB6, ça fonctionne très bien:

Dim appExcel As Excel.Workbook

Set appExcel = Excel.Workbooks.Open("c:classeur1.xls")

appExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("A1"),
Address:="", SubAddress:="Feuil2!B2"

appExcel.Close

(J'ai repris sa ligne telle quelle).

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
parci
On Sat, 15 Mar 2008 00:47:07 +0100, "Daniel AUBRY"
wrote:

Bonsoir,
merci de ta réponse mais je pense que tu as dégainé un peu vite.
Je ne travaille pas dans Excel, mais je créé un fichier Excel depuis VB6.
Et, l'enregistreur de macro c'est la première chose que j'ai fait.
Essaie la ligne de code que tu m'as donné et tu verras que VB n'en veux pas
!!



Chez moi (Vb5, Excel97, Xp) ça fonctionne à condition qu'il y ait un
classeur actif dans AppExcel et que ce classeur contienne 2 feuilles
nommées "Feuil1" et "Feuil2".

Enfin, ça fonctionne plus ou moins - il y a une erreur Automation du
genre "La méthode 'Add' de l'objet 'Workbooks' a échoué" sur chaque
instruction - parce que Office97 sur Xp c'est moyen (ou c'est mon
installation qui est pas terrible). Avec Excel 2000, ça roule. Donc,
peut-être à voir suivant ta version d'Excel.

L'essentiel c'était quand même la syntaxe avec les paramètres Anchor
et SubAddress.

Dim appExcel As New Excel.Application

On Error GoTo Err_Excel

appExcel.Workbooks.Add
appExcel.Worksheets("Feuil1").Hyperlinks.Add _
Anchor:=Range("A1"), _
Address:="", _
SubAddress:="Feuil2!B2"
appExcel.ActiveWorkbook.SaveAs "classeur_test.xls"
appExcel.Quit
Exit Sub


Err_Excel:

If Err.Number = -2147417851 Then
Resume Next
End If
Avatar
Daniel AUBRY
J'ai remis en oeuvre :
Erreur de compilation
Procédure Sub ou Function non définie

Ca bloque sur Range.

VB6 Excel 2003

Tout le reste fonctionne bien.



"Jean-marc" a écrit dans le message
de news: 47db7842$0$2984$
Daniel AUBRY wrote:
Bonsoir,



Hello,

merci de ta réponse mais je pense que tu as dégainé un peu vite.
Je ne travaille pas dans Excel, mais je créé un fichier Excel depuis
VB6. Et, l'enregistreur de macro c'est la première chose que j'ai
fait. Essaie la ligne de code que tu m'as donné et tu verras que VB n'en
veux pas !!



Je ne sais pas quelle version d'Excel que tu utilses.
Mais avec Excel 2003 et Excel 2007, en VB6, ça fonctionne très bien:

Dim appExcel As Excel.Workbook

Set appExcel = Excel.Workbooks.Open("c:classeur1.xls")

appExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("A1"),
Address:="", SubAddress:="Feuil2!B2"

appExcel.Close

(J'ai repris sa ligne telle quelle).

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Daniel AUBRY
Bonsoir,
j'ai trouvé aujourd'hui pourquoi cela ne marchait pas chez moi.
Dans projet/référence je ne met jamais Microsoft Excel et dans
ma déclaration de variable je ne met pas :
Dim appExcel As New Excel.Application
mais Dim AppExcel as Object
Tout cela pour être à l'abri des différentes versions d'Excel.

Par contre j'ai trouvé quand même :

Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False
AppExcel.Application.Workbooks.Add

AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Font.Name ="Arial"
AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Font.FontStyle
="Normal"
AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Value = "Retour au
menu"
AppExcel.Worksheets(1).Hyperlinks.Addn AppExcel.Worksheets(1).Range("A1"),
NomFichier, "Menu!A1"

AppExcel.Worksheets(1).SaveAs NomDuDossier & NomFichier
AppExcel.Workbooks.Close
AppExcel.Quit
Set AppExcel = Nothing

NomFichier doit être le nom du fichier sans le chemin mais avec l'extension
Le nom d'onglet doit être encadré de simples cotes si il contient un blanc

Dany


"Daniel AUBRY" a écrit dans le message de news:
47dac82c$0$9574$
Bonsoir à tous,

j'essaie vainement de créer un lien hypertext dans Excel depuis Vb
de cette façon :

AppExcel.Worksheets(1).Hyperlinks.Add AppExcel.Worksheets(1).Range("A1"),
AppExcel.Worksheets(1).Sheets("Menu").Select

Impossible.

J'ai fouillé un peu le Net et j'ai trouvé la fonction LIEN_HYPERTEXT
mais elle fonctionne pour un site internet, pour un fichier sur le disque
dur
mais pas pour se déplacer sur un autre onglet dans le même classeur.

Si quelqu'un a la solution.............

D'avance, merci.

dany



Avatar
Daniel AUBRY
Bonsoir,
j'ai trouvé aujourd'hui pourquoi cela ne marchait pas chez moi.
Dans projet/référence je ne met jamais Microsoft Excel et dans
ma déclaration de variable je ne met pas :
Dim appExcel As New Excel.Application
mais Dim AppExcel as Object
Tout cela pour être à l'abri des différentes versions d'Excel.

Par contre j'ai trouvé quand même :

Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False
AppExcel.Application.Workbooks.Add

AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Font.Name ="Arial"
AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Font.FontStyle
="Normal"
AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Value = "Retour au
menu"
AppExcel.Worksheets(1).Hyperlinks.Addn AppExcel.Worksheets(1).Range("A1"),
NomFichier, "Menu!A1"

AppExcel.Worksheets(1).SaveAs NomDuDossier & NomFichier
AppExcel.Workbooks.Close
AppExcel.Quit
Set AppExcel = Nothing

NomFichier doit être le nom du fichier sans le chemin mais avec l'extension
Le nom d'onglet doit être encadré de simples cotes si il contient un blanc

Dany


"Daniel AUBRY" a écrit dans le message de news:
47dac82c$0$9574$
Bonsoir à tous,

j'essaie vainement de créer un lien hypertext dans Excel depuis Vb
de cette façon :

AppExcel.Worksheets(1).Hyperlinks.Add AppExcel.Worksheets(1).Range("A1"),
AppExcel.Worksheets(1).Sheets("Menu").Select

Impossible.

J'ai fouillé un peu le Net et j'ai trouvé la fonction LIEN_HYPERTEXT
mais elle fonctionne pour un site internet, pour un fichier sur le disque
dur
mais pas pour se déplacer sur un autre onglet dans le même classeur.

Si quelqu'un a la solution.............

D'avance, merci.

dany



Avatar
parci
On Mon, 17 Mar 2008 22:55:38 +0100, "Daniel AUBRY"
wrote:

Bonsoir,
j'ai trouvé aujourd'hui pourquoi cela ne marchait pas chez moi.
Dans projet/référence je ne met jamais Microsoft Excel et dans
ma déclaration de variable je ne met pas :
Dim appExcel As New Excel.Application
mais Dim AppExcel as Object
Tout cela pour être à l'abri des différentes versions d'Excel.

Par contre j'ai trouvé quand même :



Fort bien.

//..//

NomFichier doit être le nom du fichier sans le chemin mais avec l'extension



Pas obligatoirement : si le chemin est relatif, le lien est relatif
par rapport au path du classeur. Tu peux avoir par exemple un lien de
la forme "datatest.xls" qui cherchera à ouvrir un classeur "test.xls"
dans le dossier "data" à partir du path du classeur qui contient le
lien.

Le nom d'onglet doit être encadré de simples cotes si il contient un blanc



C'est pas gênant de toujours quoter les noms de feuilles, Excel
enlèvera les quotes inutiles. C'est la même chose si tu écris des
formules - avec le nom du classeur entre crochet même si c'est le
classeur actif - par exemple :

Dim maPlage As String
Dim monClasseur As String
Dim maFeuille As String

maFeuille = "Feuil2"
monClasseur = "Classeur1.xls"
maPlage = "'[" & monClasseur & "]" & maFeuille & "'!" & "A2:A10"

Range("A1").Formula = "=Sum(" & maPlage & ")"