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

XL 2019 Création d'onglet

  • Initiateur de la discussion Initiateur de la discussion celtar
  • Date de début Date de début

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 !

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.
 
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
 
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

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

Bonsoir le forum
Bonsoir celtar, JBARBE, GALOUGALOU

Si en plus pour "tenter" (je parle pour moi 😀) de t'aider, il faut "casser" le password du projet VBE......

Bonne soirée à toutes & à tous
@+ Eric c
 
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

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

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
 
- 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

Réponses
4
Affichages
200
Réponses
5
Affichages
294
  • Question Question
Réponses
6
Affichages
317
Réponses
4
Affichages
221
Réponses
5
Affichages
382
Réponses
0
Affichages
230
  • Question Question
Microsoft 365 bouton supprimer
Réponses
4
Affichages
139
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…