Fontion test ne marche pas

bl1919 Messages postés 37 Date d'inscription samedi 30 juillet 2011 Statut Membre Dernière intervention 23 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:
'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) 

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.



merci d'avance

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
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..
0
Utilisateur anonyme
17 août 2011 à 14:17
Salut Bl,

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


CF2i - Guadeloupe
Ingénierie Informatique
0
Rejoignez-nous