XL 2010 changer la couleur d’un onglet à l’ouverture du doc Excel avec une condition

jeanmi

XLDnaute Occasionnel
J’ai un fichier Excel avec des onglets, autant que de jours dans le mois, sauf les dimanches, plus un dernier onglet qui lui est caché à l'ouverture d'Excel (Il se trouve à la fin de tous les onglets)

Chaque onglet est identifié par une date.
La date est actuellement sous la forme jour-date-moi , avec des – entre chaque information (ex : ven.-1-oct) Il est peut être possible de faire plus simple ?

voici le code que je voulais mettre en place pour créer la date et donc nommer l'onglet,

VB:
date_demander = InputBox("Entrer la date de début de création des onglets :")

jour = Day(date_demander)
date = CDate(date_demander)
mois = CDate(date_demander)

nom_N_onglet = Format(date_test, "ddd") & "-" & jour & "-" & Format(mois_test, "mmm")

Nom_onglet_actif = ActiveSheet.Name
Sheets(Nom_onglet_actif).Name = nom_N_onglet

Après, il faut que j'arrive à créer automatiquement tous les autres onglets du mois, sauf les dimanches, mais ça je cherche. Actuellement je pratique 1 par 1 manuellement.

Ce que j’aimerai faire, à l’ouverture du doc Excel :

1- Que l’onglet correspondant à la date du jour soit ouvert
2- Que l’onglet correspondant à la date du jour soit colorisé en bleu par exemple, mais peut-être une autre couleur, à voir la possibilité de changer dans le code cela
2- A la fermeture du doc que l’onglet colorisé repasse à sa couleur initiale

Merci d’avance pour votre aide.

Bien cordialement
 
Solution
re jeanmi bonsoir chti160
chti160 a raison, deux fois n, ridicule
pour répondre au fil 24 sur la base du classeur que j'ai proposé
pour cacher les feuilles
Code:
Sub creer_feuilles()
Sheets("Base").Visible = True
Sheets("C_postal").Visible = True
On Error Resume Next
Application.ScreenUpdating = False ' desactive le rafraichissement écran
d = Range("a1")
n = Range("b1")
deb = CDate(d)
ori = CDate(d)
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
Sheets(4).Name = "01"
For x = 2 To n
deb = deb + 1 ' incrmente la date de début d'un jour
 Sheets("01").Select 'selectionne feuille 01
    Sheets("01").Copy After:=Sheets(Sheets.Count) ' la copie  en dernier
    Sheets("01 (2)").Select ' la selectionne
    ' la ligne suivante colorie l'onglet en...

ChTi160

XLDnaute Barbatruc
Bonjour jeanmi
Bonjour le Fil ,le Forum
peut être avec ceci
VB:
'Donne le dernier jour du mois
NB_JOURS = Day(DateSerial(Year(Date_Select), Month(Date_Select) + 1, 0))
'ou le Nombre de jours
 NB_JOURS = Day(DateSerial(Year(Date_Select), Month(Date_Select) + 1, 1) - 1)
Bonne rentrée
jean marie
 

jeanmi

XLDnaute Occasionnel
Bonjour jeanmi
Bonjour le Fil ,le Forum
peut être avec ceci
VB:
'Donne le dernier jour du mois
NB_JOURS = Day(DateSerial(Year(Date_Select), Month(Date_Select) + 1, 0))
'ou le Nombre de jours
 NB_JOURS = Day(DateSerial(Year(Date_Select), Month(Date_Select) + 1, 1) - 1)
Bonne rentrée
jean marie
Bonjour @ChTi160 , bonjour à tous,

Merci pour cette réponse, mais j'ai déjà le nombre de jour du mois dans une variable (def_nb_jour_mois) et la date dans une autre (def_date_debut) récupérée par inputbox.

Ce que je cherche à faire, c'est Nb_onglets = def_nb_jour_mois - ( formule pour extraire le jour de la date entrée dans la variable def_date_debut , pour avoir un onglet par date à partir de la date demandée.

cordialement
 

jeanmi

XLDnaute Occasionnel
Bonjour @GALOUGALOU , bonjour à tous,

post #16 presque résolus,

Il ne me reste plus que :

a) Dans le code, ci-dessous, je n'arrive pas à comprendre où est défini le a de la boucle , quelle valeur, pourquoi ? merci pour l'explication

VB:
For n = 2 To n - a

b) j'ai voulu, cacher les onglets non utiliser, donc modèle et C_postal, et là ça ne semble pas fonctionner ?
Es possible ou pas d'avoir les feuilles de modèle et C_Postal non visible et de pouvoir faire fonctionner la procédure ?

c) j’ai mis en place ma feuille modèle pour faire des essais et j’ai un message que je ne comprends pas ?

Merci encore pour votre aide.

Cordialement
 

Pièces jointes

  • Creation onglets V7.xlsm
    131.4 KB · Affichages: 3

GALOUGALOU

XLDnaute Accro
re jeanmi re chti 160
et bien je ne sais pas expliquer la raison du "a", car ce code je l'avais trouvé et adapté. j'ai essayé en enlevant le "a" et la création des onglets n'est pas correcte.
je suis toujours aujourd'hui à la recherche d'une explication ! Toutes les informations sont les bienvenues !!
cdt
galougalou
 

jeanmi

XLDnaute Occasionnel
re à tous,

n'y connaissant rien j'ai fait des essais et vous donne les résultats :

a) j'ai mis un " Dim a As string" et là tous les onglets ne sont pas réalisés.
Avec une msgbox ça n'affiche pas de données pour a

b) j'ai mis un ( Dim a As Boolean " et là tous les onglets sont réalisés
avec une msgBox ça affiche Faux

Cordialement
 

ChTi160

XLDnaute Barbatruc
Re
y'a aussi un problème a ce Niveau
VB:
Private Sub Workbook_Open()
Dim i%, DateJour As String
' les actions qui seront réalisées à l'ouverture du doc
' *** effectuer un zome sur la largeur du tableau ***
    Range("A3:O3").Select '<-------------------ICI
    ActiveWindow.Zoom = True
' recherche l'onglet date jour pour le mettre en couleur bleu
 dt = Date
DateJour = Format(dt, "ddd-dd-mmm")
On Error Resume Next
For i = 1 To ThisWorkbook.Sheets.Count
    If ThisWorkbook.Worksheets(i).Name = DateJour Then
     ThisWorkbook.Worksheets(i).Activate
       ThisWorkbook.Worksheets(i).Tab.ColorIndex = 5 ' couleur bleu = 5
    Exit For
    End If
Next i
'Worksheets(1).Visible = True
'Worksheets(2).Visible = True
'Worksheets(1).Visible = False
'Worksheets(2).Visible = False

End Sub
je pense qu'a l'ouverture le fichier ce demande :"Mais dans quelle Feuille du Classeur je dois sélectionner la plage
"Range("A3:O3")" Lol
lorsque je teste la macro
si je rentre 12/08/2021 j'ai bien les feuilles du 12 au 31 qui sont créées §
jean marie
 

Discussions similaires

Réponses
46
Affichages
886

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p