Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème entre dates

10 réponses
Avatar
Jacky
Bonjour,

J'ai deux période de date de congé:

une allant du 01/01/2007 au 30/04/07(inclus)
et
une allant du 01/11/07 au 31/12/07(inclus)

On récupère 1 jour si pendant ces périodes on pose des congés de + ou = 6
jours
On récupère 2 jours si pendant ces périodes on pose des congés de + ou = 8
jours
avec un maximum possible de 2 jours.
Mon problème ........quand les congés se situe à cheval sur une période
par exemple combien je récupère si les congés posés vont par exemple:
[a1]= 25/04/07(inclus)
[b1]= 15/05/07(inclus)
[R1]=resultat
Mon neurone n'est pas en forme actuellement et si quelqu'un peut........me
mettre sur une piste
Une formule ou fonction qui fonctionne dans tout les cas ou même vba ne
serait d'un grand secours.
Merci d'avoir lu jusqu'ici
--
Salutations
JJ

10 réponses

Avatar
cousinhub
bonsoir jacky, (remis dans le bon fil)
une solution capillo-tractée, mais à priori qui fonctionne.
Le seul cas non prévu, tu poses des congés avant le mois de novembre, et
tu rentres après le mois d'avril, mais c'est plus des vacances, à moins
que .....

Sub vacances()
[d1] = ""
If Month([a1]) >= 11 Or Month([a1]) <= 4 Then
y = [DAY(DATE(YEAR(A1),MONTH(A1)+1,))]
If y - Day([a1]) + 1 >= 8 And [b1] - [a1] >= 8 Then
[d1] = 2: Exit Sub
ElseIf y - Day([a1]) + 1 >= 6 And [b1] - [a1] >= 6 Then
[d1] = 1: Exit Sub
End If
End If
If Month([b1]) >= 11 Or Month([b1]) <= 4 Then
If Day([b1]) >= 8 And (Month([a1]) <> Month([b1]) Or Day([b1]) -
Day([a1]) >= 8) Then
[d1] = 2: Exit Sub
ElseIf Day([b1]) >= 6 And (Month([a1]) <> Month([b1]) Or Day([b1])
- Day([a1]) >= 6) Then
[d1] = 1: Exit Sub
End If
End If
End Sub

http://cjoint.com/?ixs3ecyAp4





Bonjour,

J'ai deux période de date de congé:

une allant du 01/01/2007 au 30/04/07(inclus)
et
une allant du 01/11/07 au 31/12/07(inclus)

On récupère 1 jour si pendant ces périodes on pose des congés de + ou = 6
jours
On récupère 2 jours si pendant ces périodes on pose des congés de + ou = 8
jours
avec un maximum possible de 2 jours.
Mon problème ........quand les congés se situe à cheval sur une période
par exemple combien je récupère si les congés posés vont par exemple:
[a1]= 25/04/07(inclus)
[b1]= 15/05/07(inclus)
[R1]=resultat
Mon neurone n'est pas en forme actuellement et si quelqu'un peut........me
mettre sur une piste
Une formule ou fonction qui fonctionne dans tout les cas ou même vba ne
serait d'un grand secours.
Merci d'avoir lu jusqu'ici


Avatar
Jacky
Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé (même
dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)
--
Salutations
JJ


"cousinhub" a écrit dans le message de news:

bonsoir jacky, (remis dans le bon fil)
une solution capillo-tractée, mais à priori qui fonctionne.
Le seul cas non prévu, tu poses des congés avant le mois de novembre, et
tu rentres après le mois d'avril, mais c'est plus des vacances, à moins
que .....

Sub vacances()
[d1] = ""
If Month([a1]) >= 11 Or Month([a1]) <= 4 Then
y = [DAY(DATE(YEAR(A1),MONTH(A1)+1,))]
If y - Day([a1]) + 1 >= 8 And [b1] - [a1] >= 8 Then
[d1] = 2: Exit Sub
ElseIf y - Day([a1]) + 1 >= 6 And [b1] - [a1] >= 6 Then
[d1] = 1: Exit Sub
End If
End If
If Month([b1]) >= 11 Or Month([b1]) <= 4 Then
If Day([b1]) >= 8 And (Month([a1]) <> Month([b1]) Or Day([b1]) -
Day([a1]) >= 8) Then
[d1] = 2: Exit Sub
ElseIf Day([b1]) >= 6 And (Month([a1]) <> Month([b1]) Or Day([b1]) -
Day([a1]) >= 6) Then
[d1] = 1: Exit Sub
End If
End If
End Sub

http://cjoint.com/?ixs3ecyAp4





Bonjour,

J'ai deux période de date de congé:

une allant du 01/01/2007 au 30/04/07(inclus)
et
une allant du 01/11/07 au 31/12/07(inclus)

On récupère 1 jour si pendant ces périodes on pose des congés de + ou = 6
jours
On récupère 2 jours si pendant ces périodes on pose des congés de + ou =
8 jours
avec un maximum possible de 2 jours.
Mon problème ........quand les congés se situe à cheval sur une période
par exemple combien je récupère si les congés posés vont par exemple:
[a1]= 25/04/07(inclus)
[b1]= 15/05/07(inclus)
[R1]=resultat
Mon neurone n'est pas en forme actuellement et si quelqu'un
peut........me mettre sur une piste
Une formule ou fonction qui fonctionne dans tout les cas ou même vba ne
serait d'un grand secours.
Merci d'avoir lu jusqu'ici




Avatar
cousinhub
Désolé, j'avais "presque" tout essayé
Maintenant, si en plus, il faut décompter les fériés, W-E, et tout et
tout, mal de tête en perspective...

Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé (même
dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)


Avatar
cousinhub
Bon, pour le premier problème est là :
If y - Day([A1]) + 1 >= 8 And [b1] - [A1] >= 8 Then
remplace 8 par 7 (excel calcule jour exclu - jour inclus)
Pour les WE et JF, marmite en cours.....

Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé (même
dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)


Avatar
cousinhub
Re-,
regarde le fichier joint
Je pense, une nouvelle fois, avoir tout testé, mais sûrement oublié
quelque chose

http://cjoint.com/?iyaHC38C5L


le code :

Sub vacances()
[d1] = ""
jours_ouvres = [networkdays(A1, B1,feries)]
If jours_ouvres < 6 Then Exit Sub
If Month([A1]) >= 11 Or Month([A1]) <= 4 Then
y = [DAY(DATE(YEAR(A1),MONTH(A1)+1,))]
If y - Day([A1]) + 1 >= 8 And jours_ouvres >= 8 Then
[d1] = 2: Exit Sub
ElseIf y - Day([A1]) + 1 >= 6 And jours_ouvres >= 6 Then
[d1] = 1: Exit Sub
End If
End If
If Month([B1]) >= 11 Or Month([B1]) <= 4 Then
If Day([B1]) >= 8 And (Month([A1]) <> Month([B1]) Or
jours_ouvres >= 8) Then
[d1] = 2: Exit Sub
ElseIf Day([B1]) >= 6 And (Month([A1]) <> Month([B1]) Or
jours_ouvres >= 6) Then
[d1] = 1: Exit Sub
End If
End If
End Sub

avec une feuille contenant les jours fériés de l'année, année -1 et
année +1, cette zone étant nommée "feries"

Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé (même
dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)


Avatar
Jacky
Re...
Pour te donner une idée ou j'en suis.
J'ai repris une veille usine à gaz que j'ai fait il y a quelques années sur
xl98 et que je souhaite compléter.
http://cjoint.com/?iyaKfYwAwM
--
Salutations
JJ


"cousinhub" a écrit dans le message de news:

Bon, pour le premier problème est là :
If y - Day([A1]) + 1 >= 8 And [b1] - [A1] >= 8 Then
remplace 8 par 7 (excel calcule jour exclu - jour inclus)
Pour les WE et JF, marmite en cours.....

Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé
(même dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)




Avatar
cousinhub
Je pensais bien......
à la ligne :
If y - Day([A1]) + 1 >= 8 And jours_ouvres >= 8 Then
remplace And par Or
Peut-être.....

Re-,
regarde le fichier joint
Je pense, une nouvelle fois, avoir tout testé, mais sûrement oublié
quelque chose

http://cjoint.com/?iyaHC38C5L


le code :

Sub vacances()
[d1] = ""
jours_ouvres = [networkdays(A1, B1,feries)]
If jours_ouvres < 6 Then Exit Sub
If Month([A1]) >= 11 Or Month([A1]) <= 4 Then
y = [DAY(DATE(YEAR(A1),MONTH(A1)+1,))]
If y - Day([A1]) + 1 >= 8 And jours_ouvres >= 8 Then
[d1] = 2: Exit Sub
ElseIf y - Day([A1]) + 1 >= 6 And jours_ouvres >= 6 Then
[d1] = 1: Exit Sub
End If
End If
If Month([B1]) >= 11 Or Month([B1]) <= 4 Then
If Day([B1]) >= 8 And (Month([A1]) <> Month([B1]) Or
jours_ouvres >= 8) Then
[d1] = 2: Exit Sub
ElseIf Day([B1]) >= 6 And (Month([A1]) <> Month([B1]) Or
jours_ouvres >= 6) Then
[d1] = 1: Exit Sub
End If
End If
End Sub

avec une feuille contenant les jours fériés de l'année, année -1 et
année +1, cette zone étant nommée "feries"

Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé
(même dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)




Avatar
Jacky
Re...
Ben non....

a1/05/07
b1/05/07
Jour ouvré=9
D1= désespérément vide

idem pour
a1/07/07
b1/08/07
Jour ouvré2
D1= snif, snif...... vide

Je te souhaite une bonne nuit si tu est encore en ligne.
Moi, j'ai mon unique neurone qui me dit , "si tu vas pas te coucher, tu vas
planter le pc"
Alors, je crois qu'il est plus raisonnable d'abandonner pour ce soir (déjà
bien matinale)..... demain sera une autre jour, et peut-être que....
--
Salutations
JJ


"cousinhub" a écrit dans le message de news:

Re-,
regarde le fichier joint
Je pense, une nouvelle fois, avoir tout testé, mais sûrement oublié
quelque chose

http://cjoint.com/?iyaHC38C5L


le code :

Sub vacances()
[d1] = ""
jours_ouvres = [networkdays(A1, B1,feries)]
If jours_ouvres < 6 Then Exit Sub
If Month([A1]) >= 11 Or Month([A1]) <= 4 Then
y = [DAY(DATE(YEAR(A1),MONTH(A1)+1,))]
If y - Day([A1]) + 1 >= 8 And jours_ouvres >= 8 Then
[d1] = 2: Exit Sub
ElseIf y - Day([A1]) + 1 >= 6 And jours_ouvres >= 6 Then
[d1] = 1: Exit Sub
End If
End If
If Month([B1]) >= 11 Or Month([B1]) <= 4 Then
If Day([B1]) >= 8 And (Month([A1]) <> Month([B1]) Or jours_ouvres
= 8) Then
[d1] = 2: Exit Sub

ElseIf Day([B1]) >= 6 And (Month([A1]) <> Month([B1]) Or
jours_ouvres >= 6) Then
[d1] = 1: Exit Sub
End If
End If
End Sub

avec une feuille contenant les jours fériés de l'année, année -1 et année
+1, cette zone étant nommée "feries"

Bonsoir cousinhub

Merci pour ta proposition.
Mais comme dans tous les messages ici, il y a toujours un "mais" ;o)
a1/01/07
b1/01/07
= 8 jours de congés
Résultat =1 au lieu de 2
'-----------
Il y a aussi une chose et non des moindres que j'ai complètement zappé
(même dans mes pseudo solutions du moment),
c'est que la base de calcul doit se faire sur une semaine de 5 jours
excluant le samedi et le dimanche, et pour combler le tout excluant
également les jours fériés
a1/01/07
b1/01/07
=8 jours de congés
A déduire (-1 samedi, -1 dimanche, -1 jour férié)=3
=5 jours à prendre en compte pour récupérer 1 jour ou 2 jours selon la
période (dans cet exemple se serait 0 jour)

Je vais être obligé de secouer mon neurone;o)




Avatar
cousinhub
Bonjour Jacky, le forum

tout d'abord :

a1/05/07
b1/05/07
Jour ouvré=9
D1= désespérément vide

idem pour
a1/07/07
b1/08/07
Jour ouvré2
D1= snif, snif...... vide


Je reprends ta demande initiale :

une allant du 01/01/2007 au 30/04/07(inclus)
et
une allant du 01/11/07 au 31/12/07(inclus)


Donc D1 vide, normal, non? -)

Ensuite, regarde le fichier joint, et fais tous les tests, je "pense"
que c'est bon (bon "penser" le matin, un vendredi, c'est pas ce qu'on
fait de mieux, mais....)

http://cjoint.com/?iylMLiBubu


Bon courage

Re...
Ben non....

a1/05/07
b1/05/07
Jour ouvré=9
D1= désespérément vide

idem pour
a1/07/07
b1/08/07
Jour ouvré2
D1= snif, snif...... vide

Je te souhaite une bonne nuit si tu est encore en ligne.
Moi, j'ai mon unique neurone qui me dit , "si tu vas pas te coucher, tu vas
planter le pc"
Alors, je crois qu'il est plus raisonnable d'abandonner pour ce soir (déjà
bien matinale)..... demain sera une autre jour, et peut-être que....


Avatar
Jacky
Re....
Pffff....
Evidemment que cela fonctionne, c'est moi, qui a force...emmêle les pédales
J'en suis désolé, et je n'ai comme misérable excuse que d'avoir testé très
tard dans la nuit. ;o))
Je garde ce code dans ma boite à idées.
Merci à toi d'avoir consacré du temps à mon problème

--
Bon We
Jacky

"cousinhub" a écrit dans le message de news:

Bonjour Jacky, le forum

tout d'abord :

a1/05/07
b1/05/07
Jour ouvré=9
D1= désespérément vide

idem pour
a1/07/07
b1/08/07
Jour ouvré2
D1= snif, snif...... vide


Je reprends ta demande initiale :

une allant du 01/01/2007 au 30/04/07(inclus)
et
une allant du 01/11/07 au 31/12/07(inclus)


Donc D1 vide, normal, non? -)

Ensuite, regarde le fichier joint, et fais tous les tests, je "pense" que
c'est bon (bon "penser" le matin, un vendredi, c'est pas ce qu'on fait de
mieux, mais....)

http://cjoint.com/?iylMLiBubu


Bon courage

Re...
Ben non....

a1/05/07
b1/05/07
Jour ouvré=9
D1= désespérément vide

idem pour
a1/07/07
b1/08/07
Jour ouvré2
D1= snif, snif...... vide

Je te souhaite une bonne nuit si tu est encore en ligne.
Moi, j'ai mon unique neurone qui me dit , "si tu vas pas te coucher, tu
vas planter le pc"
Alors, je crois qu'il est plus raisonnable d'abandonner pour ce soir
(déjà bien matinale)..... demain sera une autre jour, et peut-être
que....