OVH Cloud OVH Cloud

décompte de jours de congé

15 réponses
Avatar
Pierre52
bonsoir à vous toutes et tous,

il y a qqs mois je suis venu vers vous pour un comptage de jours de congés
vous m'aviez donné la formule =NB.JOURS.OUVRES(A3;B3;fériés) qui
fonctionne à merveille et où en A il y a la date de début, en B la date
de fin et fériés une plage nommée qui contient.... les jours fériés.

mais la donne a changé:

pour toute semaine de congés prise(5 jours du lundi au vendredi)on nous
retire 1/2 journée de rtt sauf si un jour férié tombe entre lundi et
vendredi

questions:
comment adapter la formule à ce nouveau cas?
comment faire apparaitre ces journées ou demi journées de rtt dans une
colonne?

merci d'avance pour votre aide

5 réponses

1 2
Avatar
isabelle
bonjour Pierre,

voilà après un excellent repas, ça va mieux,

Function rtt(début As Range, fin As Range) As Double
Application.Volatile
On Error Resume Next
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Range("fériés").Find(What:=i).Row) Then a = a + 1
Else: a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Err.Clear
Next
End Function

isabelle

Pierre52 a écrit :
bon appétit et bonne soirée

cordialement

isabelle a écrit :
ok, je regarde ça demain matin, car là je suis attendu pour un souper
à l'extérieur,

isabelle

Pierre52 a écrit :
oui pourquoi pas tant que son exécution est totalement transparente
merci beaucoup d'avance

isabelle a écrit :
bonjour Pierre,

ok, je comprend mieux la disposition et la complexité de la donne,
je ne crois pas être capable de faire une solution sans macro,
est ce que cela te conviendrait avec une macro ?

isabelle

Pierre52 a écrit :
merci à tous de vos réponses,

effectivement avec 0,5 cela fonctionne

mais ,je pense que je me suis mal exprimé

dans la colonne A j'ai la date de début des vacances en colonnes B
j'ai la date de fin des congés en colonnes C j'ai la formule qui
compte les jours ouvrés (=NB.JOURS.OUVRES(A3;B3;fériés))j'aurai
voulu en colonne D par exemple le nombre de RTT décomptés sachant que
- les 5 jours consécutifs du lundi au vendredi compte pour 1/2 RTT
sauf si il y a un jour férié dans ces jours(lundi,.., vendredi)
exemple: cette année vacances du 25 avril au 10 mai = 0 RTT alors
que,soyons fous, du 25 avril au 07 juin = 1 RTT ou bien du 25
avril au 17 mai= 1/2 RTT

si je ne suis pas clair dites moi je vous envoie un classeur

encore merci de votre aide


Philippe.R a écrit :
Bonsoir,
Essayes,si je comprends bien, en remplaçant a1 par a3 et 0.5 par 0,5












Avatar
isabelle
j'avais mis cela trop compliqué pour rien,
voici la correction :

Function rtt(début As Range, fin As Range) As Double
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Application.Match(CLng(i), Range("fériés"), 0)) Then a = a + 1
Else
a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Next
End Function

isabelle

isabelle a écrit :
bonjour Pierre,

voilà après un excellent repas, ça va mieux,

Function rtt(début As Range, fin As Range) As Double
Application.Volatile
On Error Resume Next
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Range("fériés").Find(What:=i).Row) Then a = a + 1
Else: a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Err.Clear
Next
End Function

isabelle

Pierre52 a écrit :
bon appétit et bonne soirée

cordialement

isabelle a écrit :
ok, je regarde ça demain matin, car là je suis attendu pour un
souper à l'extérieur,

isabelle

Pierre52 a écrit :
oui pourquoi pas tant que son exécution est totalement transparente
merci beaucoup d'avance

isabelle a écrit :
bonjour Pierre,

ok, je comprend mieux la disposition et la complexité de la donne,
je ne crois pas être capable de faire une solution sans macro,
est ce que cela te conviendrait avec une macro ?

isabelle

Pierre52 a écrit :
merci à tous de vos réponses,

effectivement avec 0,5 cela fonctionne

mais ,je pense que je me suis mal exprimé

dans la colonne A j'ai la date de début des vacances en colonnes
B j'ai la date de fin des congés en colonnes C j'ai la formule
qui compte les jours ouvrés
(=NB.JOURS.OUVRES(A3;B3;fériés))j'aurai voulu en colonne D par
exemple le nombre de RTT décomptés sachant que
- les 5 jours consécutifs du lundi au vendredi compte pour 1/2
RTT sauf si il y a un jour férié dans ces jours(lundi,.., vendredi)
exemple: cette année vacances du 25 avril au 10 mai = 0 RTT alors
que,soyons fous, du 25 avril au 07 juin = 1 RTT ou bien du 25
avril au 17 mai= 1/2 RTT

