Ouvrir excel sur la date du jour

Simon1331 Messages postés 12 Statut Membre -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
     
    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
  2. Maurice
     
    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
  3. Maurice
     
    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. Simon1331 Messages postés 12 Statut Membre
       
      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. Maurice
       
      Bonjour
      en ce moment il cherche la semaine 31 ?
      sinmon if faux voir la syntaxe des onglets
      A+
      Maurice
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Maurice
     
    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. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  8. Simon1331 Messages postés 12 Statut Membre
     
    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. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      Je te donne le code tout de suite ;)
      0
    2. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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. Simon1331 Messages postés 12 Statut Membre
       
      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. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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
  9. Simon1331 Messages postés 12 Statut Membre
     
    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
  10. Simon1331 Messages postés 12 Statut Membre
     
    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. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      Une couleur sur l'onglet ?
      0
    2. Simon1331 Messages postés 12 Statut Membre
       
      oui voila une couleur sur l'onglet.
      0
    3. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55 > Simon1331 Messages postés 12 Statut Membre
       
      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. Simon1331 Messages postés 12 Statut Membre
       
      Bonjour,
      Vasy pour le rouge :)
      Merci d'avance skk201
      0
    5. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      '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