0
Merci

Quelques mots de remerciements seront grandement appréciés.

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
0
Merci

Quelques mots de remerciements seront grandement appréciés.

Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche
et directeur délégué au développement numérique du groupe Figaro.

A voir également

Publié par . Dernière mise à jour le par pijaku.

Ce document intitulé «  VBA - Test si un nombre est pair ou impair  » issu de CommentCaMarche (https://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.

0 Commentaire