InpuBox parasite

C

Christian T

Guest
Bonjour le forume,

J'ai déjà posé ma question mais les réponses reçues affirmaient qu'il n'y avait pas de problème. Or le problème persiste, je vais le poser différemment.

Je cherche à calculer le nombre de jours travaillés entre deux dates et j'introduis le nombre de jours fériés par une inpubox.

Voici mon code :
Function NbJoursTravail(Début As Date, Fin As Date)

Dim Vdate As Date
Dim NbJours As Byte
Dim NbJoursWE As Byte
Dim NbJoursFeriés As Byte

NbJours = 0
NbJoursFeriés = 0
NbJoursWE = 0

If Début = 0 Or Fin = 0 Then
NbJoursTravail = 0
Else

NbJoursFeriés = InputBox('Combien de jours feriés dans la période considérée ?', _
'Jours fériés', 0)
For Vdate = Début To Fin
If Weekday(Vdate) = 1 Or Weekday(Vdate) = 7 Then
NbJoursWE = NbJoursWE + 1
End If
Next Vdate
NbJours = Fin - Début + 1
End If

NbJoursTravail = NbJours - NbJoursWE - NbJoursFeriés

End Function

[li]Quand j'insère la première fois[/li] ma fonction la boite de dialogue s'ouvre 5 fois.

Où est l'erreur?

Merci d'avance

Christian
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

je te propose de passer ton nombre de jours dériés direct dans la fonction

Function NbJoursTravail(Début As Date, Fin As Date, NbJoursFeriés As Byte)

Dim Vdate As Date
Dim NbJours As Byte
Dim NbJoursWE As Byte

NbJours = 0
NbJoursWE = 0

If Début = 0 Or Fin = 0 Then
NbJoursTravail = 0
Else

For Vdate = Début To Fin
If Weekday(Vdate) = 1 Or Weekday(Vdate) = 7 Then
NbJoursWE = NbJoursWE + 1
End If
Next Vdate
NbJours = Fin - Début + 1
End If

NbJoursTravail = NbJours - NbJoursWE - NbJoursFeriés

End Function

Sinon autre possibilite le calcul des jours fériés
 

Christian T

XLDnaute Nouveau
Bonjoour Pascal, Bonjour le forum

Merci Pascal pour ta proposition. Elle est tellement simple que je me demande pourquoi je n'y ai pas pensé. Mais pourquoi faire simple?.

Mais ta réponse ne me satisfait qu'à moitié : j'ai une solution, mais pourquoi mon inputbox ne fonctionne pas?

Cette fonction ne correspond pas à un besoin personnel ou professionnel, je veux simplement apprendre VBA.

Donc, si toi ou un autre peut me dire quelle erreur je commets, je lui en serais reconnaisant.

christian
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re

En fait dans l'idée il vaut mieux eviter d'utiliser ce genre d''artifice' tellle une inputbox dans une fonction

car aussitot que tu entres une donnée il fait le calul de la fonction et donc te lance l'inputbox.

Bon courage
 

Discussions similaires

Réponses
5
Affichages
953

Statistiques des forums

Discussions
300 761
Messages
1 987 019
Membres
209 681
dernier inscrit
Excelcrable