Créer des onglets avec un modèle pour une plage de date
cigales73
Messages postés
6
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
bonjour
j'ai un onglet "matrice" que je veux dupliquer par rapport à une plage de date bien précise.
J'ai créé un onglet "période de paie".
J'ai créé une macro pour que la matrice se multiplie en fonction des dates mais je n'arrive pas à modifier la plage des dates dans la macro.
enfin j'espère que mon explication est claire !!
est-ce que quelqu'un peut m'aider ?
merci beaucoup.
https://www.cjoint.com/c/GLbtKMgiXi1
j'ai un onglet "matrice" que je veux dupliquer par rapport à une plage de date bien précise.
J'ai créé un onglet "période de paie".
J'ai créé une macro pour que la matrice se multiplie en fonction des dates mais je n'arrive pas à modifier la plage des dates dans la macro.
enfin j'espère que mon explication est claire !!
est-ce que quelqu'un peut m'aider ?
merci beaucoup.
https://www.cjoint.com/c/GLbtKMgiXi1
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
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Modèle de style word - Guide
3 réponses
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
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.
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.
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.
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
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.
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
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
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
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.
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
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.