Sommaire des onglets avec valeurs

Ahber -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je souhaite créer une feuille "Sommaire" qui résume tous les onglets disponible dans le classeur et affiche devant chaque nom de feuille une valeur précise récupérée sur cette dernière.

Il faudrait que ce sommaire se mette à jour automatiquement quand de nouvelles feuilles sont crées

Idéalement (mais pas nécessaire) les noms des feuilles soient des liens vers ces feuilles

Quelqu'un pourrait il m'aider ?

->

J'ai trouvé ce code qui permet d'insérer les noms des feuilles avec des liens vers ces dernières, il va manquer juste la partie d'insérer une valeur vis a vis chaque nom de feuille
Sub Onglets()

Dim i, j As Integer
Dim MENU(5 To 50, 1 To 1) As Variant
Dim FeuilleActive As String

i = 1

FeuilleActive = ActiveSheet.Name

For i = 1 To ThisWorkbook.Sheets.Count

If Sheets(i).Name <> "Menu" Then
Cells(i + 4, 1).Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" &

Sheets(i).Name & "'!A1", TextToDisplay:=Sheets(i).Name

' MENU(i + 4, 1) = Sheets(i).Name

End If
Next

'Sheets(FeuilleActive).Range("A5:A54") = MENU

End Sub

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, peut-être en ajoutant
    Cells(i + 4, 2) = Sheets(i).[A1]
    juste avant
    end if
    1
    1. Ahber
       
      C'est exactement ce qu'il me fallait ! merci

      seul souci, ca prend beaucoup de temps pour executer
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Ahber
         
        peut-être un peu plus rapide:
        Sub Onglets()
        
        Dim i As Integer, c As Integer
        
        Application.ScreenUpdating = False
        c = ThisWorkbook.Sheets.count
        For i = 1 To c
            If Sheets(i).Name <> "Menu" Then
                ActiveSheet.Hyperlinks.Add Anchor:=Cells(i + 4, 1), Address:="", SubAddress:="'" & _
                    Sheets(i).Name & "'!A1", TextToDisplay:=Sheets(i).Name
                Cells(i + 4, 2) = Sheets(i).[A1]
            End If
        Next
        Application.ScreenUpdating = True
        End Sub
        0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonsoir,

    Clic droit sur l'onglet de ta feuille/Visualiser le code et colle ce code voir

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Integer
    For i = 1 To Worksheets.Count
    Cells(4 + i, 1) = Worksheets(i).Name
    Next i
    End Sub

    il est possible de compléter le code pour éviter la mise à jour permanente de la liste
    0