Fonction carré parfait VBA

Bonjour tout le monde, je cherche à écrire une fonction VBA qui me permet de dire si un nombre est un carré parfait.

exemple :

=isPerfectSquare (10) → FALSE

=isPerfectSquare (9) →TRUE

mon code ressemble à ça pour le moment :

Function isPerfectSquare(num As Long) As Boolean

Dim i As String

If Sqr(num) = integer Then 'c'est la le problème

i = True

Else

i = False

End If

isPerfectSquare = i

End Function

Merci d'avance à tous !

Bonjour

Teste comme ceci

Function isPerfectSquare(num As Long) As Boolean
  Dim i As String
    If Sqr(num) - Round(Sqr(num), 1) = 0 Then 'soustrait le résultat de la racine carré de son arrondi
      i = True
    Else
      i = False
    End If
  isPerfectSquare = i
End Function

Bonjour kiboubou,

Je te propose une fonction inspirée de celle de M12 :

Function isPerfectSquare(num As Long) As Boolean
  isPerfectSquare = Sqr(num) - Round(Sqr(num), 1) = 0 'soustrait le résultat de la racine carré de son arrondi
End Function

@M12 : au lieu de Dim i As String c'est : Dim i As Boolean

Cordialement

Re,

Bonjour Dhany,

Et cela change quoi au résultat (mise à part le nb ligne de code)

Bonjour M12,

M12 a écrit :

Et cela change quoi au résultat (mis à part le nombre de lignes de code) ?

Oh, ben je sais pas... une idée, juste comme ça, en passant dans l'coin.

non, sans rire, justement, tout est là, dans le nombre de lignes de code :

Il me semblait que passer de 7 lignes de code à une seule (corps de la macro)

était quelque chose d'assez appréciable, sans parler d'éviter d'utiliser une

variable i supplémentaire (même avec son type corrigé en boolean).

Mais je m'suis p't'être trompé ? si oui, toutes mes excuses... n'en parlons plus ; sans rancune, j'espère ?

surtout qu'je suis un des premiers à reconnaître que tu fais de très bons codes VBA. (sincèrement !)

Cordialement

Merci beaucoup pour vos réponses, ça marche super bien !! J'ai trouvé une autre manière de le faire encore :

Function isperfectsquare(num As Long) As Boolean

Dim temp As Double

Dim temp2 As Integer

temp = Sqr(num)

temp2 = Sqr(num)

If temp = temp2 Then

isperfectsquare = True

Else

isperfectsquare = False

End If

End Function

J'avais raccourci le code VBA, et toi tu l'allonges encore plus ??? mais bon, si ça peut te faire plaisir, pourquoi pas ?

Haha j'ai bien utilisé ton code, il est plus efficace mais je voulais juste montrer une autre manière de résoudre le problème, ça fait pas de mal

Bonjour kiboubou,

Tu a écrit :

j'ai bien utilisé ton code, il est plus efficace

Merci de l'avoir confirmé.


Tu a écrit :

je voulais juste montrer une autre manière de résoudre le problème, ça fait pas de mal

Non, effectivemeent, et dans ce sens, tu as bien fait.


Sauf si tu as besoin d'autre chose, merci de clôturer le fil en cliquant sur la coche verte V

qui se trouve près du bouton EDIT.

Cordialement

Rechercher des sujets similaires à "fonction carre parfait vba"