calcul de jours

M

mbo

Guest
Bonjour,

je dois écrire une macro qui me permet de compter le nombre de jours entre 2 dates.
Là où ça se complique, c'est que j'ai plusieurs profils :
- Profil 1 et 3 : compter les jours entre 2 dates en enlevant les week-ends et jours fériés
- Profil 7 : compter les jours entre 2 dates en enlevant les week-ends, jours fériés et mercredi
- Profil 8 : compter les jours entre 2 dates en ne prenant en compte que les vendredis, samedis, dimanches.

voir fichier joint.

Est-ce que quelqu'un aurait une solution ?
Merci d'avance
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Dans le fichier joint,
tu as une collection de formules
(pas de macro)
[file name=JoursMbo.zip size=3488]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JoursMbo.zip[/file]
 

Pièces jointes

  • JoursMbo.zip
    3.4 KB · Affichages: 38

mbo

XLDnaute Nouveau
Merci beaucoup pour cette réponse, elle se rapproche de ce que je souhaite.
Mais j'aurais souhaité que la réponse s'affiche sur la même ligne que les dates de début et fin, pour chaque personne (voir le fichier que j'ai joint dans le 1er message).
La personne qui va utiliser le fichier aimerait ne pas avoir à retaper les dates mais elle voudrait que le résultat s'affiche directement... [j'espère que j'ai été claire .... :) ]
 

mbo

XLDnaute Nouveau
désolé ... je pensais qu'elle avait été prise en compte.
Je ré-essaies ... [file name=absences.zip size=4586]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/absences.zip[/file]
 

Pièces jointes

  • absences.zip
    4.5 KB · Affichages: 24
  • absences.zip
    4.5 KB · Affichages: 27
  • absences.zip
    4.5 KB · Affichages: 28

Monique

Nous a quitté
Repose en paix
Re,

Ou bien une colonne par profil,
ou bien nommer les 3 formules Pr1 Pr7 et Pr8
et utiliser une formule conditionnelle :
=SI(OU(E2='1';E2='3');Pr1;SI(E2='7';Pr7;Pr8))
ou celle-ci :
=((E2='1')+(E2='3'))*Pr1+(E2='7')*Pr7+(E2='8')*Pr8

(il y a des guillemets autour des chiffres parce que tes n° de profil sont du texte)
[file name=JoursMboV1.zip size=6043]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JoursMboV1.zip[/file]
 

Pièces jointes

  • JoursMboV1.zip
    5.9 KB · Affichages: 26

mbo

XLDnaute Nouveau
Merci encore pour ton aide.
J'ai juste un petit souci (qq chose m'échappe).
Je me suis trompée au départ. En fait :
- Profil 8 = compter les jours entre 2 dates en enlevant les week-ends, jours fériés et mercredi
- Profil 7 = compter les jours entre 2 dates en ne prenant en compte que les vendredis, samedis,
dimanches.

Donc je me suis dis qu'il suffisait que j'inverse les 2 formules dans ton fichier : que je nomme PR7 celle qui s'appelait PR8 et PR8 celle qui s'appelait PR7 mais les résultats obtenus ne sont pas corrects.

A la ligne 13 du fichier, si on change la date de fin et qu'on met 19/06/2005, on devrait obtenir 3 or la formule ne prend en compte que le vendredi.

J'en déduis donc que le fait d'inverser les 2 formules n'est pas suffisant mais je 'sèche'.
Si tu as une idée de la solution je te serais très reconnaissante.
Merci d'avance.
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Les formules Pr7 et Pr8 sont renommées Pr8 et Pr7
Je crois que ça fonctionne, tu vérifieras.

Du coup, j'ai modifié aussi les 2 colonnes de droite.

Pour contrôler plus facilement,
tu as un format de date qui te donne aussi les 3 premières lettres du jour de la semaine
Et tu as une formule en colonne D
[file name=JoursMboV2.zip size=6345]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JoursMboV2.zip[/file]
 

Pièces jointes

  • JoursMboV2.zip
    6.2 KB · Affichages: 26

mbo

XLDnaute Nouveau
il reste un souci ...
si je change le profil de quelqu'un, le calcul ne se fait pas partout.

Par ex : ligne 13
au lieu du profil 7 je mets le profil 8 :
colonne F, j'ai 1 => c'est correct
colonne G, j'ai 0 => !!!

si je remets le profil 7, il garde 1 en colonne F et 0 en colonne G.

Même problème pour les autres lignes.
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Eh oui…
En I1:L1, ce sont des chiffres précédés d'une apostrophe,
donc du texte pour Excel.
En colonne E, je ne sais pas d'où viennent tes données,
mais chez moi il y a un message : 'Nombre stocké sous forme de texte'
Si tu valides un de ces nombres, il devient une valeur numérique,
si tu le modifies, idem.

Pour mieux voir, tu enlèves l'alignement centré, tu le mets standard :
les valeurs texte sont alignées à gauche,
si tu valides, elles s'alignent à droite, comme toutes les valeurs numériques.

Moralité :
Solution 1
mettre la colonne E au format texte (barre de menu - Format - Nombre)
ou bien mettre un format de nombre dans la colonne E et en I1:L1

Solution 2, modifier le début des formules :
En I2 :
=SI(E2*1=I$1*1;SOMMEPROD((JOURSEM(LIGNE(INDIRECT($B2&':'&$C2));2)<6)*1)-SOMMEPROD(((JOURSEM(Fer;2)<6))*(Fer>=$B2)*(Fer<=$C2));'')

En J2 :
=SI(E2*1=J$1*1;SOMMEPROD((JOURSEM(LIGNE(INDIRECT($B2&':'&$C2));2)<6)*1)-SOMMEPROD(((JOURSEM(Fer;2)<6))*(Fer>=$B2)*(Fer<=$C2));'')

Etc
Et idem avec les 3 formules nommées
 

Monique

Nous a quitté
Repose en paix
Re,

Ce que j'ai dit en solution 2 après le 'etc' :
'Et idem avec les 3 formules nommées'
n'est pas bon

Pour la solution 2, tu ne modifies pas les formules nommées,
tu changes les formules de colonnes F et G
En F2 :
=SI(OU(E2='1';E2=1;E2='3';E2=3);Pr1;SI(OU(E2='7';E2=7);Pr7;Pr8))
en G2 :
=((E2='1')+(E2=1)+(E2='3')+(E2=3))*Pr1+((E2='7')+(E2=7))*Pr7+((E2='8')+(E2=8))*Pr8
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 339
Membres
103 192
dernier inscrit
Corpdacier