Incrémentation nom feuilles

Bonjour à tous,

Je souhaiterai que dans mon fichier joint, lorsqu'on ajoute une feuille, elle prenne le nom qui suit AA-MM-001 avec une incrémentation automatique en fonction du changement d'année et mois en cours.

Merci d'avance de votre, je suis un peu perdu

Bien à vous

14copie-de.xlsm (20.32 Ko)

Bonjour,

Je vous livre un bien modeste code que nos spécialistes VBA pourront améliorer, synthétiser et corriger :

Ce code est à placer dans ThisWorkbook"

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim NomOnglet As String
    Dim compteur As Byte
    NomOnglet = Right(CStr(Year(Now())), 2) & "-" & CStr(Format(Month(Now()), "00"))
    For i = 1 To Worksheets.Count
        If Left(Worksheets(i).Name, 5) = NomOnglet Then compteur = compteur + 1
    Next i
    Sh.Name = NomOnglet & "-" & CStr(Format(compteur + 1, "0000"))
End Sub

Merci c'est exactement ça mais j'ai juste oublié de préciser qu'il fallait recopier le contenu de l'onglet "bordereau" à chaque fois...

Flut ! pouvez-vous ajouter le contenu?

Merci d'avance.

Bonjour le fil, bonjour le forum,

Très similaire au code de JFL (je me suis inspiré de lui), une autre proposition avec le code ci-dessous à mettre dans l'onglet Bordereau. Il s'active au double-clic dans n'importe quelle cellule de cet onglet...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim AN As String 'déclare la variable AN (ANnée)
Dim MO As String 'déclare la variable MO (MOis)
Dim VM As Integer 'déclare la variable VM (Valeur Max)

Cancel = True 'empêche le mode[Édition] lié au double-clic
AN = CStr(Right(Year(Date), 2)) 'définit la variable AN
MO = CStr(Format(Month(Date), "00")) 'définit la variable MO
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
For I = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
    'si les trois derniers caractères du nom de l'onglet (converti en entier) sont supérieur a VM, VM devient ces trois derniers caractères (convertis en entier)
    If CInt(Right(Sheets(I).Name, 3)) > VM Then VM = CInt(Right(Sheets(I).Name, 3))
Next I 'prochain onglet de la boucle
ActiveSheet.Copy After:=Sheets(Sheets.Count) 'copie l'onglet actif
ActiveSheet.Name = AN & "-" & MO & "-" & CStr(Format(VM + 1, "000")) 'renomme l'onglet actif (qui es devenu la copie)
End Sub

Re, Bonjour ThauThème,

Remplacer mon précédent code par celui-ci :

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim NomOnglet As String
    Dim compteur As Byte
    NomOnglet = Right(CStr(Year(Now())), 2) & "-" & CStr(Format(Month(Now()), "00"))
    For i = 1 To Worksheets.Count
        If Left(Worksheets(i).Name, 5) = NomOnglet Then compteur = compteur + 1
    Next i
    NomOnglet = NomOnglet & "-" & CStr(Format(compteur + 1, "0000"))
    Sh.Name = NomOnglet
    Worksheets("Bordereau").Range("A1:M100").Copy Destination:=Worksheets(NomOnglet).Range("A1")
End Sub

Super, merci à tous.

Rechercher des sujets similaires à "incrementation nom feuilles"