Bon ben y'en a deja surement 10 000 des sources pour ca, mais c'ets pour eviter aux newbee de faire des bocules qui mettent 10 000 ans a tourner.
De plus y'a des remarques et des questions sur l'optimisation des lignes de code.
Voili voilo
Source / Exemple :
'Vous devez creer :
' un TextBox : Text1
' un commandbutton cmdFactoriser
Dim div, nbr, nbrdiv As Long
Dim Lst() As Long
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 And KeyAscii <> 8 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub cmdFactoriser_Click()
'Initialisation : on rappelle que 1 n'est pas consideré comme un nombre premier
ReDim Lst(0)
nbr = Val(Text1.Text)
div = 2
nbrdiv = 0
Text2.Text = ""
If nbr < 2 Then MsgBox "Quel utilité de calculer ? "
Text1.Locked = True
cmdFactoriser.Enabled = False
'Le Caption du label3 sera toujours égale a "En Travail :"
'Un autre label ( le 4) indiquera à droite du label3 le nombre
'Ca évitera au pc d'avoir a rajouter a chaque fois "En travail :"
Label3.Caption = "En travail : Test du diviseur :"
While div <= Sqr(nbr) 'Rajouter Int() ralenti t'il le test ? Mais sans Int() le test s'effectue sur des nombre de type single... ce qui ralenti ) A voir ...
Label4.Caption = div & " sur " & Int(Sqr(nbr))
'Plusieurs possiblités :
' --> If nbr/div =int(nbr/div) Then
' --> If nbr mod div Then
' --> If nbr-(nbr\div)*div Then
If nbr / div = Int(nbr / div) Then
Lst(nbrdiv) = div
nbrdiv = nbrdiv + 1
ReDim Preserve Lst(nbrdiv)
nbr = nbr / div
div = div - 1 ' si nbr multiple de 4 ? il faut retester "2"
End If ' On enleve donc 1 ...
div = div + 1 ' pour le rajouter la . resultat : aucun ( ou alors incremente )
DoEvents
Wend
If nbr Then
For div = 0 To nbrdiv - 1
Text2 = Text2 & Lst(div) & " * "
Next div
Text2 = Text2 & nbr
Else
MsgBox " Votre nombre est premier !"
End If
Text1.Locked = False
cmdFactoriser.Enabled = True
Label3.Caption = "Factorisation terminée."
End Sub
Conclusion :
bon ben si vous avez plus rapide hein ... no pb je suis preneur !
-={[ ZeroCool ]}=-
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.