jour par mois entre deux dates

jour par mois entre deux dates - VB/VBA/VBS - Programmation

Marsh Posté le 16-11-2004 à 21:56:23    

Bonjour
J'ai un fichier excel, en A1 la date de depart, en B1 la daet retour, en C1 le nbre de jours entre les deux date grace a datedif, mais voila apres de d1 a o1 j'ai janvier etc jusqu'a decembre, j'aimerai qu'excel ecrive sous chaque mois le nbre de jours ou l'individu est absent: exemple du 20/04/04 au 06/06/04 en sous janvier 0 etc.. avril 12, mai 30 et juin 6.
Merci d'avance pour vos soluces

Reply

Marsh Posté le 16-11-2004 à 21:56:23   

Reply

Marsh Posté le 17-11-2004 à 12:09:43    

tu peux plus clair dans ta demande, stp ? j'ai pas saisie le truc. Tu parle de calculer un nombre de jour, mais entre quel ecartype ?

Reply

Marsh Posté le 17-11-2004 à 12:42:04    

A3 : date de départ
B3 : date de retour
C3 : nombre de jours pris
 
de D3 à O3 : les jours pris par mois
 
A toi de gérer ensuite si les jours sont inclus ou pas dans les dates départ / retour
 
A affiner aussi, le nombre de jours dans le mois ( 30 ou 31 , ou meme 28/29 pour février )
 
 
Sub CALx()
 
' **** calcul du nombre de jours pris
ThisWorkbook.ActiveSheet.Range("C3" ) = DateDiff("d", ThisWorkbook.ActiveSheet.Range("A3" ), ThisWorkbook.ActiveSheet.Range("B3" ), vbMonday, vbFirstJan1) + 1
 
For t = 1 To 12
 
 
' **** calcul du nbre de jour pris dans le mois du début du congé
If Month(ThisWorkbook.ActiveSheet.Range("A3" )) = t Then
ThisWorkbook.ActiveSheet.Cells(3, 3 + t) = DateDiff("d", ThisWorkbook.ActiveSheet.Range("A3" ), DateSerial(2004, t, 31), vbMonday, vbFirstJan1) + 1
End If
 
 
' **** calcul du nbre de jour pris dans le mois dde fin du congé
If Month(ThisWorkbook.ActiveSheet.Range("B3" )) = t Then
ThisWorkbook.ActiveSheet.Cells(3, 3 + t) = DateDiff("d", DateSerial(2004, t, 1), ThisWorkbook.ActiveSheet.Range("B3" ), vbMonday, vbFirstJan1) + 1
End If
 
' **** test et calcul si un mois entier à été pris dans la période de congé
If t > Month(ThisWorkbook.ActiveSheet.Range("A3" )) And t < Month(ThisWorkbook.ActiveSheet.Range("B3" )) Then
ThisWorkbook.ActiveSheet.Cells(3, 3 + t) = 30
End If
 
Next t
 
 
End Sub


Message édité par Profil supprimé le 17-11-2004 à 12:43:38
Reply

Marsh Posté le 17-11-2004 à 18:43:48    

Merci pour ces infos je vais faire les derniers reglages
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed