problème entre dates

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
cousinhub
Le #4673191
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


Jacky
Le #4672831
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"
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




cousinhub
Le #4672801
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)


cousinhub
Le #4672791
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)


cousinhub
Le #4672731
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)


Jacky
Le #4672721
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"
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)




cousinhub
Le #4672701
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)




Jacky
Le #4672691
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"
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)




cousinhub
Le #4669751
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....


Jacky
Le #4669581
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"
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....




Publicité
Poster une réponse
Anonyme