VBA problème avec fonction nombre premier
Filipensky
Messages postés
46
Statut
Membre
-
Bryan -
Bryan -
Bonjour,
J'ai un problème avec VBA Acces 2007, j'essaie de faire marcher cette fonction depuis des heures et je ne comprends pas ce que je pourrais modifier ??
' 5.9 : Les nombres premiers
Function DétermineNombrePremier(NB As Long) As Boolean
'Déclaration des variables
Dim vDiv
If DétermineNombrePremier < 4 Then
DétermineNombrePremier = True
Else
If DétermineNombrePremier = 0 Then
DétermineNombrePremier = False
Else
vDiv = 3
Do While (vDiv ^ 2 <= DétermineNombrePremier) And (DétermineNombrePremier Mod vDiv > 0)
vDiv = vDiv + 2
Loop
DétermineNombrePremier = (vDiv ^ 2 > DétermineNombrePremier)
End If
End If
End Function
Sub NombrePremier()
'Déclaration des variables
Dim vRep
Dim vNb As Long
Dim vTest As Variant
vTest = InputBox(Prompt:="Entrer un nombre", Title:="Nombre premier")
Do While vTest <> ""
If IsNumeric(vTest) Then
vNb = vTest
vRep = DétermineNombrePremier(vNb)
If vRep Then
MsgBox vNb & "est un nombre premier"
Else
MsgBox vNb & " n'est pas un nombre premier"
End If
Else
MsgBox "Vérifier votre saisie"
End If
vTest = InputBox(Prompt:="Entrer un nombre", Title:="Nombre premier")
Loop
MsgBox "Annulation de l'opération"
End Sub
Le problème est qu'il détermine à tous coups que le nombre entré est plus petit que quatre.
J'ai un problème avec VBA Acces 2007, j'essaie de faire marcher cette fonction depuis des heures et je ne comprends pas ce que je pourrais modifier ??
' 5.9 : Les nombres premiers
Function DétermineNombrePremier(NB As Long) As Boolean
'Déclaration des variables
Dim vDiv
If DétermineNombrePremier < 4 Then
DétermineNombrePremier = True
Else
If DétermineNombrePremier = 0 Then
DétermineNombrePremier = False
Else
vDiv = 3
Do While (vDiv ^ 2 <= DétermineNombrePremier) And (DétermineNombrePremier Mod vDiv > 0)
vDiv = vDiv + 2
Loop
DétermineNombrePremier = (vDiv ^ 2 > DétermineNombrePremier)
End If
End If
End Function
Sub NombrePremier()
'Déclaration des variables
Dim vRep
Dim vNb As Long
Dim vTest As Variant
vTest = InputBox(Prompt:="Entrer un nombre", Title:="Nombre premier")
Do While vTest <> ""
If IsNumeric(vTest) Then
vNb = vTest
vRep = DétermineNombrePremier(vNb)
If vRep Then
MsgBox vNb & "est un nombre premier"
Else
MsgBox vNb & " n'est pas un nombre premier"
End If
Else
MsgBox "Vérifier votre saisie"
End If
vTest = InputBox(Prompt:="Entrer un nombre", Title:="Nombre premier")
Loop
MsgBox "Annulation de l'opération"
End Sub
Le problème est qu'il détermine à tous coups que le nombre entré est plus petit que quatre.
A voir également:
- VBA problème avec fonction nombre premier
- Fonction si et - Guide
- Nombre de jours entre deux dates excel - Guide
- Fonction moyenne excel - Guide
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
Function estnbreprem(nbre As Long) As Boolean Dim cptr As Long For cptr = 2 To nbre - 1 If nbre Mod cptr = 0 Then estnbreprem = False Exit Function End If Next estnbreprem = True End Functiontesté avec 65537, nbre premier; mais ca pédale pas mal avec de plus grands nombre premiers comme 39916801
pour optimiser, pas besoin d'aller jusqu'à "nbre-1" :
il suffit de s'arrêter à int(sqrt (nbre))+1
Rémitch