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

jeanmi

XLDnaute Occasionnel
Bonsoir @GALOUGALOU , bonsoir à tous,

a) Ok pour le 3 à passer en 4 ou pas si je supprime la feuille base, si j'ai bien compris.
b) Ok pour le test à ajouter, il faut que je le place en début de la macro creer_feuille, je suppose.
c) j'ai ajouter un inputbox pour entrer la date de début de création :

VB:
def_date_debut = InputBox("Entrer la date de début du premier onglet à créer ? ")
MyDate = def_date_debut 'Remplacer par Variable Date

def_nb_jour_mois = Day(DateSerial(Year(def_date_debut), Month(def_date_debut) + 1, 0)) 'definition nombre de jours dans le mois

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

Code:
For n = 2 To n - a

e) Je souhaiterais calculer, par rapport à la date entrée dans inputBox et le nombre de jour du mois, combien d'onglets il y a, à créer. Je n'ai pas trouvé comment faire ?

f) j'ai voulu, cacher les onglets non utiliser, donc base et C_postal, et là ce ne semble pas fonctionner ? es possible ou pas d'avoir les feuille de base et C_POSTAL non visible et de pouvoir fonctionner la procédure ?

g) Pour les liaisons ce n'est pas normale, si vous avez une orientation à me donner pour rechercher pourquoi, et comment supprimer cela. j'ai l'impression que c'est apparu lorsque j'ai changé de nom mon fichier !

Merci encore de vos propositions.

Cordialement
 
Dernière édition:

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
Re excuse pas compris
Il faut faire une vérification lors de la création des feuilles si la page existe déjà !
Ca pourra ainsi éviter de créer x fois les feuilles dans le classeur.
a voir
pas trop le temps lol
Jean marie
re,

j'ai trouvé
VB:
def_nb_jour_mois = Day(DateSerial(Year(def_date_debut), Month(def_date_debut) + 1, 0))

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
 

Discussions similaires

Statistiques des forums

Discussions
291 501
Messages
1 915 830
Membres
178 990
dernier inscrit
shadowtheone
Haut Bas