XL 2019 Création d'onglet

celtar

XLDnaute Junior
Bonjour,

J'ai besoin de votre aide, est-il possible a l'aide d'un bouton et d'une macro de créer un onglet avec le numéro de semaine en cours.
afin de pouvoir créer automatique cet l'onglet chaque semaine a l'aide du bouton.

Merci pour votre aide.
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
Comme cette macro peut-être :
VB:
Sub ajout_feuille()
Dim Nom As String, i As Byte, Verif As Boolean
 
recom:
Verif = False
Nom = InputBox("Définissez le nom de votre nouvelle feuille", "Ajout nouvelle feuille")
 
If Nom = "" Then Exit Sub
 
For i = 1 To Sheets.Count
    If Sheets(i).Name = Nom Then Verif = True
Next
 
If Verif = True Then
    MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
    GoTo recom
End If
 
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Nom
End Sub
 

GALOUGALOU

XLDnaute Accro
bonsoir le fil, re celtar
un petit peu comme jbarbe, mais avec le nom défini par le numéro de semaine
Nom$ = Application.WorksheetFunction.IsoWeekNum(Date)

VB:
'Si l'onglet  existe déjà, il n'est pas créé
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function

Sub CreationOngletIndividuel()
Application.ScreenUpdating = False
Application.EnableEvents = False
Nom$ = Application.WorksheetFunction.IsoWeekNum(Date)

For Each ws In Worksheets
If ws.Name = Nom Then MsgBox "La feuille existe déjà": Exit Sub: Application.EnableEvents = True
Next ws
If Nom = "" Or Nom Like "*[-./\#[?!()']*" Or Len(Nom) > 30 Then
    MsgBox "le nom n'est pas valide": Application.EnableEvents = True: Exit Sub
End If
Sheets("Test").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Nom

End Sub
cdt
 

Pièces jointes

  • création onglet avec numéro de semaine.xlsm
    23.8 KB · Affichages: 4

celtar

XLDnaute Junior
bonsoir le fil, re celtar
un petit peu comme jbarbe, mais avec le nom défini par le numéro de semaine


VB:
'Si l'onglet  existe déjà, il n'est pas créé
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function

Sub CreationOngletIndividuel()
Application.ScreenUpdating = False
Application.EnableEvents = False
Nom$ = Application.WorksheetFunction.IsoWeekNum(Date)

For Each ws In Worksheets
If ws.Name = Nom Then MsgBox "La feuille existe déjà": Exit Sub: Application.EnableEvents = True
Next ws
If Nom = "" Or Nom Like "*[-./\#[?!()']*" Or Len(Nom) > 30 Then
    MsgBox "le nom n'est pas valide": Application.EnableEvents = True: Exit Sub
End If
Sheets("Test").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Nom

End Sub
cdt
Bonsoir
Merci pour ton code je voudrais l'intégrer a mon code mais je n'y arrive pas
je te mets le fichier si tu peux regarder je t'en remercie d'avance.
A partir du bouton tableau recap je souhaite que l'onglet ce créer mais avec ta macro
fais un essai de ma macro pour te montrer ce qu'il créé.

Merci
 

Pièces jointes

  • Essai_Macro.xlsm
    43 KB · Affichages: 4

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour le fil

@celtar : le projet VBE de ton fichier n'était pas déverrouillé !!!!! Il faut tout faire soi même....
Voici donc le code de notre ami GALOUGALOU que j'ai repris car IsoWeekNum ne fonctionne pas chez moi (XL 2010) .
Bonne journée à toutes & à tous
@+ Eric c
 

Pièces jointes

  • celtar.xlsm
    37.9 KB · Affichages: 2

GALOUGALOU

XLDnaute Accro
re celtar, bonjour eric c, bonjour le forum
le projet vba du fil #7 est verrouillé, donc inaccessible. malgré tout eric c vous a fait une proposition interessante
À partir de ce qui était visible, je vous ai construit un classeur exemple, (je ne déprotége pas les classeurs proposé sur xld) dont voici le code adapté sur l'antépénultième ligne de code.
VB:
'Si l'onglet  existe déjà, il n'est pas créé
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function

Sub CreationOngletIndividuel()
Application.ScreenUpdating = False
Application.EnableEvents = False
Nom$ = Application.WorksheetFunction.IsoWeekNum(Date)

For Each ws In Worksheets
If ws.Name = Nom Then MsgBox "La feuille existe déjà": Exit Sub: Application.EnableEvents = True
Next ws
If Nom = "" Or Nom Like "*[-./\#[?!()']*" Or Len(Nom) > 30 Then
    MsgBox "le nom n'est pas valide": Application.EnableEvents = True: Exit Sub
End If
Sheets("Récapitulatif").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Nom

End Sub

eric c pour excel 2010, je te propose d'essayer cette solution, que tu as peut-être mis en application, je n'ai pas vu ton code.
une fonction proposée par kiki que l'on peut trouver sur ce fil

Code:
Function NumSem(dDate As Date) As Integer
Dim t As Long
    t = DateSerial(Year(dDate + (8 - Weekday(dDate)) Mod 7 - 3), 1, 1)
    NumSem = ((dDate - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1
End Function
et remplacer dans la macro la ligne

Code:
Nom$ = Application.WorksheetFunction.IsoWeekNum(Date)
par la ligne
Code:
Nom$ = NumSem(Date)

cdt
galougalou
 

Pièces jointes

  • création onglet avec numéro de semaine v2.xlsm
    21.6 KB · Affichages: 2

Eric C

XLDnaute Barbatruc
Re le forum
Re le fil

@GALOUGALOU (comme je ne connais pas ton prénom).
Le code du projet "craqué" que notre ami ne nous a pas communiqué est : "123".

Concernant ton code, je vais tester dès ce soir.
Le tien, modifié :
VB:
Nom$ = "Semaine" & " " & DatePart("WW", Date, 2, 2)
 ' Sheets("Test").Copy remplacé par :
 Sheets("Récapitulatif").Copy After:=Sheets(Sheets.Count)
Bonne après-midi à toutes & à tous --- Gardez le frais si possible --
@+ Eric c
 

celtar

XLDnaute Junior
Re le forum
Re le fil

@GALOUGALOU (comme je ne connais pas ton prénom).
Le code du projet "craqué" que notre ami ne nous a pas communiqué est : "123".

Concernant ton code, je vais tester dès ce soir.
Le tien, modifié :
VB:
Nom$ = "Semaine" & " " & DatePart("WW", Date, 2, 2)
 ' Sheets("Test").Copy remplacé par :
 Sheets("Récapitulatif").Copy After:=Sheets(Sheets.Count)
Bonne après-midi à toutes & à tous --- Gardez le frais si possible --
@+ Eric c
Bonjour,

J'ai remis un fichier sans le code dans ma réponse
 

Discussions similaires

Réponses
8
Affichages
148

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16