Ouverture onglet semaine courante

Bonjour,

dans mon fichier, j'aimerais que lorsque je l'ouvre l'onglet de la semaine courante s'ouvre automatiquement.

Après plusieurs recherche j'ai essayé des codes VBA mais ca ne fonctionne pas.

Pourriez vous m'éclairer svp ?

Merci d'a

vance

Bonjour,

Dans le module de code de votre workbook, vous pouvez ajouter le code ci-dessous :

Option Explicit

Private Sub Workbook_Open()
  On Error Resume Next
  FindWeekSht(Date).Activate
  On Error Goto 0
End Sub

Private Function FindWeekSht(jour As Date) As Worksheet
  Dim mm As String: mm = Format$(jour, "mm")
  Dim dd As String: dd = Format$(jour, "dd")

  ' get the corresponding month sheets
  Dim validMonthSheets As New Collection
  Dim ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "*" & mm Then
      validMonthSheets.Add ws
    End If
  Next ws

  If validMonthSheets.Count < 1 Then
    MsgBox "Mois [" & mm & "] introuvable !", vbCritical
    Set FindWeekSht = Nothing
    Exit Function
  End If

  Dim lastWeekSht As Worksheet
  ' first week
  Set lastWeekSht = validMonthSheets(1).Previous
  For Each ws In validMonthSheets
    If CLng(Left$(Right$(ws.Name, 5), 2)) >= CLng(dd) Then
      Set FindWeekSht = lastWeekSht
      Exit Function
    End If

    Set lastWeekSht = ws
  Next ws

  ' last week
  Set FindWeekSht = lastWeekSht

End Function

Je vous remercie pour votre retour.

Si je comprend bien je fais alt+f11 puis j'insère un module ?

Faites ATL+F11 pour ouvrir l'éditeur, n'insérez pas de module : pour que la macro se lance à l'ouverture du fichier, il faut la placer dans le module de workbook.

Donc a gauche dans l'éditeur VBA vous devriez avoir une arborescence, ouvrez là jusqu'à trouver votre fichier > Microsoft Excel Objects > (descendez tout en bas de votre liste de feuilles) > Workbook (double-cliquez le). Dans la fenetre de code vous pouvez c/c ce que je vous ai donné.

image

voila la réponse que j'ai à chaque fois

image

Faites ECHAP > puis dans la fenêtre d'enregistrement sélectionnez l'extension .XLSM pour pouvoir sauvegarder les macros.

image

super ca fonctionne ! un grand merci à vous !

super ca fonctionne ! un grand merci à vous !

Je vous en prie, content d'aider et de voir que vous avez réussi à sauvegarder votre première macro. N'oubliez pas de passer le sujet en résolu.

Bonne journée.

Bonsoir,

une proposition en passant :

Private Sub Workbook_Open()
    Dim LaSemaine, NbSemaine
    ' avec DatePart("ww",Date,2,2) on obtient le numéro de semaine ISO de la date donnée
    ' ici Date correspond à la date du système, donc normalement la date du jour
    ' la semaine du 01/09/2025 = 36 et cela correspond à la première feuille du classeur
    ' donc en faisant -35 on arrive à 1, première semaine (feuille) du classeur
    LaSemaine = DatePart("ww", Date, 2, 2) - 35
    ' dès que l'on passe en 2026, le résultat de la soustraction est négatif
    ' on compense en ajoutant 52, nombre de semaine de l'année 2025
    ' calcul du nombre de semaine de l'année en cours :
    ' on choisi le 28 décembre afin de laisser au moins 4 jour en janvier pour faire la première semaine de l'année suivante
    NbSemaine = CInt(Format(CDate("28/12/" & Year(Date)), "ww", vbMonday, vbFirstFourDays))
    If LaSemaine < 0 Then LaSemaine = LaSemaine + NbSemaine
    ' on active la nième feuille du classeur
    Worksheets(LaSemaine).Activate
    ' inconvénients : ne pas mélanger les feuilles dans le classeur
    ' avantage : code simple
End Sub

@ bientôt

LouReeD

Ah merci @LooReeD, je me doutais bien qu'il y avait moyen de s'en sortir avec le numéro de semaine ISO, mais vu que tout était décalé pour coller à la rentrée scolaire du 01/09 j'ai préféré repartir de zéro… Toujours compliqué lol.

Pour être 100% safe, j'encadrerai ton activate dans un On Error car rien ne garantit la présence de la feuille dans le classeur.

