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 :

Problème avec les nombres périodiques


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut Problème avec les nombres périodiques
    Bonjour,

    je travaille sur un projet de calculateur pour la vidéo et je suis tombé sur un petit problème avec les nombres périodiques que je ne peux résoudre je me suis dis que certains d'entre vous sauraient peut-être comment.

    Voici le code(simplifié):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub findratio()
     
    Dim searchint As Single
    searchint = 0
     
    Do
    searchint = searchint + 1
    Loop Until Int(Range("F3") * searchint) / (Range("F3") * searchint) = 1
     
    MsgBox searchint * Range("F3") & "/" & searchint
     
    End Sub
    En vidéo les ratios sont souvent exprimé comme un nombre au lieu d'une fraction. il est cependant plus facile de visualiser le ratio lorsqu'il est en fraction, le code ci-dessus est comment je suis parvenu à identifier la fraction à partir du nombre. Lorsque le nombre en F3 est 1.5 la boîte de dialogue affiche 3/2, tout vas bien. Cependant lorsque le nombre est périodique (1.3333.....) la boucle est évidemment sans fin, pourtant un ratio de 1.333333.... donne 4/3.

    Comment modifier mon code afin d'éviter une boucle sans fin?

    merci de considérer mon problème et merci à ceux qui tenteront de le résoudre

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    et en jouant sur les formats...?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Excel.WorksheetFunction.Text(Range("D1").Value, "?/?")

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut trouvé!
    Pour ceux que ça intéresse ou qui chercherais une solution dans le futur, il suffit d'avoir une tolérance, très faible et d'arrondir le résultat.

    Voici le code qui en résulte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub findratio()
     
    Dim searchint As Single
    searchint = 0
     
    Do
    searchint = searchint + 1
    Loop Until Int(Range("F3") * searchint) / (Range("F3") * searchint) >= 0.99 And Int(Range("F3") * searchint) / (Range("F3") * searchint) <= 1.01
     
    searchint = Round(searchint)
     
    MsgBox Round(searchint * Range("F3")) & "/" & searchint
     
    End Sub
    Donc une résolution de 1024x768 qui donne un ratio de 1.333333... (que l'on retrouvera en F3 selon mon code), retournera une fraction de 4/3, une résolution de 1920x1080 (1.777777...) retournera une résolution de 16/9 et ainsi de suite.

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

Discussions similaires

  1. [VB6]Problème avec les Nombres de ma BD
    Par jfdmagic dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 04/07/2009, 12h40
  2. problème avec les nombres décimaux
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2008, 11h09
  3. Problème avec les nombres à virgule
    Par Lapicure dans le forum Modélisation
    Réponses: 5
    Dernier message: 01/06/2007, 16h37
  4. [débutant] problème avec les nombres aléatoires
    Par happylife925 dans le forum Débuter
    Réponses: 12
    Dernier message: 10/03/2006, 16h47
  5. problème avec les nombres à virgule
    Par shingo dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2006, 19h30

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