Problèmes utilisation jours ouvrés macro vba

couc67 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
couc67 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
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

7 réponses

couc67 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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   Statut Membre Dernière intervention  
 
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