(pour info ma solution aussi dépend de l'ordre des feuilles avec Worksheet.Previous)

Bonjour ,

Peut-on m'expliquer comment se prévenir de compléter la mauvaise semaine alors qu'il n'y a aucune information ni de semaine ni de date du jour dans les onglets ? Rien ne distingue un onglet d'un autre au sein de la feuille ?

Et prendre une numérotation de semaine différente de la numérotation ISO ne peut que conduire tôt ou tard à un méli-mélo, ne serait-ce que par rapport à un calendrier normal (papier, Outlook , semaines des vacances scolaires, etc)...

Bonsoir,

en effet mon code n'est pas safe, mais la question n'était pas là C'était pour aller vers une autre direction.
Quant à savoir sur quelle feuille on "atterrie" bien sur que c'est mieux, mais les utilisateurs d'applications personnelles ont leurs habitudes et quelque fois ils ne demandent de résoudre un point "embêtant" à l'utilisation de ces dernières.

Mais il est vrai que de le signaler va certainement mettre la puce à l'oreille de clansa95, et décidera de rajouter en plus du nom de l'onglet une note sur la feuille afin de savoir où il se trouve...

@ bientôt

LouReeD

Merci pour tous vos retour.

Est ce possible de me donner le code pour des onglets septembre 2025; octobre 2025 jusqu'au 31 août 2026.

Merci à vous

Bonjour,

Votre fichier ne contient aucune information sur l'année. Même si l'on peut supposer que vous travaillez sur l'année scolaire 2025-2026 cela n'a été précisé nulle part et cette information n'est pas présente dans les noms de feuilles du classeur.

Comme soulevé par @mafraise, ce fonctionnement a ses limites. En général on préfère travailler avec les numéros de semaine ISO, comme ça aucune erreur.

Par rapport à votre question, il me semble que ma macro devrait s'adapter tant que vous respectez l'ordre des feuilles + période glissée de 1 an maximum, vous pouvez ajouter/modifier vos feuilles.

Et surtout, le classeur joint contenait déjà sept.-25, oct.-25 et aout.-26 d'après ma compréhension. Si ce n'est pas le cas, c'est peut-être l'occasion de passer en numérotation ISO.

Merci pour votre retour

Je ne suis pas un expert de Excel j'ai des bases seulement.

Je vous joins le nouveau fichier et serais ravis d'apprendre le ISO

Merci encore

bonjour le fil,

dans le module5, quelques macros pour cette question :

  • recommencer = pour remettre tout à zéro, pour une nouvelle année scolaire
  • ajouter_mois = ajouter les mois
  • ajouter_semaines = pour les semaines (maintenant avec iso-semaine)
  • M_Cette_Semaine = pour activer la semaine actuelle

on utilise 2 feuilles cachées pour créer les autres feuilles

Ah c'est cool ca qu'on puisse changer l'année :)

En revanche à l'ouverture du fichier j'ai une fenetre qui s'ouvre "erreur"

Aussi il ne prend plus en compte toutes mes couleurs dans la liste déroulante

Merci :)

re,

on a cette erreur, parce qu'en ouvrant le fichier, on n'a pas trouvé la feuille de la semaine actuelle, maintenant ce msgbox est mieux expliqué.

Et pour les MFCs, c'est aussi mieux maintenant ?

Bonjour,

oui c'est super :)

En revanche il cherche la semaine et finalement mon tableau est mois par mois comment faire svp ?

Merci vous êtes au top !

re,

une macro modifiée

Sub M_Cette_Semaine()
     Dim Lundi, sh, Mois
     Lundi = Format(WorksheetFunction.WorkDay_Intl(Date + 1, -1, "0111111"), "dd-mm")     'le lundi de cette semaine
     Mois = WorksheetFunction.Proper(WorksheetFunction.Text(Date, "[$-fr-fr]mmmm yyyy"))     'nomdu mois actuel

     On Error Resume Next
     Application.Goto Sheets(Mois).Range("a1")     'activer ce mois & cellule A1
     If Err.Number = 0 Then Exit Sub 'on a trouvé la feuille du mois = EXIT

     MsgBox "il n'existe pas une feuille du mois " & Chr(34) & Mois & Chr(34), vbInformation, "erreur"
     For Each sh In ThisWorkbook.Sheets
          If Right(sh.Name, 5) = Lundi Then Application.Goto sh.Range("A1"), 1: Exit Sub
     Next
     MsgBox "il n'existe pas une feuille de la semaine du " & Chr(34) & Lundi & Chr(34), vbInformation, "erreur"
End Sub
Rechercher des sujets similaires à "ouverture onglet semaine courante"