bl1919
Messages postés37Date d'inscriptionsamedi 30 juillet 2011StatutMembreDernière intervention23 août 2011
-
17 août 2011 à 12:23
Utilisateur anonyme -
17 août 2011 à 14:17
bonjour,
je vous résume mon mon problème:
j'ai fait une fonction booléenne qui va retournée vrai si une carte est testée et faux si cette dernière ne l'est pas.pour ce faire j'ai eu l'idée de pointer mon programme sur le fichier contenant le suivi des test. A chaque passage au test le fichier de suivi se modifie en écrivant le temps et le numéro de la dernière carte donc sa taille va se modifier donc mon idée consiste à pointer sur ce fichier et lorsqu'il se modifie ma fonction prendra la valeur vraie.
dans le suivi il peut y avoir plusieurs produits différent donc il peut y avoir plusieurs fichiers.donc j'ai eu recours à l'utilisation d'une comparaison des date de modification.
pour cette comparaison voici la fonction à laquelle je fait appel:
Public Function Date_Compare(t1 As Date, t2 As Date) As Long
Dim ReturnValue As Long
Dim diff_days1 As Integer
Dim diff_days2 As Integer
Dim diff_hours1 As Integer
Dim diff_hours2 As Integer
Dim diff_minutes1 As Integer
Dim diff_minutes2 As Integer
Dim diff_seconds1 As Integer
Dim diff_seconds2 As Integer
Dim d As Date
d = Now
diff_days1 = DateDiff(dateInterval.Day, d, t1)
diff_days2 = DateDiff(dateInterval.Day, d, t2)
diff_hours1 = DateDiff(dateInterval.hour, d, t1)
diff_hours2 = DateDiff(dateInterval.hour, d, t2)
diff_minutes1 = DateDiff(dateInterval.Minute, d, t1)
diff_minutes2 = DateDiff(dateInterval.Minute, d, t2)
diff_seconds1 = DateDiff(dateInterval.Second, d, t1)
diff_seconds2 = DateDiff(dateInterval.Second, d, t2)
If diff_days1 - diff_days2 > 0 Then
ReturnValue = 1
ElseIf diff_days1 - diff_days2 < 0 Then
ReturnValue = -1
Else
If diff_hours1 - diff_hours2 > 0 Then
ReturnValue = 1
ElseIf diff_hours1 - diff_hours2 > 0 Then
ReturnValue = -1
Else
If diff_minutes1 - diff_minutes2 > 0 Then
ReturnValue = 1
ElseIf diff_minutes1 - diff_minutes2 < 0 Then
ReturnValue = -1
Else
If diff_seconds1 - diff_seconds > 0 Then
ReturnValue = 1
ElseIf diff_seconds1 - diff_seconds2 < 0 Then
retunvalue = -1
Else
ReturnValue = 0
End If
End If
End If
End If
Date_Compare = ReturnValue
End Function
ensuite voici le code permettant de récupérer la valeur booléenne décrite ci-dessus:
Private Function testing() As Boolean
Dim max As Date
Dim chemin_fixe As String
Dim chemin_var1 As String
Dim chemin_var21 As String
Dim chemin_var22 As String
Dim chemin_var23 As String
Dim mon_chemin1 As String
Dim mon_chemin2 As String
Dim mon_chemin3 As String
Dim test As Boolean
'Dim temps_lvb2 As Date
'Dim temps_bbox As Date
'Dim temps_boxer As Date
'Dim temps_lvbg As Date
Dim produit As String
chemin_fixe = "C:\\ifr\\users\\opertor\\trs"
chemin_var1 = CStr(Date)
chemin_var21 = produit & "" & "tps_man_" & produit
chemin_var22 = produit & "" & "tps_test_" & produit
chemin_var23 = produit & "" & "tps_pan_" & produit
mon_chemin1 = chemin_fixe & "" & chemin_var1 & "" & chemin_var21
mon_chemin2 = chemin_fixe & "" & chemin_var1 & "" & chemin_var22
mon_chemin3 = chemin_fixe & "" & chemin_var1 & "" & chemin_var23
Select Case produit
Case Is = "livebox2"
temps_lvb2 = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & livebox2)
max = temps_lvb2
Case Is = "bbox_mere"
temps = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
If Date_Compare(max, temps_bbox) >= 0 Then
max = temps_bbox
End If
Case Is = "boxer"
temps_boxer = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
If Date_Compare(max, temps_boxer) >= 0 Then
max = temps_boxer
End If
Case "liveboxgreen"
temps_lvbg = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
If Date_Compare(max, temps_lvbg) >= 0 Then
max = temps_lvbg
End If
End Select
'12 produit encore à declarer
Select Case produit
'point d'arrêt
Case Is = "livebox2"
'point d'arrêt
If temps_lvb2 = max Then
'point d'arrêt
If Date_Compare(FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit), temps_lvb2) > 0
'point d'arrêt Then
temps_lvb2 = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
'point d'arrêt
End If
End If
Case Is = "bbox_mere"
If temps_bbox = max Then
If Date_Compare(FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit), temps_bbox) > 0 Then
temps_bbox = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
test = True
End If
End If
Case Is = "boxer"
If temps_boxer = max Then
If Date_Compare(FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit), temps_boxer) > 0 Then
temps_boxer = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
test = True
End If
End If
Case Is = "liveboxgreen"
If temps_lvbg = max Then
If Date_Compare(FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit), temps_lvbg) > 0 Then
temps_lvbg = FileDateTime(chemin_fixe & "" & chemin_var1 & "" & produit)
test = True
End If
End If
End Select
testing = test
End Function
j'ai mis des points d'arrêt pour localisé le problème alors j'ai trouver que le programme saute les deux lignes suivantes:
pour les variable qui ne sont pas déclarées dans la fonction sont toutes déclarées comme étant des variables globales.
s'il y a quelque chose qui n'est pas claire dites le moi j'essayerais de vous éclaircir pour que vous puissiez m'éclaircir.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 août 2011 à 13:45
Salut
Il saute des lignes ?
Remarque qu'il manque le Then final de la première ligne.
-1- Supprime TOUS les "On Error Resume Next" de ton programme qui masqueraient les erreurs.
Cette méthode n'est à utiliser que dans des cas bien particuliers.
-2- Lance ton programme avec Ctrl-F5 et pas F5 afin que la compilation ait lieu avant le lancement et pas au fur et à mesure du passage sur les lignes.
Que valent les variables de ces lignes au moment du saut ?
Si tu as fait un point d'arrêt, as-tu suivi ce que fait le programme, en execution pas à pas avec F8 ?
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
lolokun
Messages postés1241Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention27 août 20137 17 août 2011 à 14:08
Bonjour,
pas eu le temps de tout décortiquer mais ce code me paraît plutot embrouillé, beaucoup de variables... Peut-etre faut-il faire attention au format des dates
Et je vois qu'il y a 2
select case produit
à la suite..
L'expérience, c'est une connerie par jour, mais jamais la même..
Juste au premier coup œil deux fautes de frappe das ta fonction:
Else
If diff_seconds1 - diff_seconds > 0 Then
ICI:
ReturnValue = 1
ElseIf diff_seconds1 - diff_seconds2 < 0 Then
retunvalue = -1
ET ICI:
Else
ReturnValue = 0
End If