2 pièce(s) jointe(s)
problème avec condition If et And
Bonjour tout le monde,
J'ai un problème avec une condition If qui réagit bizarrement
Dans un formulaire, je teste des formats saisis pour les comparer à des formats de machine de manière à ce qu'il n'y ai pas d'erreur
voici le code :
Code:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| Private Sub ft_mini_maxi()
'comparaison avec format mini maxi machine
Dim strSql1 As String
Dim strSql2 As String
Dim strSql3 As String
Dim strSql4 As String
Dim format_mini_h As Integer
Dim format_mini_l As Integer
Dim format_maxi_h As Integer
Dim format_maxi_l As Integer
Dim mon_tirage_hauteur As Integer
Dim mon_tirage_largeur As Integer
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim rs4 As DAO.Recordset
strSql1 = "SELECT TBL_machine_offset.Ft_min_hauteur, machtps.N° FROM TBL_machine_offset INNER JOIN machtps ON TBL_machine_offset.num_machine_offset = machtps.num_machine WHERE (((machtps.N°)=" & Me.N° & "));"
strSql2 = "SELECT TBL_machine_offset.Ft_min_largeur, machtps.N° FROM TBL_machine_offset INNER JOIN machtps ON TBL_machine_offset.num_machine_offset = machtps.num_machine WHERE (((machtps.N°)=" & Me.N° & "));"
strSql3 = "SELECT TBL_machine_offset.Ft_max_hauteur, machtps.N° FROM TBL_machine_offset INNER JOIN machtps ON TBL_machine_offset.num_machine_offset = machtps.num_machine WHERE (((machtps.N°)=" & Me.N° & "));"
strSql4 = "SELECT TBL_machine_offset.Ft_max_largeur, machtps.N° FROM TBL_machine_offset INNER JOIN machtps ON TBL_machine_offset.num_machine_offset = machtps.num_machine WHERE (((machtps.N°)=" & Me.N° & "));"
Set rs1 = CurrentDb.OpenRecordset(strSql1)
Set rs2 = CurrentDb.OpenRecordset(strSql2)
Set rs3 = CurrentDb.OpenRecordset(strSql3)
Set rs4 = CurrentDb.OpenRecordset(strSql4)
format_mini_h = rs1("Ft_min_hauteur").Value
format_mini_l = rs2("Ft_min_largeur").Value
format_maxi_h = rs3("Ft_max_hauteur").Value
format_maxi_l = rs4("Ft_max_largeur").Value
mon_tirage_hauteur = Me.ft_tirage_haut.Value
mon_tirage_largeur = Me.ft_tirage_larg.Value
'comparaison format mini
If mon_tirage_hauteur < format_mini_h Or mon_tirage_largeur < format_mini_l _
And mon_tirage_hauteur < format_mini_l Or mon_tirage_largeur < format_mini_h Then
MsgBox "le format papier indiqué est plus petit que le format minimum de la machine sélectionnée" & vbCrLf & "veuillez saisir un format approprié", vbOKOnly + vbDefaultButton1 + vbExclamation, "problème de format papier"
Me.ft_tirage_haut.SetFocus
End If
'comparaison format maxi
If mon_tirage_hauteur > format_maxi_h Or mon_tirage_largeur > format_maxi_l _
And mon_tirage_hauteur > format_maxi_l Or mon_tirage_largeur > format_maxi_h Then
MsgBox "le format papier indiqué est plus grand que le format maximum de la machine sélectionnée" & vbCrLf & "veuillez saisir un format approprié", vbOKOnly + vbDefaultButton1 + vbExclamation, "problème de format papier"
Me.ft_tirage_haut.SetFocus
End If
rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing
rs3.Close
Set rs3 = Nothing
rs4.Close
End Sub |
la comparaison au format minimum fonctionne très bien, aucun problème
par contre la comparaison au format maximum délire complètement et je n'y comprends rien.
la machine testée à un format maxi de 520 x 740, je fais le test en indiquant 450 x 640 et la condition se vérifie alors qu'elle ne le devrait pas (voir copie d'écran)
très sincèrement je n'y comprends plus rien et ça commence vraiment à me rendre chèvre.
si quelqu'un avait une idée je serais preneur.
Merci d'avance