Comment obtenir la date du jour + n jours ouvrés, ou utilisation de SERIE.JOUR.OUVRE dans Excel :
L'aide en ligne précise :
En cas de saisie manuelle de la date, la formule ne fonctionnerait donc pas.Important : Les dates doivent être entrées en utilisant la fonction DATE, ou sous la forme de résultats d'autres formules ou fonctions. Des problèmes peuvent survenir si les dates sont entrées sous forme de texte.
On peut pallier le problème en compliquant un peu les choses...
...
Charger la macro complémentaire "Utilitaire d'analyse" :
Dans Excel -> Cocher l'Utilitaire d'analyse VBA dans les macros complémentaires :
Outils -> Macros complémentaires -> Valider Utilitaire d'analyse VBA
...
ou par soft :
...A vous de trouver le bon emplacement du fichier...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.AddIns.Add("C:\Program Files\Microsoft Office\Office10\Macrolib\Analyse\ANALYS32.XLL").Installed = True
...
La solution consiste à formater le résultat d'une formule Excel :
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub JoursOuvresAjouterExcel() Dim LaDate As Double, Formule As String LaDate = CDbl(CDate("16/03/2007")) 'ou LaDate = CDbl(Cells(2, 1)) 'ou LaDate = CDbl(Date) Formule = "=SERIE.JOUR.OUVRE(" & LaDate & ",3)" Range("A3")Formula = Formule Application.Calculate Range("A3") = CDate(Format(Range("A3"), "dd/mm/yyyy")) End Sub
Pour obtenir le même résultat avec VBA (avec l'assistance efficace de bbil)
...
Charger la macro complémentaire "Utilitaire d'analyse" (voir plus haut)
puis,
Dans l'Editeur VB -> Ajouter atpvbaen.xls en référence au projet :
Outils - Références -> Valider atpvbaen.xls
Puis utiliser ce code
Où Workday(Ladate, 3) ajoute 3 jours à la date, + les éventuels jours calendaires non ouvrés, s'ils se trouvent dans la plage ajoutée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub JoursOuvresAjouterVBA() Dim LaDate As Double, NewDate As Date LaDate = CDbl(CDate("16/03/2007")) 'ou LaDate = CDbl(Cells(2, 1)) 'ou LaDate = CDbl(Date) NewDate = Format(Workday(LaDate, 3), "dd/mm/yyyy") MsgBox NewDate End Sub
Toute info complémentaire est la bienvenue
Partager