Bonjour,

J'ai ici un code VBA avec lequel je fais un comparatif entre deux valeurs pour pouvoir réaliser une boucle et insérer des données dans une table.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
rame = Replace(rs_newdef("engin").Value, " ", "")
    bloc = rs_newdef("localisation").Value
    der_def = "SELECT [context Z2N_part2].Engin, [context Z2N_part2].[Code défaut], [context Z2N_part2].[Date du défaut], [context Z2N_part2].[Heure du défaut], [context Z2N_part2].localisation, listing_defauts.Intitulé, [context Z2N_part2].heure_defaut, listing_defauts.Preconisation From [context Z2N_part2] LEFT JOIN listing_defauts ON [context Z2N_part2].[Code défaut] = listing_defauts.Code"
    der_def = der_def & " WHERE((([context Z2N_part2].engin) like " & rame & ") And (([context Z2N_part2].localisation) = '" & bloc & "') And (([context Z2N_part2].defaut) <> '" & "--" & "') and (listing_defauts.serie)='" & "Z20500" & "')"
    der_def = der_def & " ORDER BY [context Z2N_part2].[Date du défaut] DESC , [context Z2N_part2].heure_defaut DESC ;"
    Set rs_der_def = CurrentDb.OpenRecordset(der_def)
 
 
    If Not rs_der_def.EOF Then
    rs_der_def.MoveLast
    n = rs_der_def.RecordCount
    End If
 
 
    rs_der_def.MoveFirst
 
    temps_ref = Replace(Replace(Left(rs_der_def("heure_defaut").Value, 4), " ", ""), "H", "")
    temps_next = 0
 
 
    Do While temps_next <= temps_ref
    Preco = rs_der_def("Preconisation").Value
    intit = Replace(rs_der_def("intitulé").Value, "'", "/")
        If IsNull(rs_der_def("Preconisation").Value) Then Preco = ""
        If Not IsNull(rs_der_def("Preconisation").Value) Then
        Preco = Replace(rs_der_def("Preconisation").Value, "'", "/")
 
        End If
        DoCmd.RunSQL "insert into alerte_Z2N(Engin,code_defaut,date_defaut,heure_defaut,localisation,defaut,temps_defaut,preconisation) values(" & rs_der_def("Engin").Value & ",'" & rs_der_def("Code défaut").Value & "',#" & Format(rs_der_def("Date du défaut").Value, "mm/dd/yyyy") & "#,'" & rs_der_def("Heure du défaut").Value & "','" & rs_der_def("Localisation").Value & "','" & intit & " ' ,'" & rs_der_def("Heure_defaut").Value & "','" & Preco & "');"
 
        temps_ref = Replace(Replace(Left(rs_der_def("heure_defaut").Value, 4), " ", ""), "H", "")
 
        rs_der_def.MoveNext
        temps_next = Replace(Replace(Left(rs_der_def("heure_defaut").Value, 4), " ", ""), "H", "")
 
    Loop
Le truc c'est que pour la première boucle (quand rame = 145 et donc rs_der_def.("Engin").value = 145 par exemple), mon recordcount me renvoie 55 enregistrements .... donc normalement je devrais rentrer 55 valeurs dans ma table ...

Or, au bout de 4 enregistrements, je sors de la boucle ...

La condition
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Do While temps_next <= temps_ref
reste malgré celà valide (je me fais sortir quand temps_next = 958 et temps_ref = 1115; on reste donc bien temps_next <= temps_ref !)

Je ne comprends donc pas pourquoi je sors de la boucle malgré que la condition soit vraie ...

Est ce une histoire de format ?

Je vous remercie d'avance de l'aide que vous pourriez m'apporter !