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 :

[VBA-E] différences entre VBA Mod et Excel Mod


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 56
    Par défaut [VBA-E] différences entre VBA Mod et Excel Mod
    Bonsoir,
    Petit souci VBA Excel
    Un petit souci je n'arrive pas à convertir en VBA la fonction precedente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
    Je trouve à chaque fois le mauvais résultat, je craque pourtant ca doit pas etre...
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    As tu essayé d'utiliser la méthode Evaluate?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.Evaluate("INT(MOD(INT((A1-2)/7)+0.6,52+5/28))+1")

    michel

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    hello
    en fait, tu dois utiliser formulalocal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(2, 2).FormulaLocal = "=ENT(MOD(ENT((A1-2)/7)+0.6;52+5/28))+1"
    et fait atention au séparateur du 0.6 ou 0,6. sur ma bacane, j'ai du le changer, mais la ça marche
    voila voila

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Je crois avoir cerné le problème à deaqu1 .. il sagit de la fonction MOD d'excel qui ne donne pas le même résultat que l'opérateur Mod de VBA ...

    le code à SilkyRoad en utilisant la méthode Evaluate, utilise la fonction MOD d'excel..et permet de contourner le problème..


    vu dans l'aide en ligne VBA :
    L'opérateur modulo, ou reste, divise l'argument number1 par l'argument number2 (en arrondissant les nombres à virgules flottantes à des nombres entiers) et ne retourne que le reste dans l'argument result. Par exemple, dans l'expression ci-dessous, A (argument result) est égal à 5.
    donc en VBA avec l'opérateur modulo les arguments sont "arrondi" ... d'ou ..
    par exemple
    donne 11
    comme
    ce qui n'est pas le cas avec la fonction MOD d'excel qui renvoie 10.6 pour
    et 11 avec 635.....



    une solution alternative à celle à SilkyRoad .. et d'utiliser "l'équivalent" à la fonction MOD d'excel .. que l'on trouve dans l'aide en ligne :

    La fonction MOD peut aussi s'exprimer en utilisant la fonction ENT :
    MOD(n, d) = n - d*INT(n/d)


  5. #5
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 56
    Par défaut alternative
    J'ai réussi à m'en sortir de la façon suivante...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sheets("Feuil1").Select
     
    For j = 1 To 7
     
        Valeur = ActiveSheet.Range("C" & j).Value
     
        n1 = Int((Valeur - 2) / 7) + 0.6
        n2 = 52 + 5 / 28
        n3 = Int(n1 - n2 * Int(n1 / n2)) + 1
        ActiveSheet.Range("f" & j).Value = n3
     
    Next
    C'est barbare, je sais...
    A la rigueur si quelqu'un aune astuce pour tout compresser, c'est pas de refus.

    PS: Merci Bbil pour tes petits cours...

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Un petit souci je n'arrive pas à convertir en VBA la fonction precedente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    =ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
    J'ai réussi à m'en sortir de la façon suivante...

    Sheets("Feuil1").Select

    For j = 1 To 7

    Valeur = ActiveSheet.Range("C" & j).Value

    n1 = Int((Valeur - 2) / 7) + 0.6
    n2 = 52 + 5 / 28
    n3 = Int(n1 - n2 * Int(n1 / n2)) + 1
    ActiveSheet.Range("f" & j).Value = n3

    Next

    C'est barbare, je sais...
    A la rigueur si quelqu'un aune astuce pour tout compresser, c'est pas de refus.
    -->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Int((Range("A1").Value - 2) / 7 + 0.6) Mod (52 + (5 / 28) + 1)
    En précisant que cela n'est pas une "astuce"

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/04/2011, 20h21
  2. [XL-2003] Différence entre les fonctions Round() Excel et VBA ?
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2010, 15h22
  3. Différences entre vba excel 2000 et 2003
    Par naty76 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2009, 09h17
  4. Différence entre VBA 6.0 et .NET
    Par thyresias dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/10/2006, 10h14
  5. [VBA-E] Différence entre 2 dates
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/12/2005, 13h23

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