Menu
Donnez votre avis

VBA - Test si un nombre est pair ou impair

Posez votre question



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

Publié 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.

Ajouter un commentaire

Commentaires

Commenter la réponse de Utilisateur anonyme