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
Gaenonius
Pour colorier l'onglet de la feuille active :

ActiveSheet.Tab.ColorIndex = 25 'par exemple

à insérer dans ta macro après :

Worksheets(nomOnglet).Activate

--
Gaenonius

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
MarcT
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

Désolé ça ne fonctionne pas !!!

et je n'arrive pas à comprendre pourquoi pour arranger ...
Ne serait ce pas parcque B1 renvoie la valeur : cycle 1/12; cycle 2/12;
ect... j'ai essayé de bidouillé autour de ça mais je ne côse pas bien
VBA et il a pas du comprendre...
merci de ton aide
@+
Marc

Avatar
JpPradier
Oui, évidemment, je croyais qu'il y avait juste le numéro de cycle en B1.
Modification ci-dessous.

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
numCycle = feuil.Range("b1").Value
numCycle = Mid(numCycle, 1 + InStr(numCycle, " "))
numCycle = 1 * Left(numCycle, InStr(numCycle, "/") - 1)

if numCycle =< 12 then feuil.Tab.ColorIndex=5
if numCycle> 12 and numCycle =<24 then feuil.Tab.ColorIndex=3
' Etc...
'
end if
next

End If

End Sub
Avatar
MarcT
Oui, évidemment, je croyais qu'il y avait juste le numéro de cycle en B1.
Modification ci-dessous.

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
numCycle = feuil.Range("b1").Value
numCycle = Mid(numCycle, 1 + InStr(numCycle, " "))
numCycle = 1 * Left(numCycle, InStr(numCycle, "/") - 1)

if numCycle =< 12 then feuil.Tab.ColorIndex=5
if numCycle> 12 and numCycle =<24 then feuil.Tab.ColorIndex=3
' Etc...
'
end if
next

End If

End Sub


Merci bcp pour ta patience et ta rapidité. ça ne fonctionne tjrs pas ...

Je ne comprends pas !!! je ne suis pê (sans doute) pas très doué ...
Je laisse tomber pour ce soir
en tt cas merci @+
Marc

Avatar
MarcT
Oui, évidemment, je croyais qu'il y avait juste le numéro de cycle en B1.
Modification ci-dessous.

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
numCycle = feuil.Range("b1").Value
numCycle = Mid(numCycle, 1 + InStr(numCycle, " "))
numCycle = 1 * Left(numCycle, InStr(numCycle, "/") - 1)

if numCycle =< 12 then feuil.Tab.ColorIndex=5
if numCycle> 12 and numCycle =<24 then feuil.Tab.ColorIndex=3
' Etc...
'
end if
next

End If

End Sub


Bonjour,

De retour avec mes pbs de couleures !!!
en fait le code fonctionne avec l'onglet de la semaine en cours en
jaune, mais il ne colorie pas les autres onglets en fonction du cycle,
ils les colories tous de la même couleur !!! j'ai essayé de rajouter des
lignes là ou tu mettais ect.. ça change la couleure de tous les onglets
j'espère que je suis assez clair dans la présentation du pb
merci encore pour ton aide
cordialement
Marc

Avatar
JpPradier
Bonjour Marc

Ca dépend comment tu as écrit les lignes suivantes. Tu as combien de plages de cycles ?
Un exemple plus détaillé ci-dessous.

j-p

if numCycle =< 12 then feuil.Tab.ColorIndex=5
if numCycle> 12 and numCycle =<24 then feuil.Tab.ColorIndex=3
if numCycle> 24 and numCycle =<36 then feuil.Tab.ColorIndex=7
if numCycle> 36 and numCycle =<48 then feuil.Tab.ColorIndex=9
Avatar
MarcT
Bonjour Marc

Ca dépend comment tu as écrit les lignes suivantes. Tu as combien de plages de cycles ?
Un exemple plus détaillé ci-dessous.

j-p

if numCycle =< 12 then feuil.Tab.ColorIndex=5
if numCycle> 12 and numCycle =<24 then feuil.Tab.ColorIndex=3
if numCycle> 24 and numCycle =<36 then feuil.Tab.ColorIndex=7
if numCycle> 36 and numCycle =<48 then feuil.Tab.ColorIndex=9

Bonjour JP,

merci de ta patience. Je n'y arrive tjrs pas mais je crois avoir compris
!!!! j'ai mal expliqué le pb... Ce classeur est un planning composé d'un
onglet par semaine. Ce planning fonctionne par cycle de 12 semaines et
est donc n° ainsi cycle 1/12; cycle 2/12; ... cycle 12/12 et reviens à
cycle 1/12 ect ... c pour dinstingués les différents cycle que je
souhaite qu'il se colorise; Je le fais actuellement à la main mais ce
que je découvre d'excel me pousse à "fignoler"
si trop compliqué ou manque de temps laisse tomber
en tt cas merci à toi
@+
cordialement
marc

Avatar
JpPradier
Bonjour Marc

Ok je crois avoir compris l'organisation de ton classeur : il faut une couleur par cycle de 1 à 12.
Je suppose que tes cycles sont entiers ( de 1 à 12) et commencent toujours par 1. Remplace de 'For
each' jusque 'Next' par ce qu'il y a cidessous.

j-p

Couleur=array(5,7,12,3,9) ' mettre ici les couleurs voulues
cpt=1
For each feuil in Worksheets
if feuil.name<> nomOnglet then
numCycle = feuil.Range("b1").Value
numCycle = Mid(numCycle, 1 + InStr(numCycle, " "))
numCycle = 1 * Left(numCycle, InStr(numCycle, "/") - 1)
feuil.Tab.ColorIndex=couleur(1)
if numCycle  then cpt=cpt+1

end if
next
Avatar
MarcT
Bonjour Marc

Ok je crois avoir compris l'organisation de ton classeur : il faut une couleur par cycle de 1 à 12.
Je suppose que tes cycles sont entiers ( de 1 à 12) et commencent toujours par 1. Remplace de 'For
each' jusque 'Next' par ce qu'il y a cidessous.

j-p

Couleur=array(5,7,12,3,9) ' mettre ici les couleurs voulues
cpt=1
For each feuil in Worksheets
if feuil.name<> nomOnglet then
numCycle = feuil.Range("b1").Value
numCycle = Mid(numCycle, 1 + InStr(numCycle, " "))
numCycle = 1 * Left(numCycle, InStr(numCycle, "/") - 1)
feuil.Tab.ColorIndex=couleur(1)
if numCycle  then cpt=cpt+1

end if
next

Bonjour,

encore moi !!! et non ça ne commence pas tjrs par 1, j'aurais du le
préciser ... désolé. Sinon l'essai semble concluant en partie: il
colorie bien 1 1er série correctement et la suivante il ne colorie que 4
onglets !!! alors que la série en B1 indique le bon n° de cycle.
Pour cette année le 1er cycle est 9 correspondant à la semaine 53 de
2004 du 27/12/2004 au 01/01/2005.
merci encore de ta patience
cordilament
marc

Avatar
JpPradier
Bonjour Marc

Bon, alors j'ai rien compris à ton histoire de cycle. Est-ce que dans un cycle, les numéro sont en
ordre croissant ?
Si tu pouvais donner un exemple sur plusieurs series de cycle avec les couleurs attendues.
Dans la dernière macro, on passe en revue les cellules B1 et à chaque fois qu'on trouve cycle 12/12,
on change de couleur après.

j-p
1 2 3