Programmation VBA

Bonjour à tous

je souhaite tester sur excel si un nombre est premier , en lançant une macro écrité en VBA.

J'ai des connaissances très basiques en VBA, et ce serait pour moi l'occasion de m'entraîner sur un cas assez simple.

1/ Comment faire le lien entre la cellule dans laquelle le nombre et sasisi et le script VBA

2/ Il faut tester que

a/ si le nombre est pair, End Function

b/si le nombre est impair, on divise par la variable dim initialisée à 3, variable qui est augmentée de 2

TANT QUE le reste est non nul. Si le reste est nul et que le quotient est supérieur au diviseur, alors le nombre n'est pas premier, End Function.

Si on a pas obtenu de reste nul et que le quotient devient inférieur au diviseur (la variable), alors le nombre est premier.

Merci de m'aider à intégrer cette procédure VBA dans ma feuille excel de test.

Par avance, merci pour votre aide et vos conseils.

Bonjour,

si tu pouvais transmettre un fichier exemple cela faciliterai les réponses.

Un élément de réponse, on peut créer une macro utilisant la fonction Modulo.

Sub pair()

pair=range("A1").value Mod(2)

if pair=0 then Msgbox"pair" else Msgbox "impair"

End sub

Cordialement

Bonjour

Comme dit sur ce site

https://monsieur-excel.blogspot.fr/2009/01/ce-nombre-est-il-un-nombre-premier.html

pourquoi une macro, puisqe cetteformule matricielle fait cela (jusqu'au nb de lignes de ta feuille)

=SI(OU(A1=1;A1=2;A1=3);"Premier";SI(ET((MOD(A1;LIGNE(INDIRECT("2:"&A1-1)))<>0));"Premier";""))

Cordialement

Bonjour Amadeus,

bien vu, mais comme pppa souhaitait" tester sur excel si un nombre est premier , en lançant une macro écrité en VBA."

Et sincèrement, je n'aurai pas su écrire cette formule.

Encore une fois.... bien vu

Merci à tous

dans un premier temps je vais m'intéresser à la suggestion de Amadeus et au document en lien (NB : 1 n'est pas un nbre premier, mais bon, c'est le cas de nombres plus grands qui m'intéresse).

Pr une programmation en VBA, qui doit me servir d'exercice, je pense que je vais finir par y arriver, au besoin je resolliciterai votre aide en vous joignant ce que j'aurai déjà ecrit comme script.

A bientôt donc.

bien cordialmeent

Bonjour

je vous joins ce que j'ai écrit : sur le fond, il y a encore des améliorations, pr l'instant je teste la forme, pouvez-vs svp me dire ce qui ne va pas ds l'écriture de la fonction MODULO.

J'ai fait une recherche sur google, et les sites visités sont soit trop centrés sur un sujet donné (autres forums) , soit imprécis.

Est-ce que l'imbrication de Do ...loop ds If Then Else est autorisée ? (Cf fichier joint)

merci de m'aider

48sub-testnbprem.zip (5.43 Ko)

Voici le script (PJ) de ce que j'ai écrit

Ca ne fonctionne pas

Pouvez-vs svp m'expliquer et me corriger

Merci pour votre aide

bien cordialement

19sub-testnbprem.zip (5.49 Ko)

Bonjour

En cherchant un peu

Je t'ai mis quelques commentaires

Sub TestNbPrem()
Dim I As Integer
Dim Limite As Integer
Dim MyCell As Long

  MyCell = Cells(2, 1).Value

  I = 1
  ' Comme cela on testera en premier avec 3

  Limite = Int(Sqr(MyCell))
  ' Plus la peine de chercher au delà de cette limite

  If MyCell Mod 2 = 0 Then          ' Le Then est sur la même ligne que le If
    MsgBox "Le nombre est pair"
  Else
    Do
      I = I + 2
    Loop Until (MyCell Mod I = 0) Or (I > Limite)
    ' Boucle jusqu'à ce que l'on a un reste de 0 ou si la limite est dépassée
    If I > Limite Then
      ' On vérifie la condition de sortie de la boucle
      MsgBox "Le nombre est premier"
    Else
      MsgBox "Le nombre n'est pas premier"
    End If
  End If
End Sub

J'ai trouvé ça aussi

  • aucun nombre premier n'est pair sauf un
  • aucun nombre premier n'est pair sauf deux

>> Banzaï

Bonjour

un grand merci pour votre aide nocturne très efficace.

Sachez que ce script me servira de modèle de base pour de futures utilisations (même si je resterais tjs un utilisateur occasionnel de la programmation VBA), et que ce que vs m'avez envoyè m'a été directement bien plus utile pour finaliser mon fichier que la dizaine de ressources que j'ai consultées (qui peuvent s'avérer utiles dans le cadre d'uin cours suivi et dédié, je ne les dénigre pas) et qui restaient trop générales ou par contre trop concentrées sur un cas précis qui ne correspondait que de loin au mien....

Sur le fond, je n'aurais pas pensé à la fonction Sqr.... mais preuve est faite que vous avez raison.

Enfin, un dernière question de forme ; dans le bloc d'instructions

If Then Else

, il est obligatoire (en VBA) que Then soit le dernier mot sur la même ligne que If ?

Merci de me dire

Bien cordialement

Bonjour

pppa a écrit :

il est obligatoire (en VBA) que Then soit le dernier mot sur la même ligne que If ?

Pas obligatoire (d'être le dernier)

If Range("A1") = "A" Then Range("B1") = "B": Range("C1") = "B" Else Range("B1") = "C": Range("C1") = "C"
Rechercher des sujets similaires à "programmation vba"