Bonsoir JPH, Zon, Michel, Philling, et Le Forum
Oui c'était assez tordu comme demande et je dois dire que JPH s'en sort royalement !
Just a minor bug, enfin si on veut placer cette dernière macro une seule fois dans le Private Module This Workbook sous l'évènement "Workbook_SheetChange", ce qui simplifie la vie au cas où l'on rajoute des feuilles afin de ne pas à avoir à lancer cette macro dans chaque Private Module de Sheet sous l'évènement "Worksheet_Change"...
Donc voilà comme j'ai placé cette procédure VBA (pas script !! c'est autre chose un VBScript
Dans le Private Module de This WorkBook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Marquefeuil
End Sub
Dans un Module Standard
Option Explicit
Sub Marquefeuil()
Dim lesfeuilles() As String, Mondocument As Object
Dim Ttf As Byte, Fx As Byte, Cpt As Byte
Set Mondocument = ActiveWorkbook.Worksheets
If Left(ActiveSheet.Name, 4) = "Page" Then Exit Sub
Ttf = Sheets.Count
If Ttf > 254 Then Exit Sub
ReDim lesfeuilles(1 To Ttf)
For Fx = 1 To Ttf
lesfeuilles(Fx) = Mondocument(Fx).Name
If Left(lesfeuilles(Fx), 4) = "Page" Then Cpt = Cpt + 1
Next
Cpt = IIf(Cpt = 0, 1, Cpt + 1) 'équivalent de ton If else
ActiveSheet.Name = "Page" & Cpt
End Sub
En varc ce que j'ai fait :
J'ai mis un test dès le départ car la macro de JPH (en ThisWorkBook évidemment) continue à incrémenter le nom de l'ActiveSheet. J'ai limité avant 255 car après Byte explose (lol), J'ai déclaré la Dynamic Array "lesfeuilles" As String, puisque çà convient et c'est toujours mieux que Variant (Tacite quand non indiqué)... J'ai testé "Mondocument" As Worksheet, Workbook, WorkSheets, WorkBooks etc et j'ai finalement laissé As Object (lol !!)
Sinon je tiens à faire remarquer la Funtion IIf utilisée très judicieusement par JP, et je soulique que c'est vraiment pratique parfois, pour ceux/celles qui voudraient des infos faites une recherche "IIF" sur ce forum STéphane nous a fait des exemples.
Bonne Soirée à tous et toutes
@+Thierry