![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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. |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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! |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
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! |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
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 |
| Liens sociaux |
| Outils de la discussion | |
|
|