si je ne suis pas clair dites moi je vous envoie un classeur

encore merci de votre aide


Philippe.R a écrit :
Bonsoir,
Essayes,si je comprends bien, en remplaçant a1 par a3 et 0.5 par
0,5














Avatar
Pierre52
merci beaucoup de ta part

comment je me sert de cette fonction et surtout où faut il que je
l'enregistre

merci d'avance de ta patience

isabelle a écrit :
j'avais mis cela trop compliqué pour rien,
voici la correction :

Function rtt(début As Range, fin As Range) As Double
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Application.Match(CLng(i), Range("fériés"), 0)) Then a = a + 1
Else
a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Next
End Function

isabelle

isabelle a écrit :
bonjour Pierre,

voilà après un excellent repas, ça va mieux,

Function rtt(début As Range, fin As Range) As Double
Application.Volatile
On Error Resume Next
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Range("fériés").Find(What:=i).Row) Then a = a + 1
Else: a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Err.Clear
Next
End Function

isabelle

Pierre52 a écrit :
bon appétit et bonne soirée

cordialement

isabelle a écrit :
ok, je regarde ça demain matin, car là je suis attendu pour un
souper à l'extérieur,

isabelle

Pierre52 a écrit :
oui pourquoi pas tant que son exécution est totalement transparente
merci beaucoup d'avance

isabelle a écrit :
bonjour Pierre,

ok, je comprend mieux la disposition et la complexité de la donne,
je ne crois pas être capable de faire une solution sans macro,
est ce que cela te conviendrait avec une macro ?

isabelle

Pierre52 a écrit :
merci à tous de vos réponses,

effectivement avec 0,5 cela fonctionne

mais ,je pense que je me suis mal exprimé

dans la colonne A j'ai la date de début des vacances en colonnes
B j'ai la date de fin des congés en colonnes C j'ai la formule
qui compte les jours ouvrés
(=NB.JOURS.OUVRES(A3;B3;fériés))j'aurai voulu en colonne D par
exemple le nombre de RTT décomptés sachant que
- les 5 jours consécutifs du lundi au vendredi compte pour 1/2
RTT sauf si il y a un jour férié dans ces jours(lundi,.., vendredi)
exemple: cette année vacances du 25 avril au 10 mai = 0 RTT alors
que,soyons fous, du 25 avril au 07 juin = 1 RTT ou bien du 25
avril au 17 mai= 1/2 RTT

si je ne suis pas clair dites moi je vous envoie un classeur

encore merci de votre aide


Philippe.R a écrit :
Bonsoir,
Essayes,si je comprends bien, en remplaçant a1 par a3 et 0.5 par
0,5
















Avatar
isabelle
bonjour Pierre,

il faut que tu copie la function dans un module standard du vbaproject
de ton classeur
et ensuite tu l'utilise dans la feuille de calcul comme tout autre
function, comme une Somme :

=rrt(A3;B3)

rtt sera présente dans les fonctions à la catégorie "Personnalisées"

voici un fichier exemple : http://cjoint.com/?kEex7K0zWv

isabelle

Pierre52 a écrit :
merci beaucoup de ta part

comment je me sert de cette fonction et surtout où faut il que je
l'enregistre

merci d'avance de ta patience

isabelle a écrit :
j'avais mis cela trop compliqué pour rien,
voici la correction :

Function rtt(début As Range, fin As Range) As Double
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Application.Match(CLng(i), Range("fériés"), 0)) Then a =
a + 1
Else
a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Next
End Function

isabelle

isabelle a écrit :
bonjour Pierre,

voilà après un excellent repas, ça va mieux,

Function rtt(début As Range, fin As Range) As Double
Application.Volatile
On Error Resume Next
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Range("fériés").Find(What:=i).Row) Then a = a + 1
Else: a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Err.Clear
Next
End Function

isabelle

Pierre52 a écrit :
bon appétit et bonne soirée

cordialement

isabelle a écrit :
ok, je regarde ça demain matin, car là je suis attendu pour un
souper à l'extérieur,

isabelle

Pierre52 a écrit :
oui pourquoi pas tant que son exécution est totalement transparente
merci beaucoup d'avance

isabelle a écrit :
bonjour Pierre,

