CommentCaMarche
Recherche
Posez votre question Signaler

Exclure Samedi et Dimanche sous Excel [Résolu]

Karlum - Dernière réponse le 16 mars 2009 à 17:19
Bonjour,
Je travail chez un transporteur routier et je me demandai si je pouvais calculer la durée de livraison en disposant du jour d'enlèvement, jour de livraison et surtout en excluant les Samedi et Dimanche.
Par exemple je dispose des données suivantes pour une expédition:
- Date d'enlèvement: 04/09/2008
- Date de livraison: 08/09/2008
Le délai calculé est 4 jours
Délai réel : 2 jours car il y a 1 samedi et 1 dimanche.
Savez vous comment je peux appliquer cela dans une formule?
Merci d'avance de vos réponses et bon WE
Lire la suite 
Réponse
+6
moins plus
Bonjour,

Pas besoin de VBA pour ce calcul classique avec Excel!...

dans outil-macro complémentaires
cocher "utilitaire d'analyse"

si le 1° jour est par ex en C2 (18/9/08)
le dernier jour en D2(22/9/08)

=NB.JOURS.OUVRES(C2;D2) renvoie 3

en faisant un tableau des jours fériés on peut aussi les enlever
=NB.JOURS.OUVRES(1° jour;dernier jour; fériés)


Michel
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

Je ne sais pas si l'on peut appliquer cela dans une formule, car cela demande un travail d'analyse au niveau des dates. Par contre en VBA, c'est possible de développer un code qui peut calculer cela et te retourner le résultat soit sous la forme d'un message, soit l'écrire dans une formule.

Le code en question peut être appeler grace à un bouton.

Le principe de la fonction pourrait être :

Initialiser un compteur de jours à 0 et utiliser

Une boucle qui pour chaque jour compris entre la date de début et celle de fin
1) crée un objet date à partir de la date lue
2) extrait le jour de la semaine correspondant à la date
3) vérifie si ce jour est samedi ou dimanche
4) si non, ajoute 1 au compteur
5) renvoie le compteur

Cela ne répond pas exactement à ton problème, mais cela peut être une piste. J'adore VBA, cela permet d'automatiser pas mal de chose dans Excel, Word, Access.... :-)

Cdlt

IC
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour Karlum et les autres intervenants,

La formule exclut le samedii et le dimanche

en reprenant mon exemple:
18/9 jeudi donc 1
19/9 vendr. donc 2
20/9 21/9 sam et dim non comptés donc 2
22/9 lundi donc 3

Pour Jean_Jacques: pour calculer le nombres de jours ouvrables (dimanche seul retiré) il faut imbriquer JOURSEM et NB.JOURS.OUVRES (formule-usine à gaz!), d'où ma remarque car j'avais cru que... donc, excuses moi pour ma mauvaise interprétation

Bon Dimanche,

Edit: 9:50 pour le fun, formule "jours ouvrables" d'après le site incontournable de Jacques Boisgontier (à inscrire dans ses favoris!!!):
http://boisgontierjacques.free.fr/

=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(A2&":"&B2));2)<7)*(NB.SI(fériés;LIGNE(INDIRECT(A2&":"&B2)))=0))

Lo- 16 mars 2009 à 12:23
Salutations,
Je sais que ça fait un bail que vous avez parlé de ce sujet, mais je tente ma chance!
J'utilise la formule de jours ouvrés qui marche sans souci. Par contre, je peux aller plus loin dans mon analyse car j'ai les horaires qui vont avec (je suis sur des durées très courte de < à 1 jour à 1 semaine).
SAis-tu s'il y a une formule qui me permettrait de prendre en compte les horaires.
Actuellement avec la formule de jours ouvrés, je gagne en précision sur le nombre de jours, mais j'en perd beaucoup sur tous mes chiffres à virgule!! Et c'est plutôt désaventageux.
J'espère que tu pourras m'aider.
Merci par avance
Répondre
Jean_Jacques 1045Messages postés mercredi 30 avril 2008Date d'inscription 1 août 2014Dernière intervention - 16 mars 2009 à 16:06
Bonjour lo,

Dans mon bric à brac une solution VB qui répond partiellement à ton cahier des charges.
D'autres contributeurs plus compétents que moi sauront bien te mettre sur la bonne voie ...

Attribute VB_Name = "DifferencesDHeures"

'différences en heures entre deux dates ou heures

Public Function TimeDiff(rng1 As Range, rng2 As Range)
'Tom Ogilvy, mpep
'renvoie du texte
Dim lngHr As Long, lngMin As Long
Dim lngSec As Long

lngHr = DateDiff("h", rng1.Value, rng2.Value)
lngMin = DateDiff("n", rng1.Value, rng2.Value) Mod 60
lngSec = DateDiff("s", rng1.Value, rng2.Value) Mod 60

TimeDiff = Format(lngHr, "00") & ":" & _
Format(lngMin, "00") & ":" & _
Format(lngSec, "00")
End Function

