Bien le bonjour a tous,
Je me demandait quel elle le code le mieux optimiser quand ont veut faire beaucoup de comparaison, j'ai trois solution:
ou
Ou le code avec l'instruction case.
D'apres vous quel est la meilleur solution?
Je me demandait quel elle le code le mieux optimiser quand ont veut faire beaucoup de comparaison, j'ai trois solution:
Code:
Function correspondanceDN(DN As Single) As Byte
Dim i As Byte
Dim j As Byte
j = 14
If (DN = 0.5) Then i = j
ElseIf (DN = 0.75) Then i = j + 1
ElseIf (DN = 1) Then i = j + 2
ElseIf (DN = 1.5) Then i = j + 3
ElseIf (DN = 2) Then i = j + 4
ElseIf (DN = 2.5) Then i = j + 5
ElseIf (DN = 3) Then i = j + 6
ElseIf (DN = 4) Then i = j + 7
ElseIf (DN = 5) Then i = j + 8
ElseIf (DN = 6) Then i = j + 9
ElseIf (DN = 8) Then i = j + 10
ElseIf (DN = 10) Then i = j + 11
ElseIf (DN = 12) Then i = j + 12
ElseIf (DN = 14) Then i = j + 13
ElseIf (DN = 16) Then i = j + 14
ElseIf (DN = 18) Then i = j + 15
ElseIf (DN = 20) Then i = j + 16
ElseIf (DN = 22) Then i = j + 17
ElseIf (DN = 24) Then i = j + 18
ElseIf (DN = 26) Then i = j + 19
ElseIf (DN = 28) Then i = j + 20
ElseIf (DN = 30) Then i = j + 21
ElseIf (DN = 32) Then i = j + 22
ElseIf (DN = 34) Then i = j + 23
ElseIf (DN = 36) Then i = j + 24
ElseIf (DN = 38) Then i = j + 25
ElseIf (DN = 40) Then i = j + 26
ElseIf (DN = 42) Then i = j + 27
ElseIf (DN = 44) Then i = j + 28
ElseIf (DN = 46) Then i = j + 29
ElseIf (DN = 48) Then i = j + 30
Else: MsgBox ("Cette valeur de diametre nominal n'existe pas!")
End If
correspondance = i
End Function
ou
Code:
Function correspondanceDN(DN As Single) As Byte
Dim i As Byte
Dim j As Byte
j = 14
If (DN <= 18) And (DN > 0) Then
If (DN <= 4) Then
If (DN <= 2) Then
If (DN = 0.5) Then i = j
ElseIf (DN = 0.75) Then i = j + 1
ElseIf (DN = 1) Then i = j + 2
ElseIf (DN = 1.5) Then i = j + 3
ElseIf (DN = 2) Then i = j + 4
End If
Else
If (DN = 2.5) Then i = j + 5
ElseIf (DN = 3) Then i = j + 6
ElseIf (DN = 4) Then i = j + 7
End If
End If
Else
If (DN <= 12) Then
If (DN = 5) Then i = j + 8
ElseIf (DN = 6) Then i = j + 9
ElseIf (DN = 8) Then i = j + 10
ElseIf (DN = 10) Then i = j + 11
ElseIf (DN = 12) Then i = j + 12
End If
Else
If (DN = 14) Then i = j + 13
ElseIf (DN = 16) Then i = j + 14
ElseIf (DN = 18) Then i = j + 15
End If
End If
End If
ElseIf (DN <= 48) And (DN > 0) Then
If (DN <= 32) Then
If (DN <= 26) Then
If (DN = 20) Then i = j + 16
ElseIf (DN = 22) Then i = j + 17
ElseIf (DN = 24) Then i = j + 18
ElseIf (DN = 26) Then i = j + 5
End If
Else
If (DN = 28) Then i = j + 6
ElseIf (DN = 30) Then i = j + 7
ElseIf (DN = 32) Then i = j + 8
End If
End If
Else
If (DN <= 40) Then
If (DN = 34) Then i = j + 9
ElseIf (DN = 36) Then i = j + 10
ElseIf (DN = 38) Then i = j + 11
ElseIf (DN = 40) Then i = j + 12
End If
Else
If (DN = 42) Then i = j + 13
ElseIf (DN = 44) Then i = j + 14
ElseIf (DN = 46) Then i = j + 15
ElseIf (DN = 48) Then i = j + 16
End If
End If
End If
Else: MsgBox ("Cette taille de joint n'existe pas!")
End If
correspondanceDN = i
End Function
Ou le code avec l'instruction case.
D'apres vous quel est la meilleur solution?