VBA - Test si un nombre est pair ou impair
Nous allons écrire 4 fonctions utilisant chacune un moyen différent de déterminer la parité d'un nombre.
Avec WorksheetFunction
Utilise la fonction Excel Even
Function EstPair(Number As Long) As Boolean EstPair = (WorksheetFunction.Even(Number) = Number) End Function
Comparaison binaire
A partir du dernier chiffre (i) du nombre :
Et à l'aide de la comparaison binaire :
- si i And 1 = 0 alors i est pair
- si i And 1 = 1 alors i est impair.
Function EstPair2(Number As Long) As Boolean Dim lngTemp As Long lngTemp = CLng(Right(CStr(Number), 1)) EstPair2 = (lngTemp And 1) = 0 End Function
Notons que pour ce cas, la méthode consistant à traiter directement le nombre est plus simple et plus rapide :
Function EstPair2(Number As Long) As Boolean EstPair2 = (Number And 1) = 0 End Function
Plus rapide encore, serait de supprimer l'égalité = 0. Après tout, pour tester si un nombre est pair, on peut tester s'il est impair. S'il l'est (impair), c'est qu'il n'est pas pair...
Donc :
Function NestPasPair(Number As Long) As Boolean NestPasPair = Number And 1 End Function
Dans le code d'appel :
Dim b As Boolean b = NestPasPair(22) If b Then 'nombre impair Else 'nombre pair End If
Division par 2
Diviser par 2 :
La différence entre la partie entière et éventuellement décimale = 0 si i est pair.
Function EstPair3(Number As Long) As Boolean Dim sngTemp As Single sngTemp = Number / 2 EstPair3 = ((Int(sngTemp) - sngTemp) = 0) End Function
Modulo
En utilisant le Modulo
Function EstPair4(Number As Long) As Boolean EstPair4 = (Number Mod 2 = 0) End Function
Code d'appel
Option Explicit Sub Main_Even_Odd() Dim i As Long For i = -50 To 48 Step 7 Debug.Print i & " : EstPair ==> " & IIf(EstPair(i), "is even", "is odd") _ & " " & Chr(124) & " EstPair2 ==> " & IIf(EstPair2(i), "is even", "is odd") _ & " " & Chr(124) & " EstPair3 ==> " & IIf(EstPair3(i), "is even", "is odd") _ & " " & Chr(124) & " EstPair4 ==> " & IIf(EstPair4(i), "is even", "is odd") Next End Sub
Ce document intitulé « VBA - Test si un nombre est pair ou impair » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.