Cordialement
Répondre
Lo- 16 mars 2009 à 16:34
Merci beaucoup pour ta réponse! Ca m'a l'air très bien.
Par contre, je dois avouer ma méconnaissance de VBA! Si je comprends bien c'est un langage permettant d'ajouter des fonctionnalités sur Excel, par contre comment y accéder?
Si tu peux me donner une ou deux indications je devrais pouvoir m'y mettre facilement. Ce n'est que de la programmation !!
Merci par avance Jean-jacques
Répondre
Jean_Jacques 1045Messages postés mercredi 30 avril 2008Date d'inscription 1 août 2014Dernière intervention - 16 mars 2009 à 16:57
Lo,

D'abord ne pas oublier la touche magique : F1 pour l'aide en ligne ..

Sinon,
Dans le menu Outils, pointer sur Macro, puis cliquer sur Visual Basic Editor.

C'est dans cette page blanche qu'il faut saisir le code.

Des liens de référence : http://www.developpez.net/...
http://excel.developpez.com/cours/
http://www.excel-downloads.com/forum/

Bon courage, il y a de la matière ....
Répondre
Lo- 16 mars 2009 à 17:19
Merci Jean-Jacques,
En fait, j'avais réussi à trouver mon chemin, mais c'est bien de se le faire confirmer.
En tout cas, merci pour ton aide et les liens. Je pense que ça va être très utile et je crois que je vais me mettre dedans à fond rapidement! Et je n'hésiterai pas à revenir poser des questions le long de ma lente prise de connaissance!
Merci encore et bon après-midi,
Lo
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Tout d'abord merci Incaout pour ta réponse rapide.

Je ne sais pas ce qu'est VBA?

Par contre je trouve l'idée très interressante en effet.
C'est vrai que si je peux incrementer un compteur d'un 1 pour tous les jours exceptés Samedi et Dimanche cela résoudrai le pb.

Je vais creuser cela de suite

Merci encore
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Je pense que VBA veut dire Visual Basic pour Application.

Je vais etudier cela.

Merci encore
Ajouter un commentaire
Réponse
+0
moins plus
VBA c'est Visual Basic Application. En fait c'est un langage de programmation orienté objet qui te permet de manipuler les éléments dans Excel, comme par exemple les feuilles, les cellules, etc, de faire des calculs, de la mise en forme, de réagir à des actions de l'utilisateur.

C'est vraiment une solution intéressante pour répondre à des développements de petites fonctions avec des délais courts. Evidemment, le problème est qu'il faut se plonger dedans.

Si cela t'intéresse d'y aller jeter un oeil, tu peux y accéder dans le menu "Outils" -> "Macro" -> Visual Basic

Sinon dans le menu insérer -> fonctions, tu as une fonction dans la catégorie des dates et heures nommée JOURSEM qui te permet de connaitre le jour de semaine d'une date. J'utilise Excel 2000, j'espère que c le même nom sous la version 2003. Mais je ne suis pas sur qu'une fonction puisse effectuer l'ensemble du contrôle.

Bon courage.

IC
Ajouter un commentaire
Réponse
+0
moins plus
Salut

C super ça. Je ne connaissais pas. Merci pour le tuyau ;-)

IC
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,

A mon sens, il faut une formule qui combine JOURSEM et NB.JOURS.OUVRES pour calculer le nombre de jours ouvrables ....

Mais les formules ne sont pas mon point fort.

Je lance la piste, mais je ne sais pas faire

Cordialement

La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Ajouter un commentaire
Réponse
+0
moins plus
bonsoir Jean Jacques

Ne confondrais tu pas jours ouvrables et jours ouvrés ?

Amicalement
Jean_Jacques 1045Messages postés mercredi 30 avril 2008Date d'inscription 1 août 2014Dernière intervention - 21 sept. 2008 à 09:10
Bonjour michel_m,


Le cahier des charges, si j'ose dire, postule d'exclure les samedis et dimanche sous EXCEL.
En conséquence, il m'a semblé que c'est la notion de jour ouvré qui prévaut pour le demandeur.

C'est donc cet aspect que j'ai privilégié, sans chercher plus avant.

Cordialement

La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Merci à tous les gars car la formule jours ouvrés est très pratique.

Par contre il n'élimine pas le samedi et dimanche je crois mais 1 seul jour.
Je vais travailler la dessus.

Merci encore car je pense que je vais pouvoir inscrire cette question comme résolue.
Je vais attendre un peu au cas où.

Merci et bon WE.
Ajouter un commentaire
Réponse
+0
moins plus
Re- bonjour à tous,

Je pense que le sujet est résolu et je vous en remerci.

Pour info, afin de compléter mon étude j'ai poster une nouvelle question un peu differante, c'est pour cela que je ne l'ai pas inscrite ici.

Si vous voulez je ter un oeil c'est le sujet suivant:
Modification de couleur sur une carte selon délai sur Excel

http://www.commentcamarche.net/forum/affich 8532885 modification de couleur sur une carte selon d

Merci encore et bonne semaine
Ajouter un commentaire
Ce document intitulé «  Exclure Samedi et Dimanche sous Excel  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.