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
| Public Sub Trouver2MinChamps()
Dim rs As DAO.Recordset, rsFinal As DAO.Recordset
Dim Min1 As Double, Min2 As Double
Dim MinInd1 As Integer, MinInd2 As Integer, i As Integer
Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset)
Set rsFinal = CurrentDb.OpenRecordset("Table2", dbOpenDynaset)
With rs
While Not .EOF 'Parcourir tous les enregistrements
Min1 = .Fields(0) 'Trouver le premier minimum
For i = 1 To 4 'Parcourir les 5 champs de la table 1
If .Fields(i) < Min1 Then 'Comparer avec le minimum précédent
Min1 = .Fields(i) 'Attribuer les valeurs et les index minimum
MinInd1 = i
End If
Next i
Min2 = .Fields(0) 'Trouver le deuxième minimum
For i = 1 To 4
If .Fields(i) < Min2 And i <> MinInd1 Then 'Comparer avec le précédent et que l'index soit différent
Min2 = .Fields(i)
MinInd2 = i
End If
Next i
'Debug.Print MinInd1, Min1, MinInd2, Min2
'Supprimer les données de la table finale Table2
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Table2"
DoCmd.SetWarnings True
'Ajouter les valeurs dans la table finale Table2
rsFinal.AddNew
rsFinal![Mini1] = Min1
rsFinal![Mini2] = Min2
rsFinal.Update
.MoveNext
Wend
End With
rsFinal.Close
Set rsFinal = Nothing
rs.Close
Set rs = Nothing
End Sub |
Partager