Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Différences dates et questions techniques

3 réponses
Avatar
lolo_bob2
Bonjour =E0 tous

Voila je voudrais daire une difference entre deux dates mais je
voudrais juste le nombre de jours ouvr=E9s entre ces deux dates
ex date de r=E9ception 1/11/2006 et date d'expedition 15/11/2006 il y a
en fait 14 jours de difference mais en comptant les jours ouvr=E9s
Existe t-il une formule pour avoir le bon r=E9sultat ?

Second point voila j'ai un formulaire avec une zone de liste
d=E9roulante contenant environ une vingtaine d'item je voudrais quand je
selectionne un item, une liste de contr=F4le avec des cases =E0 cocher
apparaissent.
Exemple je choisi cuisine dans ma liste de choix et mes contr=F4les
doivent =EAtre les suivants : porte, poign=E9e, bois...
Comment faut il que je m'y prenne ? je pensais faire deux table mais je
ne sais pas si c'est le plus simple...

Pouvez vous m'aidez ?

Merci beaucoup=20

A+

3 réponses

Avatar
ze Titi
Bonjour

Concernant ton premier point, utilises les fonctions suivantes (à
mettre dans un module quelconque)


Public Function NbreJoursOuvrables(dhDateDébut As Date, dhDateFin As
Date) As Integer
' Calculer le nombre de jours ouvrables entre deux dates sans l'aide
d'une table
' Utilise la fonction JourFériéMobile(UneDate As Date)
' Dates entrées en format américain: MM/JJ/AAAA
' Entrée:
' dhDateDébut:
' Date de départ de l'intervallle de temps désiré au format européen
entre guillemets.
' dhDateFin:
' Date de fin de l'intervalle de temps désiré au format européen entre
guillemets.
' (les dates seront inversées si nécessaire)
' Test de validité des dates
If IsNull(dhDateDébut) Or IsNull(dhDateFin) Then
NbreJoursOuvrables = 0
Exit Function
ElseIf Not IsDate(dhDateDébut) Or Not IsDate(dhDateFin) Then
NbreJoursOuvrables = 0
Exit Function
ElseIf dhDateDébut > dhDateFin Then
' Inversion des dates si nécessaire.
Dim dhTemp As Date
dhTemp = dhDateDébut
dhDateDébut = dhDateFin
dhDateFin = dhTemp
End If
'Conversion des dates en valeurs numériques (Double précision) format
de date interne de la machine
Dim dbldhDateDébut As Double
Dim dbldhDateFin As Double
dbldhDateDébut = CDbl(dhDateDébut)
dbldhDateFin = CDbl(dhDateFin)
Dim dhDateCourante As Date
Dim Résultat As Integer
Dim intAn As Integer
intAn = Year(Date)
' Comptage des jours entre la date de début et la date de fin de
l'intervalle de temps spécifié
Do Until dbldhDateDébut > dbldhDateFin
' Initialisation du jour courant à la date de début
dhDateCourante = CDate(dbldhDateDébut)
'Test pour savoir si le jour courant est ouvrable
If WeekDay(dhDateCourante) <> 1 And WeekDay(dhDateCourante) <> 7
Then
'Test des jours fériés avec dates invariables
Select Case dhDateCourante
Case CDate("01/01/" & intAn) 'Jour de l'an
Case CDate("01/05/" & intAn) 'Fête du travail
Case CDate("01/08/" & intAn) 'Fête nationale suisse
Case CDate("25/12/" & intAn) 'Noël
Case CDate("26/12/" & intAn) 'St-Etienne
Case Else
'Test pour savoir si la date courante n'est pas un jour férié mobile
If JourFériéMobile(dhDateCourante) = False Then
' Totalise les jours ouvrables
Résultat = Résultat + 1
End If
End Select
End If
dbldhDateDébut = dbldhDateDébut + 1
Loop
NbreJoursOuvrables = Résultat
End Function

Private Function JourFériéMobile(UneDate As Date) As Boolean
'Cette fonction contrôle si le jour n'est pas un jour férié chrétien
'Toutes les dates sont fondées sur le dimanche de Pâques
Dim Pâques As Date
Pâques = fPaques(Year(UneDate))
Select Case UneDate
Case Pâques - 2 'Vendredi-Saint
JourFériéMobile = True
Case Pâques + 1 'Lundi de Pâques
JourFériéMobile = True
Case Pâques + 39 'Ascension
JourFériéMobile = True
Case Pâques + 50 'Lundi de pentcôte
JourFériéMobile = True
Case Else
JourFériéMobile = False
End Select
End Function


