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

Validation de Dates (suite)

3 réponses
Avatar
michel.arnoux
Bonjour,
Le calendrier Gr=E9gorien remplace le calendrier Julien en 1582. Les
Registres Paroissiaux commencent tr=E8s exceptionnellement avant 1582,
donc fonctionnent =E0 98% avec exclusivement le calendrier Gr=E9gorien
Les erreurs de saisie en d=E9pouillement font appara=EEtre des anomalies
de d=E9chiffrement ou de frappe du style 31 avril au lieu de 21 avril
par exemple ...
Je voulais voir quel jour =E9tait pr=E9f=E9r=E9 pour le mariage avant la
r=E9volution, apparemment c'=E9tait le plus souvent le mardi
J'ai utilis=E9 sous VB6 l'instruction WEEKDAY(Date, ..) qui bloque
lorsque la date n'est pas valide.
Une solution est peut =EAtre d'analyser le code d'erreur en retour d'une
action weekday, mais je ne sais pas faire (ON ERROR GOTO ... ?)
Je pense avoir r=E9pondu aux diff=E9rentes questions faites sur mon 1er
message
Michel

3 réponses

Avatar
Jean-marc
wrote:
Bonjour,
Le calendrier Grégorien remplace le calendrier Julien en 1582. Les
Registres Paroissiaux commencent très exceptionnellement avant 1582,
donc fonctionnent à 98% avec exclusivement le calendrier Grégorien
Les erreurs de saisie en dépouillement font apparaître des anomalies
de déchiffrement ou de frappe du style 31 avril au lieu de 21 avril
par exemple ...
Je voulais voir quel jour était préféré pour le mariage avant la
révolution, apparemment c'était le plus souvent le mardi
J'ai utilisé sous VB6 l'instruction WEEKDAY(Date, ..) qui bloque
lorsque la date n'est pas valide.
Une solution est peut être d'analyser le code d'erreur en retour d'une
action weekday, mais je ne sais pas faire (ON ERROR GOTO ... ?)
Je pense avoir répondu aux différentes questions faites sur mon 1er
message
Michel



Alors le plus simple est d'utiliser en conjonction Isdate et Weekday,
comme ceci:

Pour chaque Date
If IsDate(date_en_cours) Then
jour = WeekDay(...)
Else
' report date en erreur pour traitement
' correctif ou investigation
End If
Fin pour

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jean-marc
wrote:
Bonjour,
Le calendrier Grégorien remplace le calendrier Julien en 1582. Les
Registres Paroissiaux commencent très exceptionnellement avant 1582,
donc fonctionnent à 98% avec exclusivement le calendrier Grégorien
Les erreurs de saisie en dépouillement font apparaître des anomalies
de déchiffrement ou de frappe du style 31 avril au lieu de 21 avril
par exemple ...
Je voulais voir quel jour était préféré pour le mariage avant la
révolution, apparemment c'était le plus souvent le mardi
J'ai utilisé sous VB6 l'instruction WEEKDAY(Date, ..) qui bloque
lorsque la date n'est pas valide.
Une solution est peut être d'analyser le code d'erreur en retour d'une
action weekday, mais je ne sais pas faire (ON ERROR GOTO ... ?)
Je pense avoir répondu aux différentes questions faites sur mon 1er
message
Michel



Voila ce que tu peux utiliser comme fonction, sure et
propre:

Public Function DayDate(ByVal d As Variant, Optional ByVal fdow As Integer =
vbMonday) As Integer

On Error GoTo DayDate_ERR

If IsDate(d) Then
DayDate = Weekday(CDate(d), fdow)
Else
DayDate = -1
End If

DayDate_END:
Exit Function

DayDate_ERR:
DayDate = -1
Resume DayDate_END
End Function


Et pour l'utiliser:


Private Sub Command1_Click()
Dim s As String
Dim iDay As Integer

s = "17/07/1789"

iDay = DayDate(s, vbMonday)

If iDay <> -1 Then
MsgBox "Le " & s & " était un " & WeekdayName(iDay, False, vbMonday)
Else
MsgBox "Le " & s & " n'est pas une date valide"
End If

End Sub


Voila, ca devrait faire l'affaire.

Après, tu peux raffiner pour faire un traitement un peu
malin des dates invalides par catégories.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
J'ai jeté un oeil par curiosité, Weekday
n'est pas opérationnel ici, enfin, il doit l'être
(???) à partir de la réforme anglaise de 1600... ?
(toujours en retard)...

Les fonction VB de ce type sont dirigées
"gestion contemporaine", le reste il faut le faire
à la main, en code...

Voici dans l'exemple sous-cité, une erreur
flagrante de VB:

Le 16 VII 1580 à 13h00 (13h00 car à 12h00 on
change de jour en JJ), ce jour est un "samedi" en
calcul avec le JJ (Jour Julien), qui porte la
valeur : JJ 2298349,54167.
Or, pour Weekday c'est un mercredi... laisse
tomber !!!

------------------

Donc, en astronomie, toutes les dates sont
calculées en JJ, unique façon officielle !

Faut d'abord mettre toutes tes dates valides,
puis ensuite tester le jour...

Peux-tu faire voir ton fichier (gedcom, texte)
?

------------------

' test date
' OBJETS text1, 2, 3, 4 + command1
Option Explicit

Sub Form_Load()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
End Sub

Sub Command1_Click()
Dim j As Long
Dim m As Long
Dim a As Long
Dim lejour As Long
Dim ladate As Date
Dim nomjour As String
j = Text1
m = Text2
a = Text3
ladate = j & "/" & m & "/" & a
lejour = Weekday(ladate)
Select Case lejour
Case 1: nomjour = "dimanche"
Case 2: nomjour = "lundi"
Case 3: nomjour = "mardi"
Case 4: nomjour = "mercredi"
Case 5: nomjour = "jeudi"
Case 6: nomjour = "vendredi"
Case 7: nomjour = "samedi"
End Select
Text4 = nomjour
End Sub

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
a écrit dans le message
de news:

Bonjour,
Le calendrier Grégorien remplace le calendrier
Julien en 1582. Les
Registres Paroissiaux commencent très
exceptionnellement avant 1582,
donc fonctionnent à 98% avec exclusivement le
calendrier Grégorien
Les erreurs de saisie en dépouillement font
apparaître des anomalies
de déchiffrement ou de frappe du style 31 avril au
lieu de 21 avril
par exemple ...
Je voulais voir quel jour était préféré pour le
mariage avant la
révolution, apparemment c'était le plus souvent le
mardi
J'ai utilisé sous VB6 l'instruction WEEKDAY(Date,
..) qui bloque
lorsque la date n'est pas valide.
Une solution est peut être d'analyser le code
d'erreur en retour d'une
action weekday, mais je ne sais pas faire (ON
ERROR GOTO ... ?)
Je pense avoir répondu aux différentes questions
faites sur mon 1er
message
Michel