OVH Cloud OVH Cloud

Se positionner sur la bonne feuille à l'ouverture Excel 2010

8 réponses
Avatar
Corent38
Bonjour,

J'ai aperçu plusieurs Posts ressemblant aux miens mais je n'ai jamais réussi à l'appliquer à mon cas.

Alors j'ai un fichier Excel avec 53 feuilles (52 semaines/an et parfois 53). Les feuilles sont nommées Semaine 01, Semaine 02.. - ..Semaine 53.
J'aimerais qu'à l'ouverture du fichier Excel, la bonne feuille s'ouvre. Si on est le 02/10/17, le fichier Excel s'ouvre sur la feuille "e;e;Semaine 40"e;e;.

J'ai cru comprendre que je devais utiliser un code dans VBA mais je ne maîtrise pas du tout.

Merci d'avance pour vos réponses !

8 réponses

Avatar
JièL
Bonjour,
Alt+F11
Dans le module ThisWorkbook coller ceci
Private Sub Workbook_Open()
Dim nosem As String
nosem = "Semaine "&Format(WorksheetFunction.IsoWeekNum(Date),"00")
ActiveWorkbook.Worksheets(nosem).Activate
End Sub
Si ça ne fonctionne pas avec 2010 il faut utiliser WeekNum à la place de
IsoWeekNum et éventuellement ajuster avec +1 ou -1 selon l'année en
cours car la fonction WeekNum compte la semaine 1 comme commençant au
1/1 de l'année ce qui n'est pas le cas pour les Frenchies ;-)
--
JièL Iso French
Le 02/10/2017 à 10:12, Corent38 a écrit :
Bonjour,
J'ai aperçu plusieurs Posts ressemblant aux miens mais je n'ai jamais réussi à
l'appliquer à mon cas.
Alors j'ai un fichier Excel avec 53 feuilles (52 semaines/an et parfois 53). Les
feuilles sont nommées Semaine 01, Semaine 02.. - ..Semaine 53.
J'aimerais qu'à l'ouverture du fichier Excel, la bonne feuille s'ouvre. Si on
est le 02/10/17, le fichier Excel s'ouvre sur la feuille "e;e;Semaine 40"e;e;.
J'ai cru comprendre que je devais utiliser un code dans VBA mais je ne maîtrise
pas du tout.
Merci d'avance pour vos réponses !
Avatar
MichD
Bonjour,
Pour ouvrir la fenêtre VBA : Alt+F11
Dans le module ThisWorkbook collez ceci:
Dans cette procédure, tu dois remplacer "NOSEM_européenne" par
"NOSEM_américaine" selon que tu es européen ou nord-américain.
'-------------------------------------------------------------
Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim NomFeuille As String
On Error Resume Next
NomFeuille = "Semaine " & NOSEM_européenne
Set Sh = ThisWorkbook.Worksheets(NomFeuille)
If Err <> 0 Then
Err = 0
MsgBox "Il n'y a aucune feuille dans ce classeur " & _
"au nom de """ & NomFeuille & """."
Else
Worksheets(NomFeuille).Select
End If
End Sub
'-------------------------------------------------------------
Afin de trouver le numéro de la semaine quelle que soit la version d'Excel
que tu utilises, emploie une des 2 fonctions suivantes que tu peux placer
(copier) directement dans le Thisworkbook ou dans un module standard que tu
ajoutes au projetVBA.
'-------------------------------------------------------------
Sub NOSEM_américaine()
D = Range("G8")
NOSEM = Application.Ceiling(((D - DateSerial(Year(D), 1, 1)) / 7 +
1), 1)
End Sub
'-------------------------------------------------------------
Sub NOSEM_européenne() de Laurent Longre
D = Range("G1")
NOS = DateSerial(Year(D + (8 - WeekDay(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOS - 3 + (WeekDay(NOS) + 1) Mod 7)) 7 + 1
End Sub
'-------------------------------------------------------------
MichD
Avatar
corent38
Le lundi 02 Octobre 2017 à 10:50 par JièL :
Bonjour,
Alt+F11
Dans le module ThisWorkbook coller ceci
Private Sub Workbook_Open()
Dim nosem As String
nosem = "Semaine
"&Format(WorksheetFunction.IsoWeekNum(Date),"00")
ActiveWorkbook.Worksheets(nosem).Activate
End Sub
Si ça ne fonctionne pas avec 2010 il faut utiliser WeekNum à la
place de
IsoWeekNum et éventuellement ajuster avec +1 ou -1 selon l'année
en
cours car la fonction WeekNum compte la semaine 1 comme commençant au
1/1 de l'année ce qui n'est pas le cas pour les Frenchies ;-)
--
JièL Iso French
Le 02/10/2017 à 10:12, Corent38 a écrit :
Bonjour,
J'ai aperçu plusieurs Posts ressemblant aux miens mais je n'ai jamais
réussi à
l'appliquer à mon cas.
Alors j'ai un fichier Excel avec 53 feuilles (52 semaines/an et parfois 53).
Les
feuilles sont nommées Semaine 01, Semaine 02.. - ..Semaine 53.
J'aimerais qu'à l'ouverture du fichier Excel, la bonne feuille s'ouvre.
Si on
est le 02/10/17, le fichier Excel s'ouvre sur la feuille "e;e;Semaine
40"e;e;.
J'ai cru comprendre que je devais utiliser un code dans VBA mais je ne
maîtrise
pas du tout.
Merci d'avance pour vos réponses !
Je vais essayer. Mais je trouve pas le module ThisWorkbook.. je suis vraiment nul.
Avatar
corent38
Le lundi 02 Octobre 2017 à 13:38 par MichD :
Bonjour,
Pour ouvrir la fenêtre VBA : Alt+F11
Dans le module ThisWorkbook collez ceci:
Dans cette procédure, tu dois remplacer
"NOSEM_européenne" par
"NOSEM_américaine" selon que tu es européen ou
nord-américain.
'-------------------------------------------------------------
Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim NomFeuille As String
On Error Resume Next
NomFeuille = "Semaine " & NOSEM_européenne
Set Sh = ThisWorkbook.Worksheets(NomFeuille)
If Err <> 0 Then
Err = 0
MsgBox "Il n'y a aucune feuille dans ce classeur " & _
"au nom de """ & NomFeuille &
"""."
Else
Worksheets(NomFeuille).Select
End If
End Sub
'-------------------------------------------------------------
Afin de trouver le numéro de la semaine quelle que soit la version
d'Excel
que tu utilises, emploie une des 2 fonctions suivantes que tu peux placer
(copier) directement dans le Thisworkbook ou dans un module standard que tu
ajoutes au projetVBA.
'-------------------------------------------------------------
Sub NOSEM_américaine()
D = Range("G8")
NOSEM = Application.Ceiling(((D - DateSerial(Year(D), 1, 1)) / 7 +
1), 1)
End Sub
'-------------------------------------------------------------
Sub NOSEM_européenne() de Laurent Longre
D = Range("G1")
NOS = DateSerial(Year(D + (8 - WeekDay(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOS - 3 + (WeekDay(NOS) + 1) Mod 7)) 7 + 1
End Sub
'-------------------------------------------------------------
MichD
Je suis peut être aveugle mais je trouve pas le module thisworkbook...
Et ensuite dans ta procédure, y a t'il des choses à modifier ? Lorsque je lis "NomFeuille", c'est à moi de changer ou je laisse comme tu as écris ?
Avatar
MichD
| Je suis peut être aveugle mais je trouve pas le module thisworkbook...
**** Tu ouvres la fenêtre de l'éditeur de code VBA par le raccourci clavier
: Alt + F11
Dans la section de gauche, dans la fenêtre "Projet projetVBA"
Débute par identifier le projetVBA de ton classeur
exemple : VPAProject(Nom de ton classeur.xlsm)
Ensuite, ouvre l'arborescence en cliquant sur le symbole "+" devant
le nom du fichier
Dans la liste des objets que tu verras, tu as nom de chaque feuille
contenu dans le classeur + l'élément "Thisworkbook".
Fais un double clic sur ThisWorkbook et dans la page blanche de
droite, tu copies le code de mon message.
| Et ensuite dans ta procédure, y a t'il des choses à modifier ? Lorsque je
lis
| "NomFeuille", c'est à moi de changer ou je laisse comme tu as écris ?
**** La seule chose que tu dois changer au besoin est dans la procédure
Private Sub Workbook_Open()
Dans cette procédure, tu dois remplacer "NOSEM_européenne" par
"NOSEM_américaine" selon que tu es européen ou nord-américain.
ATTENTION : sI ce n'est déjà fait :
A )
Tu dois ajouter l'élément du menu "Développeur" au ruban.
Pour ce faire, Fichier / options / Personnaliser le ruban / dans la section
de droite, coche l'item : "Développeur".
B ) Tu dois activer l'exécution des macros : pour ce faire
- Clique sur le menu "développeur", à l'extrême gauche, section "Code",
clique sur la commande "Sécurité des macros"
- Dans la section du bas de la fenêtre, coche la case "Accès approuvé au
module d'objet du projetVBA"
- Dans la section du haut, coche le bouton radio : "Activer toutes les
macros .....)
C ) Tu dois enregistrer le fichier avec une extension .xlsm - dans la
fenêtre "Enregistrer sous" choisis dans la liste déroulante "Type",
"classeur Excel prenant en charge les macros (.xlsm)
Voilà!
Avatar
corent38
Le lundi 02 Octobre 2017 à 13:38 par MichD :
Bonjour,
Pour ouvrir la fenêtre VBA : Alt+F11
Dans le module ThisWorkbook collez ceci:
Dans cette procédure, tu dois remplacer
"NOSEM_européenne" par
"NOSEM_américaine" selon que tu es européen ou
nord-américain.
'-------------------------------------------------------------
Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim NomFeuille As String
On Error Resume Next
NomFeuille = "Semaine " & NOSEM_européenne
Set Sh = ThisWorkbook.Worksheets(NomFeuille)
If Err <> 0 Then
Err = 0
MsgBox "Il n'y a aucune feuille dans ce classeur " & _
"au nom de """ & NomFeuille &
"""."
Else
Worksheets(NomFeuille).Select
End If
End Sub
'-------------------------------------------------------------
Afin de trouver le numéro de la semaine quelle que soit la version
d'Excel
que tu utilises, emploie une des 2 fonctions suivantes que tu peux placer
(copier) directement dans le Thisworkbook ou dans un module standard que tu
ajoutes au projetVBA.
'-------------------------------------------------------------
Sub NOSEM_américaine()
D = Range("G8")
NOSEM = Application.Ceiling(((D - DateSerial(Year(D), 1, 1)) / 7 +
1), 1)
End Sub
'-------------------------------------------------------------
Sub NOSEM_européenne() de Laurent Longre
D = Range("G1")
NOS = DateSerial(Year(D + (8 - WeekDay(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOS - 3 + (WeekDay(NOS) + 1) Mod 7)) 7 + 1
End Sub
'-------------------------------------------------------------
MichD
Je suis désolé pour le triple post.. je sais que ce n'est pas admis en général..
J'ai finis par trouver le module. J'ai copier coller ce qu'il fallait. Mais une ligne reste rouge et cela ne fonctionne pas. Dans le paragraphe ci-dessous, C'est la ligne de code qui commence par NOSEM qui est rouge.. :
Sub NOSEM_européenne()
D = Range("G1")
NOS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOS - 3 + (WeekDay(NOS) + 1) Mod 7)) 7 + 1
End Sub
Merci pour vos réponses !
Avatar
MichD
Effectivement, il y a eu un problème de copier-coller de ma part.
copie plutôt ce code. Attention, si une ligne est coupé par le service de
messagerie, il faut le remettre toute sur la même ligne.
'-------------------------------------------------------------
Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim NomFeuille As String
On Error Resume Next
NomFeuille = "Semaine " & NOSEM_européenne
Set Sh = ThisWorkbook.Worksheets(NomFeuille)
If Err <> 0 Then
Err = 0
MsgBox "Il n'y a aucune feuille dans ce classeur " & _
"au nom de """ & NomFeuille & """."
Else
Worksheets(NomFeuille).Select
End If
End Sub
'-------------------------------------------------------------
Function NOSEM_américaine()
Dim D As Date, NoSem As String
D = Date
NoSem = Application.Ceiling(((D - DateSerial(Year(D), 1, 1)) / 7 + 1), 1)
NOSEM_américaine = NoSem
End Function
'-------------------------------------------------------------
Function NOSEM_européenne()
Dim D As Date, NoSem As String
D = Date
NOS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NoSem = ((D - NOS - 3 + (Weekday(NOS) + 1) Mod 7)) 7 + 1
NOSEM_européenne = NoSem
End Function
'-------------------------------------------------------------
MichD
"corent38" a écrit dans le message de groupe de discussion :
Le lundi 02 Octobre 2017 à 13:38 par MichD :
Bonjour,
Pour ouvrir la fenêtre VBA : Alt+F11
Dans le module ThisWorkbook collez ceci:
Dans cette procédure, tu dois remplacer
"NOSEM_européenne" par
"NOSEM_américaine" selon que tu es européen ou
nord-américain.
'-------------------------------------------------------------
Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim NomFeuille As String
On Error Resume Next
NomFeuille = "Semaine " & NOSEM_européenne
Set Sh = ThisWorkbook.Worksheets(NomFeuille)
If Err <> 0 Then
Err = 0
MsgBox "Il n'y a aucune feuille dans ce classeur " & _
"au nom de """ & NomFeuille &
"""."
Else
Worksheets(NomFeuille).Select
End If
End Sub
'-------------------------------------------------------------
Afin de trouver le numéro de la semaine quelle que soit la version
d'Excel
que tu utilises, emploie une des 2 fonctions suivantes que tu peux placer
(copier) directement dans le Thisworkbook ou dans un module standard que
tu
ajoutes au projetVBA.
'-------------------------------------------------------------
Sub NOSEM_américaine()
D = Range("G8")
NOSEM = Application.Ceiling(((D - DateSerial(Year(D), 1, 1)) / 7 +
1), 1)
End Sub
'-------------------------------------------------------------
Sub NOSEM_européenne() de Laurent Longre
D = Range("G1")
NOS = DateSerial(Year(D + (8 - WeekDay(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOS - 3 + (WeekDay(NOS) + 1) Mod 7)) 7 + 1
End Sub
'-------------------------------------------------------------
MichD

Je suis désolé pour le triple post.. je sais que ce n'est pas admis en
général..
J'ai finis par trouver le module. J'ai copier coller ce qu'il fallait. Mais
une
ligne reste rouge et cela ne fonctionne pas. Dans le paragraphe ci-dessous,
C'est la ligne de code qui commence par NOSEM qui est rouge.. :
Sub NOSEM_européenne()
D = Range("G1")
NOS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOS - 3 + (WeekDay(NOS) + 1) Mod 7)) 7 + 1
End Sub
Merci pour vos réponses !
Avatar
corent38
Le lundi 02 Octobre 2017 à 10:12 par Corent38 :
Bonjour,
J'ai aperçu plusieurs Posts ressemblant aux miens mais je n'ai jamais
réussi à l'appliquer à mon cas.
Alors j'ai un fichier Excel avec 53 feuilles (52 semaines/an et parfois 53).
Les feuilles sont nommées Semaine 01, Semaine 02.. - ..Semaine 53.
J'aimerais qu'à l'ouverture du fichier Excel, la bonne feuille s'ouvre.
Si on est le 02/10/17, le fichier Excel s'ouvre sur la feuille
"e;e;Semaine 40"e;e;.
J'ai cru comprendre que je devais utiliser un code dans VBA mais je ne
maîtrise pas du tout.
Merci d'avance pour vos réponses !
J'ai réussi, merci pour vos réponses !