Concernant ton second point, effectivement l'utilisation de 2 tables me
paraît indispensable.

Tes cases à cocher seront à intégrer dans un sous-formulaire en mode
continu dont la source correspondra à ta liste déroulante.



Bonjour à tous

Voila je voudrais daire une difference entre deux dates mais je
voudrais juste le nombre de jours ouvrés entre ces deux dates
ex date de réception 1/11/2006 et date d'expedition 15/11/2006 il y a
en fait 14 jours de difference mais en comptant les jours ouvrés
Existe t-il une formule pour avoir le bon résultat ?

Second point voila j'ai un formulaire avec une zone de liste
déroulante contenant environ une vingtaine d'item je voudrais quand je
selectionne un item, une liste de contrôle avec des cases à cocher
apparaissent.
Exemple je choisi cuisine dans ma liste de choix et mes contrôles
doivent être les suivants : porte, poignée, bois...
Comment faut il que je m'y prenne ? je pensais faire deux table mais je
ne sais pas si c'est le plus simple...

Pouvez vous m'aidez ?

Merci beaucoup

A+


--
Voilou !
Bon code
Cordialement,

Ze Titi

Avatar
ze Titi
Bonjour

J'ai oublié, ajoute aussi la fonction suivante...

Public Function fPaques(wAn%) As Date
'Pâques est le dimanche qui suit le quatorzième jour de la Lune qui
tombe le 21 mars ou immédiatement après
'Cette fonction calcule aussi la date des jours fériés chrétiens
Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH%, wI%, wJ%, wK%, wL%, wM%,
wN%, wP%
Dim dtPaques As Date, dtVenSaint As Date, dtLunPaq As Date, dtAscension
As Date
Dim dtDimPent As Date, dtLunPent As Date
Dim strMsg As String, strTitre As String
Dim TableauJoursFeriés(10), i As Integer
'Calcul du rang de l'année dans le cycle lunaire qui a 19 ans
wA = wAn Mod 19
'Calcul du siècle
wB = wAn 100
'Calcul du rang de l'année dans le siècle
wC = wAn Mod 100
wD = wB 4
wE = wB Mod 4
'Synchronisation avec le cycle lunaire
wF = (wB + 8) 25
wG = (wB - wF + 1) 3
wH = (19 * wA + wB - wD - wG + 15) Mod 30
wI = wC 4
wK = wC Mod 4
wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7
wM = (wA + 11 * wH + 22 * wL) 451
wN = (wH + wL - 7 * wM + 114) 31
wP = (wH + wL - 7 * wM + 114) Mod 31
fPaques = DateSerial(wAn, wN, wP + 1)
End Function


dans ton message
du 22/11/2006,
Bonjour à tous

Voila je voudrais daire une difference entre deux dates mais je
voudrais juste le nombre de jours ouvrés entre ces deux dates
ex date de réception 1/11/2006 et date d'expedition 15/11/2006 il y a
en fait 14 jours de difference mais en comptant les jours ouvrés
Existe t-il une formule pour avoir le bon résultat ?

Second point voila j'ai un formulaire avec une zone de liste
déroulante contenant environ une vingtaine d'item je voudrais quand je
selectionne un item, une liste de contrôle avec des cases à cocher
apparaissent.
Exemple je choisi cuisine dans ma liste de choix et mes contrôles
doivent être les suivants : porte, poignée, bois...
Comment faut il que je m'y prenne ? je pensais faire deux table mais je
ne sais pas si c'est le plus simple...

Pouvez vous m'aidez ?

Merci beaucoup

A+


--
Voilou !
Bon code
Cordialement,

Ze Titi

Avatar
lolo_bob2
Merci pour tes réponses

Dans ton message tu as écrit:
"Concernant ton second point, effectivement l'utilisation de 2 tables
me
paraît indispensable.
Tes cases à cocher seront à intégrer dans un sous-formulaire en mode

continu dont la source correspondra à ta liste déroulante"


Mais concernant le deuxième point je ne vois pas trop comment faire un
lien entre mes deux tables c'est à dire je ne vois pas quoi mettre
dans ma première table et quoi mettre comme champ dans la seconde

Pour la première question j'ai un soucis car j'ai plusieurs date à
comparer...je faisais ca dans une requête basée sur ma table
principale auparavant, mais j'avais tous les jours et non que les jours
ouvrés...
Est ce que je suis obligé d'utiliser tout ce code ? n'y a t'il pas une
façon plus simple ?

Merci pour tes réponses

A+