Ouvrir excel sur la date du jour

Bonjour,
Je suis débutant et j'ai besoin de votre aide.

Voila, j'ai crée dans un fichier excel 52 feuilles qui correspondent au 52 semaines de l'année et dans chaque feuil on retrouve les jours de la semaine du Lundi au Vendredi avec la date pour chaque jour.
Ma question : je veux, dés que j'ouvre mon fichier, il se met directement sur la date du jour.

Merci d'avance pour votre aide :)

10 réponses

  1. Bonjour

    C'est fesable. Mais il faut connaitre le nom des feuilles. C'est genre 1 à 52 ?

    --
    • Vous pouvez mettre en forme votre code grâce à la flèche en haut a droite de l'éditeur de texte.

    Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utiles."
    1
    1. Bonjour
      Voila une macro qui recherche la date du Jour
      a condition que la date se trouve dans la colonne 1
      Sub NumSemJour()
      Dim DateTest, Semaine
      DateTest = DateValue(Now)
      Semaine = Format(DateTest, "ww", vbMonday, vbFirstFourDays)
      Sheets(Semaine).Select
         If IsError(Application.Match(Val(CDbl(Now)), Columns(1), 0)) Then
            MsgBox "Date non trouvée ?"
           Else
            Application.Goto Range("A" & Application.Match(Val(CDbl(Now)), Columns(1), 0)), True
         End If
      End Sub
      

      A+
      Maurice
      1
      1. Bonjour

        La meme macro test la Ligne 1
        Sub NumSemJour()
        Dim DateTest, Semaine, Nlig
        DateTest = DateValue(Now)
        Semaine = Format(DateTest, "ww", vbMonday, vbFirstFourDays)
        On Error GoTo Fin
           Sheets(Semaine).Select
           Nlig = 1 ' numero de Ligne
              If IsError(Application.Match(Val(CDbl(Now)), Rows(Nlig), 0)) Then
                    MsgBox "Date non trouvée ?", vbCritical
                Else
                    Application.Goto Cells(Nlig, Application.Match(Val(CDbl(Now)), Rows(1), 0)), True
              End If
           Exit Sub
        Fin:
           Select Case Err.Number
              Case 9
                  MsgBox "Impossible de trouver la feuille à afficher.", vbCritical
           End Select
        End Sub
        

        A+
        Maurice
        1
        1. J'ai crée la macro et j'ai copié ce code la et j'ai changé le numéro de ligne vu qe moi je suis en ligne 19 mais il m'affiche toujours " Impossible de trouver la feuille à afficher "
          0
        2. Bonjour
          en ce moment il cherche la semaine 31 ?
          sinmon if faux voir la syntaxe des onglets
          A+
          Maurice
          0
      2. Bonjour

        il manque un espace dans la macro
        pour la macro de skk201

        Me.Sheets(" " & CStr(WeekNum(Date))).Activate

        et la miene
        Sub NumSemJour()
        Dim DateTest, Semaine, Nlig
        DateTest = DateValue(Now)
        Semaine = Format(DateTest, "ww", vbMonday, vbFirstFourDays)
        On Error GoTo Fin
           Sheets(" " & Semaine).Select
           Nlig = 19 ' numero de Ligne
              If IsError(Application.Match(Val(CDbl(Now)), Rows(Nlig), 0)) Then
                    MsgBox "Date non trouvée ?", vbCritical
                Else
                    Application.Goto Cells(Nlig, Application.Match(Val(CDbl(Now)), Rows(Nlig), 0)), True
              End If
           Exit Sub
        Fin:
           Select Case Err.Number
              Case 9
                  MsgBox "Impossible de trouver la feuille à afficher.", vbCritical
           End Select
        End Sub
        

        A+
        Maurice
        1
        1. Yep c'est bien ça le problème :)

          'Code by Skk201 // www.commentcamarche.net
          Private Sub Workbook_Open()
          On Error GoTo fin
          Me.Sheets(" " & CStr(WeekNum(Date))).Activate
          Exit Sub
          fin:
          On Error GoTo -1
          MsgBox "Impossible de trouver la feuille à afficher.", vbCritical
          End Sub
          
          'Function by Wigi www.mrexcel.com
          Function WeekNum(D As Date) As Integer
          WeekNum = CInt(Format(D, "ww", 2))
          End Function
          0
      3. Bonjour le fil,

        à tester, coller ce code dans un module

        Sub test()
        Dim NumSem As Byte
        Dim i As Integer
        On Error Resume Next
        Sheets(DatePart("ww", Date, 0, 0) + 1).Activate
        Do
        Cells(19, i + 1).Activate
        If Cells(19, i + 1) = Date Then
        ActiveWindow.ScrollRow = i + 1
        Exit Do
        End If
        i = i + 1
        Loop
        End Sub


        ou plus simple
        Sub test()
        Dim Plage, Cell As Range
        On Error Resume Next
        Sheets(DatePart("ww", Date, 0, 0) + 1).Activate
        Set Plage = Range("D19:H19")
        On Error Resume Next
        Sheets(DatePart("ww", Date, 0, 0) + 1).Activate
        For Each Cell In Plage
        If Cell.Value = Date Then Cell.Select
        Next
        End Sub


        dans la Thiswokbook coller attention un seul code "Private Sub Workbook_Open()"

        Private Sub Workbook_Open()
        Call test
        End Sub


        A+
        Mike-31

        Une période d'échec est un moment rêvé pour semer les graines du savoir.
        1
        1. Re,

          si j'ai bien suivi, colle ce code dans un module

          Sub test()
          Dim Plage, x, Cell As Range
          On Error Resume Next
          Sheets(DatePart("ww", Date, 0, 0) + 1).Activate ' ---------- sélectionne l'onglet correspondant au numéro semaine de la date courante
          Set Plage = Range("D19:H19") ' ----------------------------- plage contenant les dates dans tous les onglets
          On Error Resume Next
          ' ------------------------------------- boucle sur tous les onglets
          For x = 1 To Worksheets.Count
          Sheets(x).Range("D19:H19").Interior.ColorIndex = 6 ' -- rétabli la couleur jaune sur la plage des dates
          Sheets(x).Tab.Color = RGB(226, 226, 226) ' ------------ rétabli la couleur système des onglets
          Next
          ActiveSheet.Tab.ColorIndex = 3 ' ------------- colorise l'onglet actif correspondant au n° semaine en cours
          ' -------------------------------------------- boucle sur la plage pour sélectionner la cellule de la date en cours
          For Each Cell In Plage
          If Cell.Value = Date Then Cell.Interior.ColorIndex = 4
          Next
          End Sub


          et dans la Thiswokbook tu dois avoir si tu ne l'as pas supprimé ce code

          Private Sub Workbook_Open()
          Call test
          End Sub

          1
          1. Bonjour,

            skk201 : Oui, les noms de mes feuilles c'est de 1 à 52.
            Dans ce cas la, qu'est ce que tu me propose comme solution ??
            Merci d'avance.

            Maurice : Merci pour ton aide mais dans mon cas j'ai dans chaque colonne une date, par exemple : colonne D : 27/08/2015, Colonne E : 28/07/2015 jusqu'a colonne H : 31/07/2015.

            Simon1331
            0
            1. Je te donne le code tout de suite ;)
              0
            2. Essaye de mettre ce code dans ThisWorkbook. (Explication plus bas si tu ne comprends pas)

              'Code by Skk201 // www.commentcamarche.net
              Private Sub Workbook_Open()
              On Error GoTo fin
              Me.Sheets(CStr(WeekNum(Date))).Activate
              Exit Sub
              fin:
              On Error GoTo -1
              MsgBox "Impossible de trouver la feuille à afficher.", vbCritical
              End Sub
              
              'Function by Wigi www.mrexcel.com
              Function WeekNum(D As Date) As Integer
              WeekNum = CInt(Format(D, "ww", 2))
              End Function


              Tu ouvres ton classeur excel, tu fais [ALT]+[F11], sur la gauche de la fenêtre qui s'ouvre tu as un arborésence. Tu doubles-clic sur "ThisWorkbook" et tu colles le code ci-dessus.

              Ensutie tu enregistres le classeur au format .xlsm pour enregister la macro, finalement la prmière fois que tu l'ouvrira tu devrais activer les macros. Si tu utilise MS Office 2010 ou supérieur, il faudra s'implement cliquer sur "Activer" dans une barre jaune qui apparaitra au sommet d'excel. Si le fichier est sur un réseau c'est possible que tu ai un message sup

              Et voilà ça devrait marcher. Tiens nous au courant.

              EDIT : Pour information, la première semaine est la semaine qui contient le 1er janvier et le premier jour de la semaine est le Lundi. Si tu veux modfier ces paramètres je peux t'expliquer comment faire.
              0
            3. J'ai suivis tes instructions à la lettre mais chaque fois il m'affiche " Impossible de trouver la feuille à afficher " que dois je faire ??
              Merci Bcp pour ton aide :)
              0
            4. C'est simple Est-ce que le nom des feuilles est bel et bien "1","2","3",... ou est-ce qqchose du genre : "Semaine 1", "Semaine 2", "Semaine 3", ...

              Si tu le souhaite tu peux utiliser un site comme cjoint.com pour nous transmettre ton fichiers.
              0
          2. Bonjour,

            Je m'excuse d'avoir pris du retard pour répondre.
            voila, je vous transmets mon fichier comme ça vous pouvez voir ou je bloque.
            Merci d'avance pour votre aide :)

            https://www.cjoint.com/c/EGDnzjgvcUz
            0
            1. Bonjour,

              Milles merci pour votre aide :)
              Une ptite question si ça vous dérange pas bien sur : comment on fait pour ajouter une couleur sur la semaine en cours ??

              Merci d'avance.
              0
              1. Une couleur sur l'onglet ?
                0
              2. oui voila une couleur sur l'onglet.
                0
              3. @Simon1331
                With ActiveWorkbook.Sheets("Feuil2").Tab
                .ThemeColor = xlThemeColorAccent6 'Mettre en Orange
                .TintAndShade = 0
                End With
                
                With ActiveWorkbook.Sheets("Feuil2").Tab
                .Color = 255 ' Mettre en Rouge (Vif)
                .TintAndShade = 0
                End With
                
                With ActiveWorkbook.Sheets("Feuil2").Tab
                .Color = 192 ' Mettre en Rouge foncé
                .TintAndShade = 0
                End With


                Voilà Code à adapter. Dis moi quel couleur tu veux et je l'appliquerais au code qu'on t'as déjà fait.

                Si tu veux me donner une couleur précise :

                Ouvre excel, MEnu "Affichage", Dans "Macro, tu as l'enregistreur de macro. Tu l'actives, tu clique droit sur l'onglet, tu choisis la couleur qui te plaît. Ensuite sur la barre d'état en bas a gauche d'excel tu clique sur le petit carrée bleu. Finalement tu fais [ALT]+[F11] pour afficher l'éditeur de macro, tu vas dans le module1 et là tu auras le code des actions que tu viens de faire. Tu nous transmets ce code comme ça on saura exetement la couleur que tu souhaites.

                (Ou alors tu nous dis tout simplement rouge :D)
                0
              4. Bonjour,
                Vasy pour le rouge :)
                Merci d'avance skk201
                0
              5. 'Code by Skk201 // www.commentcamarche.net
                Private Sub Workbook_Open()
                On Error GoTo fin
                Dim wn As Integer
                wn = WeekNum(Date)
                Me.Sheets(" " & CStr(wn-1)).Tab.ColorIndex = xlAutomatic
                Me.Sheets(" " & CStr(wn)).Tab.Color = 255
                Me.Sheets(" " & CStr(wn)).Activate
                Exit Sub
                fin:
                On Error GoTo -1
                MsgBox "Impossible de trouver la feuille à afficher.", vbCritical
                End Sub
                
                'Function by Wigi www.mrexcel.com
                Function WeekNum(D As Date) As Integer
                WeekNum = CInt(Format(D, "ww", 2))
                End Function


                Voilà ça mets en rouge la semaine en court et enlève le rouge dans la semaine précédente.
                0