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

VB 6 et antérieur Discussion :

Différence de calcul entre Excel et VB6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut Différence de calcul entre Excel et VB6
    Bonjour à tous,

    Je réalise un calcul sur un cumul comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Int(5 + (Int(Val(ItemJuste) * 100) / 59))
    Arrivé à 100, c'est le nombre maximum que j'ai défini, le total est de 174 !
    Ce qui me préoccupe, c'est que j'ai fait la même procédure de calcul avec Excel
    et celui-ci me donne un total de 170.

    Je sais que la différence n'est pas énorme, mais je ne vois pas d'où pourrait provenir cette différence.

    Pourriez-vous me dire pourquoi j'ai cette différence ?

    Merci d'avance de votre aide.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Pourriez-vous me dire pourquoi j'ai cette différence ?
    Cela provient de l'enchainement de l'ordre des calculs intermediaires.
    Pour avoir le même resultat il faut le forcer, par le biais de (...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CInt((5 + (Val(ItemJuste) * 100)) / 59)
    Dailleurs (5+100*100)/59 sous vb6 ne result pas 170 mais 169,576271186441, pour avoir 170 il faut formuler comme cela = CInt((5 + 100 * 100) / 59)
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    J'avais bien mis "Int" et pour l'autre formule, c'est du Excel !

    Que je mettre "Cint" ou "Int", il n'y a pas grande différence sauf peut-être l'arrondi du chiffre mais comme je ne veux pas arrondir au chiffre supérieur, j'ai choisi "Int" !

    Avec Cint ou Int, si je veux avoir le même résultat qu'Excel, il faut que je divise par "60.5" et c'est pas bon du tout !

    Qu'il y ait une différence après la virgule, soit, mais une différence de "4" c'est énorme :

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    La différence ne tient qu'au fait de ne pas utiliser la même formule dans les 2 cas.

  5. #5
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Non, tu as dû mal comprendre, ou je me suis mal expliqué (c'est plutôt ça).
    Il n'y a qu'un seul calcul d'effectué et il est dans VB.

    Le même calcul dans excel est juste pour un contrôle optique.
    Comme il y a 100 questions, en VB il serait assez fastidieux de faire l'exécution 1 par 1.
    C'est pour ça qu'excel est plus pratique car je peux ainsi voir que, par exemple, le N° 81 correspond à un calcul de 141, ou un autre ! Je peux ainsi définir la suite du prg.
    Tu me suis là ?

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Non pas du tout, mais pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Int(5 + (Int(Val(ItemJuste) * 100) / 59))
    et
    ce n'est pas la même opération

    plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Int(5 + Val(ItemJuste) * 100) / 59

  7. #7
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Oui, j'ai pigé, mais pour infos, ton dernier code est celui que j'ai mis dans VB. C'est vrai qu'il y avait un "Int" de trop, étant donné que "ItemJuste" est de type "Integer", je n'en voyais pas l'utilité.

    Par contre, l'autre c'est celui avec Excel
    Comme "Int" n'existe pas avec Excel, il faut faire un "Round" je crois mais sans certitude, ou formater la cellule, c'est plus simple.

  8. #8
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par jlb59 Voir le message
    .../...
    Comme "Int" n'existe pas avec Excel
    Depuis quand ?
    D'autant que Int appartient à VBA.Conversion.

    D'autre part, Round et Int ne sont pas équivalent:
    Int renvoie la partie entière quand Round arrondi à la valeur sup ou inf en fonction de sa partie décimale.
    (si c'était la même chose, il n'y aurait pas 2 fonctions différentes)

  9. #9
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Depuis quand ?
    D'autant que Int appartient à VBA.Conversion.
    Alors, on ne doit pas avoir la même version, parce que j'ai voulu faire ce calcul avec "int" mais Excel m'a dit que ça n'existait pas !
    Je l'ai peut-être mal fait !

    Bref, en tout cas, c'était pas mon prb !
    En fait, j'ai posté pour savoir d'où pouvait venir une différence de calcul entre VB et Excel !
    Certainement que j'ai eu la réponse, trop développée peu être !
    Mais je vais m'en tenir à la méthode actuelle.

    Merci et A+

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

Discussions similaires

  1. Différence de calcul entre deux techniques de jointure
    Par berceker united dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/06/2012, 11h31
  2. Réponses: 6
    Dernier message: 05/04/2007, 13h45
  3. [VB.NET 2005 XE]calculer la différence en jours entre 2 dates ?
    Par kinganasius dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/04/2007, 15h00
  4. [Dates] Calculer différence en jours entre deux dates
    Par looping2b2a dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2006, 23h32

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