je cherche à créer un tableau de garde du 01/01/2004 au31/12/2004 à partir
de A2 de ce style :
En colonne A : date de début de garde ( jj/mm/aa )
En colonne B : heure de début de garde ( hh:mm )
En colonne C : date de fin de garde
En colonne D : heure de fin de garde
En colonne E : un nom
Je pourais faire une recopie incrémentée (pour les dates) vers le bas mais
voila le problème
- pour les samedis, dimanches et jours fériés, il y a 2 gardes : une de
08h00 à 20h00 le meme jour, et, une de 20h00 à 08h00 le lendemain
- pour les jours en semaine 1 garde de 20h00 à 08h00 le lendemain
soit :
En A2 : 01/01/2004, en B2 : 08:00, en C2 : 01/01/2004, en D2 : 20:00
En A3 : 01/01/2004, en B3 : 20:00, en C3 : 02/01/2004, en D3 : 08:00
En A4 : 02/01/2004, en B4 : 20:00, en C4 : 03/01/2004, en D4 : 08:00
etc...
Comment créer ceci via une macro ou formule sans oublier les jours fériés ?
Le plus simple serait d'intégrer le formatage dans la boucle "for z...next"
Et comment faire, si cela n'est pas trop te demander ?
merci salutations
Pascal
Bonjour Alain Vallon m'avait passé ce code à recopié, je pense qu'il peut t'être utile. A toi de changer les heures début et le heures fin dans le code. Pour les fériés utilise la fonction TYPEJOUR de laurant Longre
Function HeuresNuit(D1#, D2#) 'FS Dim Nuit#, DebJour#, DebNuit# DebJour# = TimeValue("6:00:00") DebNuit# = TimeValue("21:00:00")
Select Case D1 - D2 Case 0: Nuit = DebJour + (1 - DebNuit) Case Is < 0: Select Case D2 Case Is <= DebJour: Nuit = D2 - D1 Case Is > DebNuit: If D1 < DebNuit Then Nuit = D2 - DebNuit Else Nuit = D2 - D1 Case Else If DebJour - D1 > 0 Then Nuit = DebJour - D1 If D2 - DebNuit > 0 Then Nuit = Nuit + (D2 - DebNuit) End Select Case Is > 0: Select Case D1 Case Is < DebJour: Nuit = (DebJour - D1) + (1 - DebNuit) Case Is < DebNuit: Nuit = 1 - DebNuit Case Else: Nuit = 1 - D1 End Select If D2 > DebJour Then Nuit = Nuit + DebJour Else Nuit = Nuit + D2 If D2 > DebNuit Then Nuit = Nuit + (D2 - DebNuit) End Select
HeuresNuit = Nuit * 24
End Function "David 02" a écrit dans le message de news: bnhgou$a65$
Bonsoir à tous
je cherche à créer un tableau de garde du 01/01/2004 au31/12/2004 à partir de A2 de ce style :
En colonne A : date de début de garde ( jj/mm/aa ) En colonne B : heure de début de garde ( hh:mm ) En colonne C : date de fin de garde En colonne D : heure de fin de garde En colonne E : un nom
Je pourais faire une recopie incrémentée (pour les dates) vers le bas mais voila le problème
- pour les samedis, dimanches et jours fériés, il y a 2 gardes : une de 08h00 à 20h00 le meme jour, et, une de 20h00 à 08h00 le lendemain - pour les jours en semaine 1 garde de 20h00 à 08h00 le lendemain
soit : En A2 : 01/01/2004, en B2 : 08:00, en C2 : 01/01/2004, en D2 : 20:00 En A3 : 01/01/2004, en B3 : 20:00, en C3 : 02/01/2004, en D3 : 08:00 En A4 : 02/01/2004, en B4 : 20:00, en C4 : 03/01/2004, en D4 : 08:00 etc...
Comment créer ceci via une macro ou formule sans oublier les jours fériés ?
Merci de votre aide.
David
Bonjour
Alain Vallon m'avait passé ce code à recopié, je pense qu'il peut t'être
utile.
A toi de changer les heures début et le heures fin dans le code.
Pour les fériés utilise la fonction TYPEJOUR de laurant Longre
Function HeuresNuit(D1#, D2#) 'FS
Dim Nuit#, DebJour#, DebNuit#
DebJour# = TimeValue("6:00:00")
DebNuit# = TimeValue("21:00:00")
Select Case D1 - D2
Case 0: Nuit = DebJour + (1 - DebNuit)
Case Is < 0:
Select Case D2
Case Is <= DebJour: Nuit = D2 - D1
Case Is > DebNuit:
If D1 < DebNuit Then Nuit = D2 - DebNuit Else Nuit = D2 - D1
Case Else
If DebJour - D1 > 0 Then Nuit = DebJour - D1
If D2 - DebNuit > 0 Then Nuit = Nuit + (D2 - DebNuit)
End Select
Case Is > 0:
Select Case D1
Case Is < DebJour: Nuit = (DebJour - D1) + (1 - DebNuit)
Case Is < DebNuit: Nuit = 1 - DebNuit
Case Else: Nuit = 1 - D1
End Select
If D2 > DebJour Then Nuit = Nuit + DebJour Else Nuit = Nuit + D2
If D2 > DebNuit Then Nuit = Nuit + (D2 - DebNuit)
End Select
HeuresNuit = Nuit * 24
End Function
"David 02" <direction-ternoise@wanadoo.fr> a écrit dans le message de news:
bnhgou$a65$1@news-reader3.wanadoo.fr...
Bonsoir à tous
je cherche à créer un tableau de garde du 01/01/2004 au31/12/2004 à partir
de A2 de ce style :
En colonne A : date de début de garde ( jj/mm/aa )
En colonne B : heure de début de garde ( hh:mm )
En colonne C : date de fin de garde
En colonne D : heure de fin de garde
En colonne E : un nom
Je pourais faire une recopie incrémentée (pour les dates) vers le bas mais
voila le problème
- pour les samedis, dimanches et jours fériés, il y a 2 gardes : une de
08h00 à 20h00 le meme jour, et, une de 20h00 à 08h00 le lendemain
- pour les jours en semaine 1 garde de 20h00 à 08h00 le lendemain
soit :
En A2 : 01/01/2004, en B2 : 08:00, en C2 : 01/01/2004, en D2 : 20:00
En A3 : 01/01/2004, en B3 : 20:00, en C3 : 02/01/2004, en D3 : 08:00
En A4 : 02/01/2004, en B4 : 20:00, en C4 : 03/01/2004, en D4 : 08:00
etc...
Comment créer ceci via une macro ou formule sans oublier les jours fériés
?
Bonjour Alain Vallon m'avait passé ce code à recopié, je pense qu'il peut t'être utile. A toi de changer les heures début et le heures fin dans le code. Pour les fériés utilise la fonction TYPEJOUR de laurant Longre
Function HeuresNuit(D1#, D2#) 'FS Dim Nuit#, DebJour#, DebNuit# DebJour# = TimeValue("6:00:00") DebNuit# = TimeValue("21:00:00")
Select Case D1 - D2 Case 0: Nuit = DebJour + (1 - DebNuit) Case Is < 0: Select Case D2 Case Is <= DebJour: Nuit = D2 - D1 Case Is > DebNuit: If D1 < DebNuit Then Nuit = D2 - DebNuit Else Nuit = D2 - D1 Case Else If DebJour - D1 > 0 Then Nuit = DebJour - D1 If D2 - DebNuit > 0 Then Nuit = Nuit + (D2 - DebNuit) End Select Case Is > 0: Select Case D1 Case Is < DebJour: Nuit = (DebJour - D1) + (1 - DebNuit) Case Is < DebNuit: Nuit = 1 - DebNuit Case Else: Nuit = 1 - D1 End Select If D2 > DebJour Then Nuit = Nuit + DebJour Else Nuit = Nuit + D2 If D2 > DebNuit Then Nuit = Nuit + (D2 - DebNuit) End Select
HeuresNuit = Nuit * 24
End Function "David 02" a écrit dans le message de news: bnhgou$a65$
Bonsoir à tous
je cherche à créer un tableau de garde du 01/01/2004 au31/12/2004 à partir de A2 de ce style :
En colonne A : date de début de garde ( jj/mm/aa ) En colonne B : heure de début de garde ( hh:mm ) En colonne C : date de fin de garde En colonne D : heure de fin de garde En colonne E : un nom
Je pourais faire une recopie incrémentée (pour les dates) vers le bas mais voila le problème
- pour les samedis, dimanches et jours fériés, il y a 2 gardes : une de 08h00 à 20h00 le meme jour, et, une de 20h00 à 08h00 le lendemain - pour les jours en semaine 1 garde de 20h00 à 08h00 le lendemain
soit : En A2 : 01/01/2004, en B2 : 08:00, en C2 : 01/01/2004, en D2 : 20:00 En A3 : 01/01/2004, en B3 : 20:00, en C3 : 02/01/2004, en D3 : 08:00 En A4 : 02/01/2004, en B4 : 20:00, en C4 : 03/01/2004, en D4 : 08:00 etc...
Comment créer ceci via une macro ou formule sans oublier les jours fériés ?
Merci de votre aide.
David
AV
Alain Vallon m'avait passé ce code à recopié, je pense qu'il peut t'être utile.
Heu...je sais pas si je "t'ai passé ce code" mais il est signé FS ! ......et puis c'est pas vraiment la question.. ;-) AV
Alain Vallon m'avait passé ce code à recopié, je pense qu'il peut t'être
utile.
Heu...je sais pas si je "t'ai passé ce code" mais il est signé FS !
......et puis c'est pas vraiment la question..
;-)
AV
L'essentiel étant fait... transmets moi en bal peros une adresse valide...je t'envoie l'exemple
AV
guy
Hello AV,
Si le message est pour moi: grand merci, je vais essayer. Guy "AV" a écrit dans le message de news:
Dans un classeur vierge, tu fais alt+F11 > insertion > module > copier/coller le
code puis l'exécuter à partir de Outils> Macro > Macros > sélectionner le nom
(Gardes) puis Exécuter Attention, à partir du forum, figure un retour à la ligne à supprimer aprés :
......*MOD(" & varAn & La ligne commence à [A2] = Evaluate... et se finit à ......",19),30))/7,)*7-5")
AV
Hello AV,
Si le message est pour moi: grand merci, je vais essayer.
Guy
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de
news:e5VEbpGnDHA.3256@tk2msftngp13.phx.gbl...
Dans un classeur vierge, tu fais alt+F11 > insertion > module >
copier/coller le
code puis l'exécuter à partir de Outils> Macro > Macros > sélectionner le
nom
(Gardes) puis Exécuter
Attention, à partir du forum, figure un retour à la ligne à supprimer
aprés :
......*MOD(" & varAn &
La ligne commence à
[A2] = Evaluate...
et se finit à ......",19),30))/7,)*7-5")