OVH Cloud OVH Cloud

couleur d'onglets

23 réponses
Avatar
MarcT
Bonjour à tous
j'ai trouvé sur ce forum comment avec une mise en forme conditionnelle
faire ressortir la semaine en cours. Est-il possible de faire la même
chose à un onglet ?? j'ai un onglet par semaine de l'année. Et si en
plus lorsque j'ouvre mon fichier ça pouvait être sur cet onglet se
serait royal.
merci d'avance à tous
Marc

10 réponses

1 2 3
Avatar
Philippe.R
Bonjour Marc,

Pour sélectionner l'onglet portant le numéro de la semaine, tu peux, après avoir créé dans ton classeur
le nom toto en lui donnant comme référence =AUJOURDHUI(), coller ce qui suit dans un module standard du
projet VBA :

Function NUMSEM_ISO_europ(cEl As Range) 'av
'bug des dimanches 2 janvier pour les années 2101, 2501
' (etc...intervalle 400 ans)
If Day(cEl) = 2 And Month(cEl) = 1 And Year(cEl) Mod 400 = 101 Then
NUMSEM_ISO_europ = 52
Exit Function
End If
If Weekday(cEl) = 2 And Month(cEl) = 12 And Day(cEl) > 28 Then
NUMSEM_ISO_europ = 1
Else: NUMSEM_ISO_europ = DatePart("ww", cEl, 2, 2)
End If
End Function

Sub semongl()
Dim numOngl As String
numOngl = NUMSEM_ISO_europ([toto])
Sheets(numOngl).Select
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"MarcT" a écrit dans le message de news:

Bonjour à tous
j'ai trouvé sur ce forum comment avec une mise en forme conditionnelle faire ressortir la semaine en
cours. Est-il possible de faire la même chose à un onglet ?? j'ai un onglet par semaine de l'année. Et
si en plus lorsque j'ouvre mon fichier ça pouvait être sur cet onglet se serait royal.
merci d'avance à tous
Marc


Avatar
Philippe.R
Oups !
Mieux vaut affecter le nom à une cellule contenant la formule =AUJOURDHUI()
--
Amicales Salutations

"Philippe.R" a écrit dans le message de news:
e%
Bonjour Marc,

Pour sélectionner l'onglet portant le numéro de la semaine, tu peux, après avoir créé dans ton
classeur le nom toto en lui donnant comme référence =AUJOURDHUI(), coller ce qui suit dans un module
standard du projet VBA :

Function NUMSEM_ISO_europ(cEl As Range) 'av
'bug des dimanches 2 janvier pour les années 2101, 2501
' (etc...intervalle 400 ans)
If Day(cEl) = 2 And Month(cEl) = 1 And Year(cEl) Mod 400 = 101 Then
NUMSEM_ISO_europ = 52
Exit Function
End If
If Weekday(cEl) = 2 And Month(cEl) = 12 And Day(cEl) > 28 Then
NUMSEM_ISO_europ = 1
Else: NUMSEM_ISO_europ = DatePart("ww", cEl, 2, 2)
End If
End Function

Sub semongl()
Dim numOngl As String
numOngl = NUMSEM_ISO_europ([toto])
Sheets(numOngl).Select
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"MarcT" a écrit dans le message de news:

Bonjour à tous
j'ai trouvé sur ce forum comment avec une mise en forme conditionnelle faire ressortir la semaine en
cours. Est-il possible de faire la même chose à un onglet ?? j'ai un onglet par semaine de l'année.
Et si en plus lorsque j'ouvre mon fichier ça pouvait être sur cet onglet se serait royal.
merci d'avance à tous
Marc





Avatar
MarcT
Oups !
Mieux vaut affecter le nom à une cellule contenant la formule =AUJOURDHUI()
merci pour tes conseils mais je ne suis pas très fort avec excel et je

n'arrive pas à la faire fonctionner
merci encore
cordialement
marc

Avatar
Daniel.M
Bonjour,

Supposons que tes onglets sont numérotés ainsi: "S01", "S02", ... "S53"

Dans un module normal:

Function ISOWeekNum(d1 As Date) As Integer
Dim Jan03 As Long
Jan03 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - Jan03 + Weekday(Jan03) + 5) / 7)
End Function


Dans le code de ton classeur (ThisWorkbook):

Private Sub Workbook_Open()
Dim nomOnglet As String

nomOnglet = "S" & Format(ISOWeekNum(Date), "00")
On Error Resume Next
Worksheets(nomOnglet).Activate
If Err.Number <> 0 Then
MsgBox "Aucun onglet ne porte le nom " & nomOnglet, vbInformation, "Feuille
inexistante"
Err.Clear
End If

End Sub

Salutations,

Daniel M.

"MarcT" wrote in message
news:
Bonjour à tous
j'ai trouvé sur ce forum comment avec une mise en forme conditionnelle
faire ressortir la semaine en cours. Est-il possible de faire la même
chose à un onglet ?? j'ai un onglet par semaine de l'année. Et si en
plus lorsque j'ouvre mon fichier ça pouvait être sur cet onglet se
serait royal.
merci d'avance à tous
Marc


Avatar
MarcT
Bonjour,

Supposons que tes onglets sont numérotés ainsi: "S01", "S02", ... "S53"

Dans un module normal:

Function ISOWeekNum(d1 As Date) As Integer
Dim Jan03 As Long
Jan03 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - Jan03 + Weekday(Jan03) + 5) / 7)
End Function


Dans le code de ton classeur (ThisWorkbook):

Private Sub Workbook_Open()
Dim nomOnglet As String

