Extraction des noms pour une table des matières

  • Initiateur de la discussion monsieurPatate
  • Date de début
M

monsieurPatate

Guest
Bonjour à tous,

J'ai un fichier Excel composé d'une trentaine de feuilles.
Je tente de monter une table des matières destiné à la fois à l'impression et à la fois de menu avec liens vers chacune des sections du fichier.
Chaque feuille peut contenir plus d'une section.

J'utilise la routine suivante:

Sub ListAllNames()
Row = 1
For Each n In ActiveWorkbook.Names
Cells(Row, 1) = n.Name
Cells(Row, 2) = n.Value
Cells(Row, 3) = " " & n.RefersTo
Row = Row + 1
Next n
End Sub

Je croyais que 'n.Value' m'afficherai le contenu mais le résultat est 0.
Je me demande donc comment alors afficher le contenu de la cellule et en faire un hyperlien?

Merci

Mr P.
 
M

monsieurPatate

Guest
re-bonjour,

j'oubliais...
Cette table des matières varie en fonction des pages destinées à l'impression. En effet, j'ai du code qui masque certaines feuilles non désirées par l'utilisateur. C'est pourquoi la table sera générée régulièrement et son contenu changera en fonction des feuilles masquées.

Bye!
 
M

michel

Guest
bonjour

tu peux essayer la macro ci-dessous pour créer des liens vers chaque cellule nommée

For Each n In ActiveWorkbook.Names
.......
Worksheets(1).Hyperlinks.Add Anchor:=Cells(Row, 4), Address:="", SubAddress:=n.RefersToRange.Address(external:=True)
....
next n

bon apres midi
MichelXld
 
M

monsieurPatate

Guest
Merci Michel, avec ton bout de code, je pourrais mettre les voiles!

Une petite interrogation encore. Lorsque j'exécute le code affiché dans ce fil, je remarque que VBA n'exécute pas mes onglets dans l'ordre affichés, c'est-à-dire de gauche à droite, mais plutôt selon l'ordre affiché dans la fenêtre VBAProject.
(par exemple si j'ajoute un onglet entre feuil2 et feuil3, cet onglet sera traité en dernier car il apparaît en dernier dans la fenêtre VBAProject)

Peut-on modifier cet ordre afin que VBA s'exécute dans chaque onglet tel qu'ils apparaissent dans Excel, c'est-à-dire de gauche à droite ?

Bye!
 
M

monsieurPatate

Guest
re:Ordre d'exécution pour extraction des noms pour une table des matières

Bonjour,

Je n'ai toujours pas trouvé de solution de mon côté.
Peut être que ce n'est pas possible car ça doit être 'by design'

Bonne journée.
 
M

michel

Guest
bonsoir

La macro ci-dessous permet de récupérer les cellules nommées dans l'ordre d'index des feuilles
J'ai adapté une fonction trouvée dans mes archives , mais comme à l'époque j'avais oublié de noter le nom de l'auteur , je ne peux le citer et le remercier . Toutes mes excuses .


Sub Test()
Dim N As Name
Dim PlageNom As Range
Dim i As Byte
Dim Row As Byte

Row = 1
On Error Resume Next

For i = 1 To Sheets.Count

For Each N In Worksheets(i).Parent.Names
Set PlageNom = Nothing
Set PlageNom = N.RefersToRange
If Not PlageNom Is Nothing Then
If Worksheets(i).Index = PlageNom.Worksheet.Index Then
Cells(Row, 1) = N.Name
Cells(Row, 2) = N.RefersToRange.Value
Worksheets(1).Hyperlinks.Add Anchor:=Cells(Row, 3), Address:="", SubAddress:=N.RefersToRange.Address(external:=True)
Row = Row + 1
End If
End If
Next N

Next i
End Sub



bonne soirée
MichelXld
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla