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 :
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
...A vous de trouver le bon emplacement du fichier...
...
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
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
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