Macro pour créer une nouvelle feuille suivant un modèle

Bonjour à tous,

je fais appel à vous afin de m'aider dans la création de mon fichier excel Je connais un peu le VBA mais je ne suis pas assez caler pour créer un programme comme celui là

Je souhaiterai créer une macro me permettant de créer une nouvelle feuille suivant un modèle (déjà présent dans mon classeur) et lorsque l'on clique sur un bouton auquel j'aurai affecté cette macro, j'aimerai qu'une boite de dialogue s'ouvre pour me demander de taper le nom de la feuille ainsi créée (les feuilles à créer représentent les semaines de l'année "semaine 1", "semaine 2" etc... donc 52 feuilles maximum et l'utilisateur n'a plus qu'à taper le chiffre).

Si je souhaite faire ça c'est pour gagner en clarté sur mon fichier (j'aurai pu créer les 52 feuilles mais certaines peuvent ne pas servir et seraient donc inutiles) et gagner en taille de fichier.

J'espère que mon texte est compréhensible pour vous et j'attend avec impatience vos retours pour m'aider

Bonjour,

à tester,

Sub test()
n = Application.InputBox("Entrer le nombre de feuille", Type:=1)
If IsNumeric(n) Then
    For i = 1 To n
    Sheets("Model").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "semaine" & i
    Next i
End If
End Sub

Bonjour i20100,

une très bonne avancée que tu m'offre là

cependant lorsque je tape 3 par exemple, il m'affiche les feuilles "semaine 1", "semaine 2" et "semaine 3", je souhaite juste qu'il m'ouvre une feuille "semaine 3" et non les autres qui la précède, après ça ce serait nickel

Ah et peut être rajouter un message "la feuille existe déjà" lorsqu'une feuille à déjà un nom identique

J'espère ne pas en demander trop et déjà merci de consacrer du temps pour moi

Bonjour,

Une proposition à étudier.

Cdlt.

695didam49.xlsm (21.44 Ko)

Bonjour Jean-Eric

ça fonctionne du tonnerre merci beaucoup problème résolu!!

Je vais pouvoir avancer dans la création de mon fichier maintenant

Merci à toi et à i20100 pour votre rapidité ça fait plaisir, bonne soirée à vous

Re,

Merci pour ce retour.

Ci-dessous le détail des procédures pour ceux que cela intéresse.

Cdlt.

Option Explicit

Dim n As Double

Public Sub CreateWorksheet()
Dim ws As Worksheet, wsTemplate As Worksheet
Dim sheetName As String, Message As String
Dim r As Variant

    n = WorksheetFunction.IsoWeekNum(DateSerial(Year(Date), 12, 28))
    Message = "Saisissez un nombre compris entre 1 et " & n
    Do
        r = InputBox(Message, Title:="Numéro de semaine ?")
    Loop While r < 1 Or r > n And r <> ""
    If r <> "" Then
        Application.ScreenUpdating = False
        sheetName = "S" & Format(r, "00")
        On Error Resume Next
        Set ws = Worksheets(sheetName)
        On Error GoTo 0
        If ws Is Nothing Then
            Set wsTemplate = Worksheets("Modèle")
            wsTemplate.Copy after:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = sheetName
            SortWorksheets
        Else
            MsgBox "La feuille " & sheetName & " existe déjà !", 64, "Information"
        End If
    Else
        MsgBox "Procédure annulée par l'utilisateur", 64, "Information"
    End If

End Sub

Private Sub SortWorksheets()
Dim i As Long, j As Long
    If n > 3 Then
        For i = 3 To Worksheets.Count
            For j = i To Worksheets.Count
                If UCase(Worksheets(j).Name) < UCase(Worksheets(i).Name) Then
                    Worksheets(i).Move before:=Worksheets(j)
                    Worksheets(j).Move before:=Worksheets(i)
                End If
            Next j
        Next i
    End If
End Sub
Rechercher des sujets similaires à "macro creer nouvelle feuille suivant modele"