ok, je comprend mieux la disposition et la complexité de la donne,
je ne crois pas être capable de faire une solution sans macro,
est ce que cela te conviendrait avec une macro ?

isabelle

Pierre52 a écrit :
merci à tous de vos réponses,

effectivement avec 0,5 cela fonctionne

mais ,je pense que je me suis mal exprimé

dans la colonne A j'ai la date de début des vacances en
colonnes B j'ai la date de fin des congés en colonnes C j'ai la
formule qui compte les jours ouvrés
(=NB.JOURS.OUVRES(A3;B3;fériés))j'aurai voulu en colonne D par
exemple le nombre de RTT décomptés sachant que
- les 5 jours consécutifs du lundi au vendredi compte pour 1/2
RTT sauf si il y a un jour férié dans ces jours(lundi,..,
vendredi)
exemple: cette année vacances du 25 avril au 10 mai = 0 RTT
alors que,soyons fous, du 25 avril au 07 juin = 1 RTT ou bien
du 25 avril au 17 mai= 1/2 RTT

si je ne suis pas clair dites moi je vous envoie un classeur

encore merci de votre aide


Philippe.R a écrit :
Bonsoir,
Essayes,si je comprends bien, en remplaçant a1 par a3 et 0.5
par 0,5


















Avatar
Pierre52
je te remercie beaucoup
cela fonctionne à la perfection
je ne me souvenais plus qu'il fallait y mettre dans un module et non
dans le workbook ou la feuille
encore merci de ta patience

isabelle a écrit :
bonjour Pierre,

il faut que tu copie la function dans un module standard du vbaproject
de ton classeur
et ensuite tu l'utilise dans la feuille de calcul comme tout autre
function, comme une Somme :

=rrt(A3;B3)

rtt sera présente dans les fonctions à la catégorie "Personnalisées"

voici un fichier exemple : http://cjoint.com/?kEex7K0zWv

isabelle

Pierre52 a écrit :
merci beaucoup de ta part

comment je me sert de cette fonction et surtout où faut il que je
l'enregistre

merci d'avance de ta patience

isabelle a écrit :
j'avais mis cela trop compliqué pour rien,
voici la correction :

Function rtt(début As Range, fin As Range) As Double
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Application.Match(CLng(i), Range("fériés"), 0)) Then a =
a + 1
Else
a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Next
End Function

isabelle

isabelle a écrit :
bonjour Pierre,

voilà après un excellent repas, ça va mieux,

Function rtt(début As Range, fin As Range) As Double
Application.Volatile
On Error Resume Next
For i = début To fin
If Application.Weekday(i, 2) < 6 Then
If IsError(Range("fériés").Find(What:=i).Row) Then a = a + 1
Else: a = 0
End If
If a = 5 Then rtt = rtt + 0.5: a = 0
Err.Clear
Next
End Function

isabelle

Pierre52 a écrit :
bon appétit et bonne soirée

cordialement

isabelle a écrit :
ok, je regarde ça demain matin, car là je suis attendu pour un
souper à l'extérieur,

isabelle

Pierre52 a écrit :
oui pourquoi pas tant que son exécution est totalement transparente
merci beaucoup d'avance

isabelle a écrit :
bonjour Pierre,

ok, je comprend mieux la disposition et la complexité de la donne,
je ne crois pas être capable de faire une solution sans macro,
est ce que cela te conviendrait avec une macro ?

isabelle

Pierre52 a écrit :
merci à tous de vos réponses,

effectivement avec 0,5 cela fonctionne

mais ,je pense que je me suis mal exprimé

dans la colonne A j'ai la date de début des vacances en
colonnes B j'ai la date de fin des congés en colonnes C j'ai la
formule qui compte les jours ouvrés
(=NB.JOURS.OUVRES(A3;B3;fériés))j'aurai voulu en colonne D par
exemple le nombre de RTT décomptés sachant que
- les 5 jours consécutifs du lundi au vendredi compte pour 1/2
RTT sauf si il y a un jour férié dans ces jours(lundi,..,
vendredi)
exemple: cette année vacances du 25 avril au 10 mai = 0 RTT
alors que,soyons fous, du 25 avril au 07 juin = 1 RTT ou bien
du 25 avril au 17 mai= 1/2 RTT

si je ne suis pas clair dites moi je vous envoie un classeur

encore merci de votre aide


Philippe.R a écrit :
Bonsoir,
Essayes,si je comprends bien, en remplaçant a1 par a3 et 0.5
par 0,5




















1 2