Ouvrir classeur excel sur la feuille souhaité

me.mans -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonsoir,
Je cherche à trouver une formule VBA qui me permettrait d'ouvrir mon classeur Excel sur la feuille souhaitée.
Mon fichier est un planning mensuel qui se compose de 5 feuilles : semaine 1, semaine 2, semaine 3, semaine 4, semaine 5.
Chaque feuille va du lundi au vendredi.
Je souhaite que le classeur s'ouvre automatiquement à la semaine 5 par exemple pour ce mois-ci, étant donné que nous sommes le 27/12 et que nous sommes la semaine 5 du mois de décembre.
Est-ce que quelqu'un peut m'aider ?
D'avance merci...

2 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    Code à mettre dans ThisWorkbook
    Private Sub Workbook_Open()    
    Sheets("Semaine " & num_sem(Date)).Activate    
    End Sub

    Code à mettre dans un Module
    Function num_sem(D As Date) As Long    
    'Auteur: Laurent Longre. X-Cell    
    ' La fonction suivante renvoie le numéro de semaine conforme 
    ' à la norme ISO, utilisée dans les pays européens (la première 
    ' semaine d'un mois étant définie comme la première semaine 
    ' comportant au moins quatre 'jours dans le mois).    
    D = Int(D)    
    num_sem = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)    
    num_sem = ((D - num_sem - 3 + (Weekday(num_sem) + 1) Mod 7)) \ 7 + 1    
    End Function

    Mytå
    Merci de donner suite à votre question, nous ne sommes pas des robots...
    Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Bonjour Mytå, Je ne pense pas que la fonction que tu présente réponde à la demande de me.mans qui veux le N° de semaine dans le mois et non dans l'année.
    Une fonction qui peu répondre à la demande...
    Function num_sem(DT As Variant) As Integer
    Dim W As Long
        W = Weekday(DateSerial(Year(DT), Month(DT), 1), vbMonday)
        num_sem = Int((Day(DT) - W + 1) / 5)
    End Function

    Le code dans Open restant bien évidemment le même.
    A+
    0