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
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...
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
Re
donc il n'est plus prévu de créer les feuilles des dates du 1 au 31 par exemple ?
c'est ça ?
y'a aussi un problème a ce Niveau
tu utilises dans la Boucle deux fois la même variable(on supprime le -a)
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 rouge si c'est un jour de WE, si on ne veut pas cette possibilité mettre supprimer la ligne suivante ou mettre une apostriophe en tête de laligne qui passera en vert
If Application.WorksheetFunction.Weekday(deb, 2) > 6 Then Sheets("01 (2)").Tab.Color = 255
Sheets("01 (2)").Name = Format(deb, "ddd-dd-mm") ' renomme la feuille avec le jour
Next
Sheets("01").Name = Format(ori, "ddd-dd-mm")
If Weekday(ori) = 1 Then Sheets(4).Tab.Color = 255
Application.ScreenUpdating = True 'réactive le rafraichissement écran
Sheets("Base").Visible = False
Sheets("C_postal").Visible = False
End Sub
pour les liaisons dans la feuille modèle il faut enlever le mot de passe puis dans /données./Modifier les liaisons.
le classeur ci-joint a été configuré (pour le mot de passe dans la feuille modèle il n'y en a plus pensez à le reposer). Vérifiez aussi vos formules, elles ont pu être détruite par la suppression des liaisons.
pour fin de mois référence celluleA1
Re
donc tu ne crées pas toutes les dates du mois 1 au 31 (exemple) ?
mais les dates a partir d'une Dates qui sera la première !
Bonne journée
jean marie
Re
donc il n'est plus prévu de créer les feuilles des dates du 1 au 31 par exemple ?
c'est ça ?
y'a aussi un problème a ce Niveau
tu utilises dans la Boucle deux fois la même variable(on supprime le -a)
re
si toujours d'actualité la création du 1 au 31 ou du 15 au 15 ou autre.
pour le for n=2 to n il y a dans le programme for n=2 to n-a objet de ma question du post #24
cordialement
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 rouge si c'est un jour de WE, si on ne veut pas cette possibilité mettre supprimer la ligne suivante ou mettre une apostriophe en tête de laligne qui passera en vert
If Application.WorksheetFunction.Weekday(deb, 2) > 6 Then Sheets("01 (2)").Tab.Color = 255
Sheets("01 (2)").Name = Format(deb, "ddd-dd-mm") ' renomme la feuille avec le jour
Next
Sheets("01").Name = Format(ori, "ddd-dd-mm")
If Weekday(ori) = 1 Then Sheets(4).Tab.Color = 255
Application.ScreenUpdating = True 'réactive le rafraichissement écran
Sheets("Base").Visible = False
Sheets("C_postal").Visible = False
End Sub
pour les liaisons dans la feuille modèle il faut enlever le mot de passe puis dans /données./Modifier les liaisons.
le classeur ci-joint a été configuré (pour le mot de passe dans la feuille modèle il n'y en a plus pensez à le reposer). Vérifiez aussi vos formules, elles ont pu être détruite par la suppression des liaisons.
pour fin de mois référence celluleA1
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 rouge si c'est un jour de WE, si on ne veut pas cette possibilité mettre supprimer la ligne suivante ou mettre une apostriophe en tête de laligne qui passera en vert
If Application.WorksheetFunction.Weekday(deb, 2) > 6 Then Sheets("01 (2)").Tab.Color = 255
Sheets("01 (2)").Name = Format(deb, "ddd-dd-mm") ' renomme la feuille avec le jour
Next
Sheets("01").Name = Format(ori, "ddd-dd-mm")
If Weekday(ori) = 1 Then Sheets(4).Tab.Color = 255
Application.ScreenUpdating = True 'réactive le rafraichissement écran
Sheets("Base").Visible = False
Sheets("C_postal").Visible = False
End Sub
pour les liaisons dans la feuille modèle il faut enlever le mot de passe puis dans /données./Modifier les liaisons.
le classeur ci-joint a été configuré (pour le mot de passe dans la feuille modèle il n'y en a plus pensez à le reposer). Vérifiez aussi vos formules, elles ont pu être détruite par la suppression des liaisons.
pour fin de mois référence celluleA1
Pour les liaisons dans la feuille modèle, il faut enlever le mot de passe puis dans /données./Modifier les liaisons ==>la fonction n'est pas disponible même avec la feuille non protégée. ou je peut chercher ?
PS: après beaucoup de lecture sur internet j'ai trouvé la solution pour mes liens indésirables.
il étaient dans le nom d'une cellule : il faut donc faire Ctrl+F3 et dans la boite gestionnaire de noms modifier ou supprimer les lien sans référence.