• Initiateur de la discussion Initiateur de la discussion mbo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 .... 🙂 ]
 
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

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.
 
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

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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
391
Réponses
3
Affichages
478
Réponses
4
Affichages
287
Réponses
1
Affichages
398
Retour