nomOnglet = "S" & Format(ISOWeekNum(Date), "00")
On Error Resume Next
Worksheets(nomOnglet).Activate
If Err.Number <> 0 Then
MsgBox "Aucun onglet ne porte le nom " & nomOnglet, vbInformation, "Feuille
inexistante"
Err.Clear
End If

End Sub

Salutations,

Daniel M.

"MarcT" wrote in message
news:

Bonjour à tous
j'ai trouvé sur ce forum comment avec une mise en forme conditionnelle
faire ressortir la semaine en cours. Est-il possible de faire la même
chose à un onglet ?? j'ai un onglet par semaine de l'année. Et si en
plus lorsque j'ouvre mon fichier ça pouvait être sur cet onglet se
serait royal.
merci d'avance à tous
Marc




Bonjour Daniel,

merci bcp pour ce code que j'au réussi à faire fonctionner malgré mon
petit niveau .... Il s'ouvre automatiquement sur l'onglet de la semaine
en cours mais je n'arrive par contre pas à coloriser l'onglet en
question. Peut-être est ce du au fait que les onglets ont déjà une
couleur ...
en tt cas merci et bon dimanche
cordialement
Marc


Avatar
Daniel.M
Bonjour,

merci bcp pour ce code que j'au réussi à faire fonctionner malgré mon
petit niveau .... Il s'ouvre automatiquement sur l'onglet de la semaine
en cours


Pas de quoi.

mais je n'arrive par contre pas à coloriser l'onglet en
question.



La coloration des onglets n'est pas disponible avec ma version (XL 2000), donc
je ne peux pas t'aider là-dessus. Mais il y aura une âme charitable qui te dira
comment (je pense qu'il faut avoir une version assez récente).

Salutations,

Daniel M.

Avatar
JpPradier
Bonjour Marc, Daniel

La couleur d'onglet est dispo à partir d'Excel 2002.
Tu modifie la macro de Daniel comme ci dessous.
A noter que comme l'onglet sera sélectionné, la couleur ne sera quasiment pas visible.

j-p

Private Sub Workbook_Open()
Dim nomOnglet As String

nomOnglet = "S" & Format(ISOWeekNum(Date), "00")
On Error Resume Next
Worksheets(nomOnglet).Activate
If Err.Number <> 0 Then
MsgBox "Aucun onglet ne porte le nom " & nomOnglet, vbInformation, "Feuille
inexistante"
Err.Clear
Else
Worksheets(nomOnglet).Tab.ColorIndex = 6 End If

End Sub
Avatar
MarcT
Bonjour Marc, Daniel

La couleur d'onglet est dispo à partir d'Excel 2002.
Tu modifie la macro de Daniel comme ci dessous.
A noter que comme l'onglet sera sélectionné, la couleur ne sera quasiment pas visible.

j-p

Private Sub Workbook_Open()
Dim nomOnglet As String

nomOnglet = "S" & Format(ISOWeekNum(Date), "00")
On Error Resume Next
Worksheets(nomOnglet).Activate
If Err.Number <> 0 Then
MsgBox "Aucun onglet ne porte le nom " & nomOnglet, vbInformation, "Feuille
inexistante"
Err.Clear
Else
Worksheets(nomOnglet).Tab.ColorIndex = 6 End If

End Sub

Merci à tous les 2 bon dimanche (studieux !!)

@+
cordialement
Marc

Avatar
MarcT
Bonjour Marc, Daniel

La couleur d'onglet est dispo à partir d'Excel 2002.
Tu modifie la macro de Daniel comme ci dessous.
A noter que comme l'onglet sera sélectionné, la couleur ne sera quasiment pas visible.

j-p

Private Sub Workbook_Open()
Dim nomOnglet As String

nomOnglet = "S" & Format(ISOWeekNum(Date), "00")
On Error Resume Next
Worksheets(nomOnglet).Activate
If Err.Number <> 0 Then
MsgBox "Aucun onglet ne porte le nom " & nomOnglet, vbInformation, "Feuille
inexistante"
Err.Clear
Else
Worksheets(nomOnglet).Tab.ColorIndex = 6 End If

End Sub

Bonjour,

Est-il possible de te solliciter encore ???
Serait-il délirant d'imaginer pouvoir coloriser les onglets en fonction
d'une autre formule situé en B1 contenant:=cycle(Infos!B22) faisant
référence à une macro qui me donne un n° de cycle. Ce qui donnerait:
bleu 1er série de cycle de 1 à 12 puis orange série suivante Ect...
Tout en gardant en jaune l'onglet de la semaine en cours.
une fois qu'on est parti on fignole, on fignole ....
Si trop compliqué ou pas le goût laisse tomber et merci pour la dernière
fois
cordialement
Marc

Avatar
JpPradier
Voila la macro modifiée qui devrait faire ce que tu demandes. Tu devras peut-etre adapter les
couleurs suivant le nombre de cycles.

j-p


Private Sub Workbook_Open()
Dim nomOnglet As String

nomOnglet = "S" & Format(ISOWeekNum(Date), "00")
On Error Resume Next
Worksheets(nomOnglet).Activate
If Err.Number <> 0 Then
MsgBox "Aucun onglet ne porte le nom " & nomOnglet, vbInformation, "Feuille
inexistante"
Err.Clear
Else
Worksheets(nomOnglet).Tab.ColorIndex = 6
For each feuil in Worksheets
if feuil.name<> nomOnglet then
if feuil.range("B1").value =< 12 then feuil.Tab.ColorIndex=5
if feuil.range("B1").value> 12 and feuil.Range("B1").value =<24 then feuil.Tab.ColorIndex=3
' Etc...
'
end if
next

End If

End Sub
1 2 3