Validation de Dates (suite)

Le
michel.arnoux
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #16338791
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_' ;
Jean-marc
Le #16338911
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_' ;
LE TROLL
Le #16339301
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
------------------------------------------------------------------------------------
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
Publicité
Poster une réponse
Anonyme