Nombre premier Excel VBA
Gaetan
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Salut à tous, je n'arrive pas à comprendre ce qui bugg dans mon script VBA: je cherche à trouver les nombres premiers et à les colorier en jaune dans ma feuille excel:
Merci d'avance ;)
For Each cell In Selection
For n = 2 To n = (cell.Value - 1)
If (cell.Value / n) - Int(cell.Value / n) = 0 Then
cell.Interior.Color = vbWhite
Else: cell.Interior.Color = vbYellow
End If
Next
Next
Merci d'avance ;)
4 réponses
-
Salut, essaye comme ça:
For Each cell In Selection For n = 2 To cell.Value - 1 If (cell.Value / n) - Int(cell.Value / n) = 0 Then cell.Interior.Color = vbWhite Exit For Else cell.Interior.Color = vbYellow End If Next Next -
Bonjour à tous
Et pour aller un petit peu plus vitenmax = Sqr(cell.Value)
For n = 2 To nmax
Cdlmnt -
Bonjour,
Pour ne répondre qu'à ta question : si tu suis ton code en pas à pas, ta cellule peut changer plusieurs fois de couleur mais prendra toujours sa couleur finale par rapport à Cell.Value - 1, qui n'est pas un diviseur de Cell.Value.
Le code de Yoda permet de sortir de la boucle dès qu'un diviseur est trouvé.
A+ -
Bonjour tout le monde,
Ou alors, en nous servant de toutes ces excellentes réponses, on peut construire une fonction personnalisée.
Cette fonction pourra servir aussi bien dans la feuille que dans le code.
Dans le code :
Appel :For Each cell In Selection If EstPremier(cell) Then cell.Interior.Color = vbWhite Else: cell.Interior.Color = vbYellow End If Next
Fonction :Function EstPremier(Nb As Integer) As Boolean Dim i As Long For i = 2 To Sqr(Nb) If Nb Mod i = 0 Then EstPremier = False: Exit Function Next i EstPremier = True End Function
🎼 Cordialement,
Franck 🎶