Problèmes utilisation jours ouvrés macro vba

Fermé
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011 - 9 mars 2011 à 09:31
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011 - 9 mars 2011 à 13:27
Bonjour,

mon problème est le suivant :

Je suis sous excel, et pour valider une ligne, j'ai besoin qu'elle vérifie certaines conditions. Nottament que la date d'arrivée d'un produit corresponde à la date demandée.
Exemple : la date d'arrivée demandée est le 04/03/2011 (vendredi). Si le produit arrive le 03/03/2011 (jeudi) ou le 07/03/2011 (lundi), c'est encore bon. la ligne est validée (date demandé + ou - 1 jour, en jours ouvrés)

Mon problème est donc l'utilisation des jours ouvrés. Pour le + ou - 1 jour, je peux simplement utiliser

IF abs(DateDemandée - DateArrivée) <= 1 Then
...

mais celà ne prend pas en compte les jours ouvrés. Est ce que quelqu'un aurait un solution ?
j'ai pensé à utiliser une Feuil comprenant un calendrier (dates sur la colonne A), et un indicateur indiquant si c'est un jour ouvré ou non (colonne B = 1 si jours ouvrée, 0 sionon)

existe t il un fonction pour savoir si la date est un jour ouvré ? Si une autre méthode plus simple existe, je suis bien entendu preneur

A voir également:

7 réponses

couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
9 mars 2011 à 10:01
j'ai pensé à une autre possibilitée, du style :

si( (DateArrivée - 1 en jour ouvré) <= DateDemandée <= (DateArrivée + 1 en jour ouvré) ; OK ; PAS OK)

Mais est il possible de calculer DateArrivée - 1 en jour ouvré ? Par exemple, si DateArrivée est un lundi, (DateArrivé - 1 en jour ouvré) est un vendredi ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 9/03/2011 à 10:08
Bonjour

Tu as une fonction sur excel SERIE.JOURS.OUVRES qui te permet d'avoir un calendrier avec uniquement les jours ouvrés

Ci joint un classeur avec des calculs sur les jours ouvrés
https://www.cjoint.com/?3djkhARFhJn

Michel
0
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
9 mars 2011 à 10:41
Avant tout, merci pour ton aide.

J'ai activé l'utilitaire d'analyse (j'ai vu qu'il fallait ca pour utiliser cette fonction). Mais je ne comprend pas trop comment elle fonctionne.

Si je fais SERIE.JOUR.OUVRE(04/03/2011;1;ferie) ca me donne 07/03/2011 en théorie ? Parce que chez moi c'est pas le cas...

Autre question, SERIE.JOUR.OUVRE est surement le nom en francais. Si je veux l'utiliser sous vba, est ce possible ? Quel sera son nom ? Parce que en enregistrant la macro, ca me m'écrit "=SERIE.JOUR.... " dans la case, mais j'aimerai l'utiliser dans un FOR. Il me faudrait donc le nom...

Merci de ton aide !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 mars 2011 à 11:56
re,

? Parce que chez moi c'est pas le cas...

bin là, je ne peux pas te dire ! :-)

SERIE.JOURS.OUVRES ----> WORKDAY
Attention, ce n'est pas une fonction VBA mais une worksheetfunction....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
9 mars 2011 à 12:24
Re,

désolé, mais je ne trouve pas la fonction dans worksheetfunction :

par exemple, si ca :

For i = 1 To 30
Cells(i, 7) = WorksheetFunction.Workday(Cells(i, 1), Cells(i, 2))
Next i

ca ne passe pas. Lorsque tu mets le point après Whorksheetfunction, vba te propose les fonctions applicables, or workday n'existe pas dedans... faut il activer des fonction supplémentaires dans vba ? si oui, comment ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 mars 2011 à 12:38
Worksheetfunction est une propriété-objet de l'objet ApplicatiON

donc Application.WorksheetFunction.WorkDay(....
ou plus simplement
application.workday(...
0
couc67 Messages postés 50 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 21 avril 2011
9 mars 2011 à 13:27
C'est ce que j'avais essayé, mais je n'y ai pas acces... tout comme il faut activer l'utilitaire d'analyse (à parement) sous excel pour utiliser cette fonction, ne faut il rien activer sous vba ?
0