IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Utilisation de MOD/nb premiers


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut Utilisation de MOD/nb premiers
    Salut tout le monde! Je veux écrire une macro qui vérifie si chaque nombre de la plage sélectionnée est premier et si c'est le cas le reécrit en rouge. Voici la macro que j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Premier()
    Dim Cellule As Object
    For Each Cellule In Selection
        i = 2
        Do While ActiveCell.Value Mod i <> 0
        If ActiveCell.Value Mod i = 0 Then Cellule.Font.Color = vbBlack Else Cellule.Font.Color = vbRed
        i = i + 1
        Loop
    Next Cellule
    End Sub
    Est ce que quelqu’un voit d'où viens l'erreur? Pouvez vous me corriger?? Merci!

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Premier()
    Dim NotPrem As Boolean
    Dim Cellule As Range
    Dim i As Integer
     
    For Each Cellule In Range("A1:A100")
        i = 2
        Do While i < Cellule.Value
            If Cellule.Value Mod i = 0 Then
                NotPrem = True
                Exit Do
            End If
            i = i + 1
        Loop
        Cellule.Font.Color = IIf(NotPrem, vbBlack, vbRed)
        NotPrem = False
    Next Cellule
    End Sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    Merci beaucoup pour votre aide... J'ai passé 4 heures dessus... Comme quoi quand on débute... Si j'ai bien compris, il faut d'abord tester si le nombre est premier et seulement d'abord opérer les changement?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    La logique est à une approximation près: on teste si le nombre est non premier alors on sort de la boucle Do.

    Ensuite la boucle n'est pas infinie Do (comme la tienne) puisqu'on boucle tant que i est strictement inférieur la valeur de la cellule.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    oui j'ai compris que ma boucle ne s'arrêtait jamais mais je pensait que c'était à cause du MOD qui n'effectuait pas l'opération je ne sais pour quelle raison. Quand j'ai testé ma macro en pas détaillé, la macro n'affectait jamais la bonne valeur à cellule.value mod i... En tout cas encore un grand merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/12/2011, 15h58
  2. premiere utilisation de flash et déjà perdue
    Par mawygolote dans le forum Flash
    Réponses: 1
    Dernier message: 14/05/2008, 13h35
  3. Utiliser la valeur du premier enregistrement d'une table comme critère
    Par le_gueux90 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 25/03/2008, 15h55
  4. créer son premier site et utiliser un theme
    Par jojo_ol76 dans le forum Débuter
    Réponses: 9
    Dernier message: 19/01/2008, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo