Programmation lien hypertex sous excel
Evinrude44
-
frantzb Messages postés 33 Statut Membre -
frantzb Messages postés 33 Statut Membre -
Bonjour,
J'ai sous excel un classeur avec plain d'onglets (11 pour le moment).
Pour faciliter la navigation j'ai récupéré un petit code bien sympa, c'est le suivant que j'ai adapté à ma sauce.
il tourne presque c'est à dire une feuille "PRESENTATION" se crée mais les liens sont bien "écris" mais restent inactifs. lorsque je lance la marcro excel le message "Référence Non valide" s'affiche.
mais avec une petite adaptation de la forme suivante pour chaque onglet tout marche :
Range("D3").Select
Selection.Hyperlinks(1).SubAddress = "'Global menu'!A1"
Range("D4").Select
Selection.Hyperlinks(1).SubAddress = "'Main Menu'!A1"
Range("D5").Select
Selection.Hyperlinks(1).SubAddress = "'Human User Indicator'!A1"
Et comme ça pour chaque onglet !!!
Donc je voudrais faire une formule qui regroupe les lignes précédentes en une seule au lieu.
Le texte de chauq onglet est stocké dans les cellules A2 à A(I) (I=au nombre d'onglet)
Une formule qui récupère le contenu d'une cellule et affecte un lien hyperlink lié au nom de cette cellule.
Je pense qu'un peu de code clarifiera tout ça...
DONC VOILA CE QUE J'AI
---------------------------------------------------------------------------------------------------------------------------------------
Sub ListeFeuilles()
Dim I As Integer
' Macro enregistrée le 02/06/2008
Application.ScreenUpdating = False
Set nSht = Sheets.Add(Before:=Sheets(1))
On Error GoTo GesErr
DebProc:
nSht.Name = "PRESENTATION"
[A1] = "List of workbook's tabs"
With Selection.Font
.Bold = True
.Size = 14
End With
For I = 3 To Sheets.Count
nSht.Cells(I, 1).Value = Sheets(I).Name
With Worksheets(nSht.Name)
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(I, 4), _
Address:="", SubAddress:=Sheets(I).Name & "!A1", _
TextToDisplay:="Link to " & Sheets(I).Name
Range("A" & I).Select
' Selection.Hyperlinks(1).SubAddress = "Range("A" & I)" <========PLANTAGE ICI MA FORMULE EST H/S
End With
Next I
With Rows("1:1")
.RowHeight = 40
.VerticalAlignment = xlCenter
End With
[E2].Activate
ActiveWindow.DisplayGridlines = False
Exit Sub
GesErr:
Application.DisplayAlerts = False
Sheets("PRESENTATION").Delete
Application.DisplayAlerts = True
GoTo DebProc
End Sub
-------------------------------------------------------------------------------------------------------------------------------------
TOUT MARCHE AVEC CES MODIFS
Range("D3").Select
Selection.Hyperlinks(1).SubAddress = "'Global menu'!A1"
Range("D4").Select
Selection.Hyperlinks(1).SubAddress = "'Main Menu'!A1"
Range("D5").Select
Selection.Hyperlinks(1).SubAddress = "'Human User Indicator'!A1"
==========================================================
JE VEUX UNE FORMULE QUI M'EVITE DE TOUT RETAPER CHAQUE FOIS QU'UN ONGLET S'AJOUTE...
Moi je n'y arrive pas, je vois bine que la fonction Selection.Hyperlinks(1).SubAddress attend une chaine de carctères , mais je suis incapable de récupérer cette chaine qui se trouve dans les cellules A2 à A(I).
C'est tout ce qui me manque pour en finir avec mon programme.
J'ai sous excel un classeur avec plain d'onglets (11 pour le moment).
Pour faciliter la navigation j'ai récupéré un petit code bien sympa, c'est le suivant que j'ai adapté à ma sauce.
il tourne presque c'est à dire une feuille "PRESENTATION" se crée mais les liens sont bien "écris" mais restent inactifs. lorsque je lance la marcro excel le message "Référence Non valide" s'affiche.
mais avec une petite adaptation de la forme suivante pour chaque onglet tout marche :
Range("D3").Select
Selection.Hyperlinks(1).SubAddress = "'Global menu'!A1"
Range("D4").Select
Selection.Hyperlinks(1).SubAddress = "'Main Menu'!A1"
Range("D5").Select
Selection.Hyperlinks(1).SubAddress = "'Human User Indicator'!A1"
Et comme ça pour chaque onglet !!!
Donc je voudrais faire une formule qui regroupe les lignes précédentes en une seule au lieu.
Le texte de chauq onglet est stocké dans les cellules A2 à A(I) (I=au nombre d'onglet)
Une formule qui récupère le contenu d'une cellule et affecte un lien hyperlink lié au nom de cette cellule.
Je pense qu'un peu de code clarifiera tout ça...
DONC VOILA CE QUE J'AI
---------------------------------------------------------------------------------------------------------------------------------------
Sub ListeFeuilles()
Dim I As Integer
' Macro enregistrée le 02/06/2008
Application.ScreenUpdating = False
Set nSht = Sheets.Add(Before:=Sheets(1))
On Error GoTo GesErr
DebProc:
nSht.Name = "PRESENTATION"
[A1] = "List of workbook's tabs"
With Selection.Font
.Bold = True
.Size = 14
End With
For I = 3 To Sheets.Count
nSht.Cells(I, 1).Value = Sheets(I).Name
With Worksheets(nSht.Name)
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(I, 4), _
Address:="", SubAddress:=Sheets(I).Name & "!A1", _
TextToDisplay:="Link to " & Sheets(I).Name
Range("A" & I).Select
' Selection.Hyperlinks(1).SubAddress = "Range("A" & I)" <========PLANTAGE ICI MA FORMULE EST H/S
End With
Next I
With Rows("1:1")
.RowHeight = 40
.VerticalAlignment = xlCenter
End With
[E2].Activate
ActiveWindow.DisplayGridlines = False
Exit Sub
GesErr:
Application.DisplayAlerts = False
Sheets("PRESENTATION").Delete
Application.DisplayAlerts = True
GoTo DebProc
End Sub
-------------------------------------------------------------------------------------------------------------------------------------
TOUT MARCHE AVEC CES MODIFS
Range("D3").Select
Selection.Hyperlinks(1).SubAddress = "'Global menu'!A1"
Range("D4").Select
Selection.Hyperlinks(1).SubAddress = "'Main Menu'!A1"
Range("D5").Select
Selection.Hyperlinks(1).SubAddress = "'Human User Indicator'!A1"
==========================================================
JE VEUX UNE FORMULE QUI M'EVITE DE TOUT RETAPER CHAQUE FOIS QU'UN ONGLET S'AJOUTE...
Moi je n'y arrive pas, je vois bine que la fonction Selection.Hyperlinks(1).SubAddress attend une chaine de carctères , mais je suis incapable de récupérer cette chaine qui se trouve dans les cellules A2 à A(I).
C'est tout ce qui me manque pour en finir avec mon programme.
A voir également:
- Programmation lien hypertex sous excel
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Verificateur de lien - Guide
4 réponses
Bonjour Evinrude44,
Utilise .value après avoir "positionné" (méthode au choix selon environnement) le curseur sur A(i) dans une boucle de i
si les noms des onglets sont non structurés alors les placer dans une table fonction de(i)
Espérant avoir aidé,
Frantzb
Utilise .value après avoir "positionné" (méthode au choix selon environnement) le curseur sur A(i) dans une boucle de i
si les noms des onglets sont non structurés alors les placer dans une table fonction de(i)
Espérant avoir aidé,
Frantzb
Salut,
Pour ceux que ce code intéresse, il fonctionne très bien et permet d'avoir un sommaire listant tous les onglets ouvert.
ATTENTION LE NOM DES ONGLETS NE DOIT PAS COMPORTER DES CARACTERES SEPARATEUR COMME ( ) / \ - _ ET AUSSI LE CARACTERE VIDE N'EST PAS ERECONNU.
VOILA ET ENCORE MERCI A CELUI QUI M'A AIDE.
Pour ceux que ce code intéresse, il fonctionne très bien et permet d'avoir un sommaire listant tous les onglets ouvert.
ATTENTION LE NOM DES ONGLETS NE DOIT PAS COMPORTER DES CARACTERES SEPARATEUR COMME ( ) / \ - _ ET AUSSI LE CARACTERE VIDE N'EST PAS ERECONNU.
VOILA ET ENCORE MERCI A CELUI QUI M'A AIDE.
UN DERNIER TRUC.
MON PROBLEME EST RESOLU
------------------------------------------
------------------------------------------
MON PROBLEME EST RESOLU
------------------------------------------
------------------------------------------
Premièrement merci pour ta réponse.
J'ai essayé de mettre ça en œuvre hier et un peu ce matin et je dois reconnaître que je bloque complètement.
Le code initial que j'ai récupéré devrait marcher, mais il ne fonctionne pas pour une raison indéterminée.
Je cherche donc juste à trouver une adaptation. Comme tu l'as remarqué en recopiant de manière manuelle pour chaque onglet le code :
Range("D3").Select
Selection.Hyperlinks(1).SubAddress = "'Global menu'!A1"
Range("D4").Select
Selection.Hyperlinks(1).SubAddress = "'Main Menu'!A1"
Range("D5").Select
Selection.Hyperlinks(1).SubAddress = "'Human User Indicator'!A1"
Ça marche, mais ça me casse les pieds de refaire la même manipulation pour chaque nouveau onglets que j'aurai à créer.
Ta proposition est intéressante, mais je ne sais pas comment en programmation VBA , mettre en forme des chaînes de caractères.
Dans mon cas j'ai des cellules A(1) à A(5) par exemple.
Chaque cellule contient le nom de un des 5 onglets de mon classeur.
Il faut donc que je travaille d'une certaine manière afin que le tableau F(I) avec I allant de 1 à 5, pour qu'en finalité F(1) soit de la forme "'Global menu'!A1".
La méthode rpoposé dans le code initial ne marchand pas il faut que je travaille d'une autre manière..
SI QUELQU'UN EN PLUS DE frantzb PEUT M'APPORTER SON AIDE QU'IL NE SE GENE PAS.
DE MON COTE J'ESSYE DE CREUSER...
DERNIERE REMARQUE CETTE APPLI JE DOIS ABSOLUMENT LA TERMINER POUR CE SOIR AU PLUS TARD CAR J'AI UNE DEMO A FAIRE DEMAIN MATIN.
LE STRESS S'INSTALLE !
HEEEEELLLLLLLLLLLLLLLLLLLLPPPPP !!!