Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment afficher Page X / Y sur chaque feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Offoloren

XLDnaute Nouveau
Bonjour à tous,

après plusieurs heures de recherche sans trouver le résultat voulu, je me décide enfin à demander de l'aide.

Mon problème :
Je suis en train de créer un document Excel générique qui sera repris par la suite par des collègues et adapté à des cas particuliers.
Pour gagner du temps, je veux automatiser le maximum de taches dont la suivante :

** je veux afficher de façon automatique sur mes feuilles Excel le nombre de feuille que possèdent le classeur (par exemple Page 2 / 3)
Je ne veux pas que ce soit en pied de page mais bien dans le corps de la feuille.
Si j'ai besoin de le faire de façon automatique, c'est que l'utilisateur va créer des onglets selon ses besoins, le nombre de page peut donc changer d'un utilisateur à l'autre.

J'ai trouver comment calculer le nombre total d'onglet (avec ActiveWorkbook.Sheets.Count) mais impossible de trouver comment afficher le numéro de chaque feuille.

Si quelqu'un peut me dépanner, je suis preneur 🙂

Merci d'avance.
 
Re : Comment afficher Page X / Y sur chaque feuille

Bonjour,

regarde peut être ceci :
Code:
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Range("A1").Value = "Feuille : " & ws.Index & " / " & Worksheets.Count
Next

bonne journée
@+
 
Re : Comment afficher Page X / Y sur chaque feuille

Re,

à noter, peut être placer ce code dans le module "thisworkbook", événement "newsheet" :
Code:
Option Explicit
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Range("A1").Value = "Feuille : " & ws.Index & " / " & Worksheets.Count
Next
End Sub
 
Re : Comment afficher Page X / Y sur chaque feuille

@Pierrot93 : ça marche impeccable. J'ai juste fais une modif en mettant "Private Sub Workbook_SheetActivate(ByVal Sh As Object)" sinon ça ne se mettait pas à jour et comme de toute façon, on est obligé d'aller sur les feuilles créées, ça donne le résultat voulu 🙂
@gilbert_RGI : désolé mais je n'ai pas compris ta remarque 🙁

Sinon, petit soucis innatendu quand même (sinon, ça ne serait pas marrant 😀). Les onglets créés sont des copies d'onglets cachés. Je ne vois pas comment faire pour que seuls les onglets visibles soient comptabilisés.
Vous auriez peut-être une solution à ce petit inconvéniant 😛
 
Re : Comment afficher Page X / Y sur chaque feuille

en reprenant la code de Pierrot93 (que je salue au passage)

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim ws As Worksheet
    Dim x As Integer, wc As Integer
    For Each ws In Worksheets
        If ws.Visible = False Then wc = wc + 1
    Next
    For Each ws In Worksheets
        If ws.Visible = False Then x = x + 1
        If ws.Visible = True Then
            ws.Range("A1").Value = "Feuille : " & ws.Index - x & " / " & Worksheets.Count - wc
        End If
    Next
End Sub
 
Re : Comment afficher Page X / Y sur chaque feuille

Code:
Function pagine()
 n = 0
 For Each s In ActiveWorkbook.Sheets
   n = n + -(s.Visible)
 Next
 For i = 1 To Application.Caller.Parent.Index
   k = k + -(Sheets(i).Visible)
 Next i
 pagine = k & "/" & n
End Function


JB
 

Pièces jointes

Re : Comment afficher Page X / Y sur chaque feuille

ben, comment dire gilbert, ta méthode .... marche nickel 😀 Merci beaucoup.

BOISGONTIER, ta fonction est très intéressante, je la retiens mais c'est vrai que pour mon cas particulier, ça coince avec les onglets cachés.
 
Re : Comment afficher Page X / Y sur chaque feuille

Code:
Function pagine()
 n = 0
 For Each s In ActiveWorkbook.Sheets
   n = n + -(s.Visible)
 Next
 For i = 1 To Application.Caller.Parent.Index
   k = k + -(Sheets(i).Visible)
 Next i
 pagine = k & "/" & n
End Function

Super JB

petit inconvenient la mise en place de la fonction n'est pas automatisée à l'insertion de la feuille
 
Re : Comment afficher Page X / Y sur chaque feuille

Salut le Fil

Super Fonction JB 🙂

j'ajouterais juste

Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Calculate
End Sub
dans le Module ThisWorkbook
au cas où il y a masquage/démasquage des feuilles existantes

Bonne Journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…