Création auto du sommaire d’un classeur dans un onglet dédié Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'135
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 25 novembre 2014, 09:33

Bonjour le Forum !

Je souhaite créer un sommaire dans le 1er onglet d’un classeur (disons que l’onglet s’appelle « SOMMAIRE »), qui liste tous les onglets du classeur sous forme de liens hypertextes, rangés en colonne (1 lien par ligne).

J’ai cherché dans l’index du Forum sans trouver mon bonheur (il y a toujours une caractéristique différente : liens dynamiques, sommaire sous forme de boutons,…).
Quelqu’un pourrait-il m’aider ?

Merci !!!
Avatar du membre
funkyfoenky
Membre fidèle
Membre fidèle
Messages : 324
Appréciations reçues : 5
Inscrit le : 15 avril 2013
Version d'Excel : Office 365

Message par funkyfoenky » 25 novembre 2014, 10:09

Hello,

Essaye avec ça:
Sub sommaire()
Dim feuille(200)
a = 0
For Each sh In Sheets
feuille(a) = sh.Name
a = a + 1
Next
Sheets("sommaire").Cells(1, 1).Value = "SOMMAIRE DU CLASSEUR"
For i = 1 To a - 1
Sheets("sommaire").Hyperlinks.Add Anchor:=Sheets("sommaire").Cells(i + 2, 1), Address:="", SubAddress:= _
    feuille(i) & "!A1", TextToDisplay:=feuille(i)
Next i

Sheets("sommaire").Activate

End Sub
Il faut que tu nomme une feuille "sommaire" vierge et que tu mettes toutes tes autres feuilles nommées comme tu veux à la suite.
Si tu as plus de 200 feuilles il faut augmenter le chiffre maximal de feuille(200) en ce que tu veux
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 25 novembre 2014, 10:15

Bonjour,

Je te joins un ancien code de mes archives ... avec les hyperlinks ... :wink:
Sub Sommaire()
    Dim Sh As Worksheet
    Dim Newsh As Worksheet
    Dim myCell As Range
    Dim ColNum As Integer
    Dim RwNum As Long
    Dim Basebook As Workbook

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With
    Application.DisplayAlerts = False
    On Error Resume Next
    ThisWorkbook.Worksheets("Sommaire").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Set Basebook = ThisWorkbook
    Set Newsh = Basebook.Worksheets.Add
    Newsh.Name = "Sommaire"
    RwNum = 1
    For Each Sh In Basebook.Worksheets
        If Sh.Name <> Newsh.Name And Sh.Visible Then
            ColNum = 1
            RwNum = RwNum + 1
            Newsh.Hyperlinks.Add Anchor:=Newsh.Cells(RwNum, 1), Address:="", _
            SubAddress:="'" & Sh.Name & "'!A1", TextToDisplay:=Sh.Name
        End If
    Next Sh
    Newsh.Range("A1").Value = "Sommaire"
    Newsh.UsedRange.Columns.AutoFit
    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
End Sub
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'135
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 25 novembre 2014, 15:15

Merci à tous les 2 !!

@James007 :
J'ai copié ton code dans un module.
Je lance la macro depuis la fenêtre appelée par Alt+F8, et............rien ne se passe ?!
Je ne sais pas où je me trompe.


@funkyfoenky : ça marche...presque !
J'ai compris que ta macro ne marche pas sur les classeurs partagés. Une fois supprimé le partage, ça fonctionne...
...mais les liens hypertexte pour les onglets dont le nom comprend un espace ne fonctionnent pas (message : "référence non valide").
Est-ce que tu saurais supprimer ces 2 bugs ?

(à l'usage, je me rends compte également que c'est fastidieux de créer un onglet "sommaire" dans chaque classeur, donc ce serait cool si la macro commençait par vérifier si le 1er onglet s'appelle "sommaire". Si oui, elle efface les données déjà présentes, si non, elle le crée – si c'est pas trop demander.......)

Merci en tous cas à tous les 2 !
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 25 novembre 2014, 15:23

Re,

Ce que tu décris ...est, à tout le moins, ... étonnant ... :roll:

Nous parlons bien d'un module standard ... pas d'un module de feuille ... n'est-il pas ...???
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'135
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 25 novembre 2014, 15:39

Rebonjour,

Après test et retest :
– dans une feuille vide, ta macro (collée dans un module standard) marche
– dans des classeurs avec des tas d'onglets, de données, de macros : ça ne marche pas... (testé sur 4 gros fichiers, non publiables sur le forum)

Je ne sais pas quoi faire...
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 25 novembre 2014, 15:43

Re,

Dans le classeur dont tu parles ... les feuilles sont-elles visibles ou cachées ... ?
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'135
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 25 novembre 2014, 15:49

Visibles (je ne savais pas qu'on pouvait cacher des feuilles !).
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 25 novembre 2014, 15:55

Re,

A distance ... sans voir ton fichier ... pas vraiment évident de déceler ce qui se passe ...

As-tu bien ajouté le module standard et donc la macro ... dans le fichier dont tu veux faire le sommaire ...?
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'135
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 25 novembre 2014, 16:17

Bravo James007 (or may I call you Sherlock ?) !

J'avais bien collé ton code dans un module standard, mais dans le classeur de macros personnelles.
Une fois le code intégré au fichier, il marche comme sur des roulettes (*)

Bravo et merci !!!

(*) cela dit, je suis preneur d'un code modifié pour
1/ fonctionner depuis le classeur de macros personnelles
2/ détecter l'existence d'un 1er onglet nommé sommaire, et le créer au besoin ----- EDIT : ça le fait déjà !!!
...mais tout ça serait du luxe, pas indispensable du tout (mais j'ai des goûts de luxe ;o)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message