Comment obtenir la date du jour + n jours ouvrés, ou utilisation de SERIE.JOUR.OUVRE dans Excel :
L'aide en ligne précise :
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.
En cas de saisie manuelle de la date, la formule ne fonctionnerait donc pas.
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 :
Application.AddIns.Add("C:\Program Files\Microsoft Office\Office10\Macrolib\Analyse\ANALYS32.XLL").Installed = True
...A vous de trouver le bon emplacement du fichier...
...
La solution consiste à formater le résultat d'une formule Excel :
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
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 |
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
Toute info complémentaire est la bienvenue
Partager