Créer des onglets avec un modèle pour une plage de date
Fermé
cigales73
Messages postés
6
Date d'inscription
jeudi 30 novembre 2017
Statut
Membre
Dernière intervention
11 avril 2019
-
1 déc. 2017 à 20:40
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 - 19 déc. 2017 à 12:04
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 - 19 déc. 2017 à 12:04
A voir également:
- Créer des onglets avec un modèle pour une plage de date
- Créer un lien pour partager des photos - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
3 réponses
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
1 déc. 2017 à 22:00
1 déc. 2017 à 22:00
bonsoir, tu n'expliques pas ce que tu veux faire, ni ce qui ne fonctionne pas.
à tout hasard, je suggère ceci:
à tout hasard, je suggère ceci:
Option Explicit Sub copie_matrice() Dim i As Integer, z As Integer Dim x As Date, y As Date Dim année As String année = Val(InputBox("Quelle année ?")) If année = 0 Then Exit Sub x = DateSerial(année, 1, 1) - 1 y = DateSerial(année, 1, 3) z = y - x For i = 1 To z Sheets("matrice").Copy After:=Sheets(i) ActiveSheet.Name = Format(x + i, "dd-mmm-yyyy") ActiveSheet.Range("C3") = Format(x + i, "dd-mmm-yyyy") Next i End Sub
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
15 déc. 2017 à 19:49
15 déc. 2017 à 19:49
bonsoir, je propose ceci: https://www.cjoint.com/c/GLpsTYK64L1
je n'ai pas fait de bouton. il faut sélectionner une cellule dans l'onglet "PERIODE DE PAIE" , puis faire maj-ctrl-K.
je n'ai pas fait de bouton. il faut sélectionner une cellule dans l'onglet "PERIODE DE PAIE" , puis faire maj-ctrl-K.
bonjour
c'est parfait, mais maintenant j'aimerais que les 7 premiers jours soient récapitulés dans la semaine 1, les 7 jours suivants dans la semaine 2, les 7 jours suivants dans la semaine 3 et ce jusqu'à la semaine 5.
est-ce possible ? je voudrais utiliser ce fichier tous les ans aussi. merci beaucoup.
c'est parfait, mais maintenant j'aimerais que les 7 premiers jours soient récapitulés dans la semaine 1, les 7 jours suivants dans la semaine 2, les 7 jours suivants dans la semaine 3 et ce jusqu'à la semaine 5.
est-ce possible ? je voudrais utiliser ce fichier tous les ans aussi. merci beaucoup.
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
>
cigales73
Modifié le 16 déc. 2017 à 16:20
Modifié le 16 déc. 2017 à 16:20
tout est possible. il est cependant mieux de savoir à l'avance tout ce qu'on veut faire, cela permet de choisir dès le début la meilleure solution.
commençons pas le plus facile: ne peux-tu pas utiliser le fichier tel qu'il est chaque année, en changeant simplement les dates dans l'onglet "periode de paie"? souhaites-tu faire quelque-chose de plus?
pour le récapitulatif par semaine, j'imagine que tu souhaites "simplement" faire comme tu as fait dans SEMAINE1, mais tu veux que les formules s'adaptent en fonction des noms des feuilles de chaque jour.
c'est bien cela?
je proposerais ceci:
- tu ferais "à la main" une feuille MATRICESEMAINE (qui est sans doute déjà faite, c'est semaine1
- la macro créerait pour chaque semaine de la colonne dans "periode de paie" une feuille recopiée de matricesemaine, l’appellerait comme tu décides (peut-être avec le nom du premier jour de la semaine), et modifierait le titre en A1, et les formules pour tenir compte des bons noms de feuilles.
commençons pas le plus facile: ne peux-tu pas utiliser le fichier tel qu'il est chaque année, en changeant simplement les dates dans l'onglet "periode de paie"? souhaites-tu faire quelque-chose de plus?
pour le récapitulatif par semaine, j'imagine que tu souhaites "simplement" faire comme tu as fait dans SEMAINE1, mais tu veux que les formules s'adaptent en fonction des noms des feuilles de chaque jour.
c'est bien cela?
je proposerais ceci:
- tu ferais "à la main" une feuille MATRICESEMAINE (qui est sans doute déjà faite, c'est semaine1
- la macro créerait pour chaque semaine de la colonne dans "periode de paie" une feuille recopiée de matricesemaine, l’appellerait comme tu décides (peut-être avec le nom du premier jour de la semaine), et modifierait le titre en A1, et les formules pour tenir compte des bons noms de feuilles.
cigales73
>
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
18 déc. 2017 à 11:18
18 déc. 2017 à 11:18
bonjour
oui, je veux garder le même fichier et je change les dates dans l'onglet "PERIODE PAIE".
j'aimerais que la semaine 1 récupère toutes les informations des onglets "lundi au dimanche de la semaine 1" et ainsi de suite pour la semaine 2, la semaine 3 et l'onglet RECAP PAIE récupère les onglets de la semaine 1, 2 , 3, 4, et 5.
je suis obligée de créer une feuille par jour car les horaires et les informations ne sont pas toujours les mêmes.
tu vois, j'avais réussi à mettre un onglet DC avant le lundi et un onglet FC après le dimanche et le récapitulatif se faisait bien dans la SEMAINE1. mais je n'arrive à faire la même chose pour les semaines suivantes.
ensuite, j'enregistre sous JANVIER et je refais la manipulation pour février, ainsi de suite.
merci beaucoup.
oui, je veux garder le même fichier et je change les dates dans l'onglet "PERIODE PAIE".
j'aimerais que la semaine 1 récupère toutes les informations des onglets "lundi au dimanche de la semaine 1" et ainsi de suite pour la semaine 2, la semaine 3 et l'onglet RECAP PAIE récupère les onglets de la semaine 1, 2 , 3, 4, et 5.
je suis obligée de créer une feuille par jour car les horaires et les informations ne sont pas toujours les mêmes.
tu vois, j'avais réussi à mettre un onglet DC avant le lundi et un onglet FC après le dimanche et le récapitulatif se faisait bien dans la SEMAINE1. mais je n'arrive à faire la même chose pour les semaines suivantes.
ensuite, j'enregistre sous JANVIER et je refais la manipulation pour février, ainsi de suite.
merci beaucoup.
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
18 déc. 2017 à 13:53
18 déc. 2017 à 13:53
je propose ceci:
- tu copies SEMAINE1 vers SEMAINE2, ..., SEMAINE5
- tu utilises le code suivant:
- tu copies SEMAINE1 vers SEMAINE2, ..., SEMAINE5
- tu utilises le code suivant:
Option Explicit Sub copie_matrice() Const c_shdate As String = "PERIODE DE PAIE" Const c_shmatr As String = "MATRICE" Const c_premlig As Long = 3 Dim nomdate As String Dim nomdebsem As String, dcur As Date Dim cellcur As Range Dim nsem As Integer If ActiveSheet.Name = c_shdate Then Set cellcur = Worksheets(c_shdate).Cells(c_premlig, ActiveCell.Column) nomdebsem = "" nsem = 1 Do While IsDate(cellcur) dcur = cellcur nomdate = Replace(cellcur, "/", "-") If nomdebsem = "" Then nomdebsem = nomdate End If Sheets(c_shmatr).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = nomdate If Weekday(dcur) = vbSunday Then Call recapsemaine(nsem, nomdebsem, nomdate) nsem = nsem + 1 nomdebsem = "" End If Set cellcur = cellcur.Offset(1, 0) Loop If nomdebsem <> "" Then Call recapsemaine(nsem, nomdebsem, nomdate) End If End If End Sub Sub recapsemaine(numsem As Integer, debut As String, fin As String) Const c_form As String = "DC:FC" Debug.Print numsem, debut, fin Dim wssem As Worksheet Dim cell As Range Set wssem = Worksheets("SEMAINE" & numsem) wssem.[A1] = "RECAP SEMAINE DU " & debut & " AU " & fin For Each cell In wssem.UsedRange If cell.HasFormula Then If InStr(cell.Formula, c_form) Then cell.Formula = Replace(cell.Formula, c_form, "'" & debut & ":" & fin & "'") End If End If Next cell End Sub
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
>
cigales73
18 déc. 2017 à 17:53
18 déc. 2017 à 17:53
tu dois remplacer SEMAINE2 à 5 par une copie de SEMAINE1.
sans aucun résultat? cela n'a pas créé des feuilles par jour, et modifié les formules dans SEMAINE1?
attention, il faut que les cinq feuilles semaines soient intactes (comme SEMAINE1 était dans le fichier que tu as partagé, avec les formules contenant DC:FC) pour que le code fonctionne.
sans aucun résultat? cela n'a pas créé des feuilles par jour, et modifié les formules dans SEMAINE1?
attention, il faut que les cinq feuilles semaines soient intactes (comme SEMAINE1 était dans le fichier que tu as partagé, avec les formules contenant DC:FC) pour que le code fonctionne.
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
>
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
18 déc. 2017 à 18:29
18 déc. 2017 à 18:29
petite améliortaion, ceci fonctionera même si les formules dans les feuilles semaine ont été adaptées pour un mois:
Option Explicit Sub copie_matrice() Const c_shdate As String = "PERIODE DE PAIE" Const c_shmatr As String = "MATRICE" Const c_premlig As Long = 3 Dim nomdate As String Dim nomdebsem As String, dcur As Date Dim cellcur As Range Dim nsem As Integer If ActiveSheet.Name = c_shdate Then Set cellcur = Worksheets(c_shdate).Cells(c_premlig, ActiveCell.Column) nomdebsem = "" nsem = 1 Do While IsDate(cellcur) dcur = cellcur nomdate = Replace(cellcur, "/", "-") If nomdebsem = "" Then nomdebsem = nomdate End If Sheets(c_shmatr).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = nomdate If Weekday(dcur) = vbSunday Then Call recapsemaine(nsem, nomdebsem, nomdate) nsem = nsem + 1 nomdebsem = "" End If Set cellcur = cellcur.Offset(1, 0) Loop If nomdebsem <> "" Then Call recapsemaine(nsem, nomdebsem, nomdate) End If End If End Sub Private Sub recapsemaine(numsem As Integer, debut As String, fin As String) Debug.Print numsem, debut, fin Dim wssem As Worksheet Dim cell As Range Dim parenthese As Integer, exclamation As Integer Dim ancienneformule As String, debutformule As String, finformule As String Set wssem = Worksheets("SEMAINE" & numsem) wssem.[A1] = "RECAP SEMAINE DU " & debut & " AU " & fin For Each cell In wssem.UsedRange If cell.HasFormula Then ancienneformule = cell.Formula parenthese = InStr(ancienneformule, "(") exclamation = InStr(ancienneformule, "!") If parenthese > 0 And exclamation > parenthese Then debutformule = Left(ancienneformule, parenthese) finformule = Right(ancienneformule, Len(ancienneformule) - exclamation + 1) cell.Formula = debutformule & "'" & debut & ":" & fin & "'" & finformule End If End If Next cell End Sub
cigales73
>
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
19 déc. 2017 à 09:20
19 déc. 2017 à 09:20
bonjour
je dois être débile, je ne comprends pas.
j'ai copié la semaine1 jusqu'à la semaine5.
je te joins mon fichier, est-ce que tu peux voir où je me suis trompée ? merci beaucoup.
https://www.cjoint.com/c/GLtiqFXLwK2
je dois être débile, je ne comprends pas.
j'ai copié la semaine1 jusqu'à la semaine5.
je te joins mon fichier, est-ce que tu peux voir où je me suis trompée ? merci beaucoup.
https://www.cjoint.com/c/GLtiqFXLwK2
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
>
cigales73
19 déc. 2017 à 12:04
19 déc. 2017 à 12:04
quelques points:
- tu as laissé une fois de trop "end sub" en fin de code
- en copiant le code, tu as "cassé" le lien entre la macro et la touche maj-ctrl-K (pour rétablir: ALT+F8, tu sélectionnes ta macro et Options en bas)
- en ajoutant des lignes blanches au milieu de la feuille "periode de paie", la macro s’arrête après la première semaine
- tu as laissé une fois de trop "end sub" en fin de code
- en copiant le code, tu as "cassé" le lien entre la macro et la touche maj-ctrl-K (pour rétablir: ALT+F8, tu sélectionnes ta macro et Options en bas)
- en ajoutant des lignes blanches au milieu de la feuille "periode de paie", la macro s’arrête après la première semaine
14 déc. 2017 à 13:57
excusez-moi d'avoir répondu si tard.
ce que j'aimerais, c'est créer des onglets par jour pour un mois.
quand j'ouvre mon fichier, je voudrais que les onglets de "janvier" s'ouvre automatiquement (voir onglet "PERIODE DE PAIE"
je pensais créer une macro en haut de chaque colonne de chaque mois. merci par avance
https://www.cjoint.com/c/GLom1YvwRg2
14 déc. 2017 à 21:05
tu avais écrit "J'ai créé une macro pour que la matrice se multiplie en fonction des dates". où se trouve le code de cette macro?
voudrais-tu que les boutons en ligne 2 de l'onglet "PERIODE DE PAIE" soit associés à une macro qui créerait un onglet pour chacune des valeurs dans la colonne sous le bouton, et que ces onglets soient une copie de l'onglet "MATRICE"?
merci d'être le plus factuel et le plus précis possible.
15 déc. 2017 à 08:49
oui c'est ça, tu as tout compris, il faut que la "matrice" soit copiée autant de fois que de date dans la colonne de chaque mois de l'onglet "PERIODE DE PAIE".
par exemple pour la période de paie de janvier, j'aimerais appuyer sur le bouton macro "janvier" et que tous les onglets soient créés et que sur chaque onglet, la date soit mise aussi.
je n'ai pas réussi à créer la macro pour chaque mois.
ensuite, je fais "enregister sous" et je refais la manipulation pour le mois suivant, ainsi de suite.
merci d'avance
15 déc. 2017 à 08:47
oui c'est ça, tu as tout compris, il faut que la "matrice" soit copiée autant de fois que de date dans la colonne de chaque mois de l'onglet "PERIODE DE PAIE".
par exemple pour la période de paie de janvier, j'aimerais appuyer sur le bouton macro "janvier" et que tous les onglets soient créés et que sur chaque onglet, la date soit mise aussi.
je n'ai pas réussi à créer la macro pour chaque mois.
ensuite, je fais "enregister sous" et je refais la manipulation pour le mois suivant, ainsi de suite.
merci d'avance.