Récuperer le nom de tous les onglets

cstef

XLDnaute Nouveau
Bonjour,

Je souhaite dans un classeur contenant x onglets pouvoir récupérer la liste de tout ceux-ci dans une feuille nommée récap.
Pour pouvoir réactualiser en cas de nouvelle insertion, la macro serait affectée à un bouton sur lequel leclic déclenche l'exécution de la macro.

çà ne marche pas au clic sur le bouton.


Private Sub CommandButton1_Click()
getNomOnglet()
End Sub

Sub getNomOnglet()
'Macro permettant de lister les onglets d'un classeur
Dim i As Integer
Dim ligne As Integer
Dim colonne As Integer
ligne = 0 'Ligne depuis laquelle on écrit (Commence à 0)
colonne = 1 'Colonne dans laquelle on écrit (Commence à 1)
For i = 1 To Worksheets.Count
Cells(ligne + i, colonne).FormulaR1C1 = Worksheets.Item(i).Name
Next i
End Sub


merci à vous
 

condors.s

XLDnaute Occasionnel
Re : Récuperer le nom de tous les onglets

Ca peu peut etre t'aider :

Code:
Sub MaMacro()
Dim I As Integer, J As Integer
ActiveWorkbook.Worksheets(1).Select
ActiveSheet.Range("B7:IV7").ClearContents
J = 2
For I = 2 To ActiveWorkbook.Worksheets.Count
    ActiveSheet.Cells(7, J + 2).Select
    If Worksheets(I).Visible = xlSheetVisible Then
        ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:="", _
        SubAddress:="'" & Worksheets(I).Name & "'!A1", _
        TextToDisplay:=Worksheets(I).Name
        J = J + 1
    End If
Next
End Sub

La commande permet de coller en ligne de D7 à N7 le nom de tous les onglets et de faire un lien hyper texte vers chaque onglet.

A adapter à tes besoins
 

mercant76

XLDnaute Impliqué
Re : Récuperer le nom de tous les onglets

bonjour,

une solution :

Sub ListeOnglets()

Application.ScreenUpdating = False
Columns("A:A").Select
Selection.ClearContents
Selection.ClearFormats
Range("a1").Select
Set debFeuil = Sheets("Recap")
debFeuil.Cells(1, 1).Value = "Recap"

For I = 2 To ActiveWorkbook.Sheets.Count
debFeuil.Cells(I, 1).Value = Sheets(I).Name
Next I

End Sub


@+
 

Fo_rum

XLDnaute Accro
Re : Récuperer le nom de tous les onglets

Salut

autre exemple, si tu ne veux pas "recap" dans la liste :
Code:
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet, l As Byte
  With Sheets("recap")  'si le bouton n'est pas sur la feuille "recap
    .[A:A].Clear
    'L=n pour que la liste commence en ligne n+1
    For Each Sh In Worksheets
      If Sh.Name <> "recap" Then
        l = l + 1
        .Cells(l, 1) = Sh.Name
      End If
    Next
  End With
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Récuperer le nom de tous les onglets

Bonjour à tous
Deux autres variantes :
Code:
[COLOR="DarkSlateGray"][B]Sub tutu1()
Dim loc$, cel$
Dim i&, oSh, oDat$()
   loc = "RECAP": cel = "$B$3" [COLOR="Lime"]'Feuille et cellule de destination de la liste.[/COLOR]
   ReDim oDat(1 To Sheets.Count - 1, 1 To 1)
   For Each oSh In Sheets
      If oSh.Name <> loc Then
         i = i + 1
         oDat(i, 1) = oSh.Name
      End If
   Next oSh
   With Sheets(loc)
      .Range(cel).Resize(i, 1).Value = oDat
      .Range(.Range(cel).Offset(i, 0), .Cells(Rows.Count, .Range(cel).Column).End(xlUp).Offset(1, 0)).ClearContents
   End With
End Sub

Sub tutu2()
Dim loc$, cel$
Dim i&, oDat$()
   loc = "RECAP": cel = "$B$3" [COLOR="Lime"]'Feuille et cellule de destination de la liste.[/COLOR]
   ReDim oDat(1 To Sheets.Count, 1 To 1)
   For i = 1 To Sheets.Count
      oDat(i, 1) = Sheets(i).Name
   Next
   With Sheets(loc)
      .Range(cel).Resize(i - 1, 1).Value = oDat
      .Range(.Range(cel).Offset(i - 1, 0), .Cells(Rows.Count, .Range(cel).Column).End(xlUp).Offset(1, 0)).ClearContents
   End With
End Sub[/B][/COLOR]
ROGER2327
#4017


Mardi 17 Phalle 137 (Sainte Gallinacée, cocotte, SQ)
10 Fructidor An CCXVIII
2010-W34-5T13:46:35Z
 

Discussions similaires