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 d'exécution entre différents postes de travail [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Vink80
    Homme Profil pro
    Analyste Développeur BI
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Développeur BI
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 98
    Points
    98
    Par défaut Problème d'exécution entre différents postes de travail
    Bonjour à tous,

    J'ai un petit problème qui me rend perplexe. J'ai créé un petit UserForm dès plus banal qui converti des heures supplémentaires en fraction de journée (ex. 7,5 heures suppl. = 1,07 jour). J'ai déposé le fichier sur un répertoire partagé de mon entreprise. Sur mon poste, il fonctionne à merveille. Cependant, sur les postes des utilisateurs mon exemple de 7,5 heures suppl. ne donne plus 1,07 comme il se doit, mais plutôt 10,71. Nous avons la même version d'Office et de Windows (Office 10 et Windows 7 Enterprise). Je ne sais trop quoi en penser.

    Voici le code de mon UserForm :
    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
    19
    20
    21
    Sub Convert_Enter_Click()
    Dim Result As Double, Box As MSForms.Control
        If Me.Temps_Suppl_txt = "" Then
            MsgBox "Vous devez entrez un nombre dans la case.", vbCritical, "Nombre Invalide"
            Exit Sub
        ElseIf Not IsNumeric(Replace(Me.Temps_Suppl_txt, ".", ",")) Then
            MsgBox "Vous devez entrez un nombre dans la case.", vbCritical, "Nombre Invalide"
            Exit Sub
        End If
     
        Result = CDbl(Replace(Me.Temps_Suppl_txt, ".", ",")) / 7
        Result = Round(Result, 2)
        For Each Box In UserTempsSuppl.Controls
            If TypeName(Box) = "TextBox" Then
                If Box.Name = CaseTempsSuppl Then
                    Box.Text = CStr(Result)
                    Unload Me
                End If
            End If
        Next Box
    End Sub
    Merci de votre aide
    Vincent

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Regarde dans les Options avancées si l'item "Décimale fixe" est coché.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre régulier Avatar de Vink80
    Homme Profil pro
    Analyste Développeur BI
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Développeur BI
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 98
    Points
    98
    Par défaut
    Salut Clément,

    Non, cette option n'est pas cochée dans nom Excel. Devrais-je le faire?

    C'est vraiment embêtent comme problème.

    Cordialement,

    Vincent

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Oups ! Désolé, c'est dans l'Excel de ceux qui n'ont pas le bon résultat. Quand cette option est cochée, les nombres sont automatiquement avec le nombre de décimales indiqué. Quand l'option est cochée avec deux décimales et que l'utilisateur entre 1 dans une cellule, Excel en fait automatiquement 0,01. Mais, là j'y repense et je ne suis pas convaincu que VBA suive cette règle. Mais, cela ne coûte pas grand chose de vérifier

    Ceci dit, si c'est cela qui cause le problème des "fausses réponses"; il va te rester à mon avis, deux solutions pratiques.

    1) Imposer, ou convaincre les utilisateurs de tous utiliser, ou éviter, cette option. Entre nous deux et la boîte à bois, cela risque de ne pas être évident.

    2) Prévoir un test dans ta macro. En principe, si ton utilisateur arrive avec un affichage de 100 heures supplémentaires, et la case cochée, il n'y a pas grand risque à diviser par 100, dès qu'un résultat atteint ou dépasse 100 heures; sauf évidemment si c'est normal d'atteindre 100 heures supplémentaires.

    Je viens juste de regarder ton code de nouveau, et tu pourrais aussi vérifier quel est le séparateur décimal utilisé. À vrai dire, je n'ai rien testé mais je me demande si le Replace de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = CDbl(Replace(Me.Temps_Suppl_txt, ".", ",")) / 7
    donne vraiment la même chose selon que l'on entre 10.71 ou 10,71 dans le TextBox.

    Sin tu mets un espion sur "Result" et que tu testes au pas-à-pas, tu devrais voir ce qui se passe avec un point ou une virgule. Ton exemple 1,07 qui devient 10,71 après l'arrondi, fait penser à une multiplication par 10 avec un arrondi à deux décimales. Et comme diviser un petit nombre par 7, devrait donner quelque chose de pas très loin de la division du même petit nombre par 10.

    Pour l'instant, je suis un peu pressé, mais je vais essayer de faire de quelques test après le souper ou demain.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Membre régulier Avatar de Vink80
    Homme Profil pro
    Analyste Développeur BI
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Développeur BI
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 98
    Points
    98
    Par défaut
    Je ne crois pas que mon problème vienne directement du code de mon Userform, car j'ai modifié mon programme pour contourner tout ça. Je m'explique :

    Dans mon classeur, j'ai un onglet qui me sert à entrer le temps supplémentaire des experts en sinistre.

    1 - On choisi un expert parmi la liste déroulante
    2 - On choisi l'année mois à afficher
    3 - En appuyant sur le bouton Ajout/Modifier, affichage du Userform Ajout/Modification Temps Supplémentaire
    4 - Sur ce même Userform, en appuyant sur le bouton Modifier et après en sélectionnant une cellule, cela appel le Userform de conversion
    5 - Passage de la valeur convertie dans le Textbox
    6 - Exécution du SQL pour reporter le tout dans la BD

    J'ai retirer le bouton de conversion du Userform pour le passer directement dans le code qui l'inscrit dans la BD avec le même résultat 7,5/7 = 10,71 et non 1,07.
    Nom : UserForm.png
Affichages : 203
Taille : 39,4 Ko

  6. #6
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    J'espère que c'est pas de Mme Anne-Sophie que tu essayais de cacher le nom
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

  7. #7
    Membre régulier Avatar de Vink80
    Homme Profil pro
    Analyste Développeur BI
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Développeur BI
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 98
    Points
    98
    Par défaut
    J'avoue mon Fail, au moins son code d'utilisateur lui est sauf

  8. #8
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    J'imagine que Mme Anne-Sophie s'en sort bien finalement

    Sinon, tu as tester avec 7.5 et 7,5 sur les postes de tes collaborateurs ? Parce que c'est comme si l'UF ne prenait pas en compte la , ou le .

    En effet, tu obtiens 10.71 si tu fais 75/7 ...

    tu peux essayer en remplaçant "." par Chr(46) et "," par Chr(44), bien que je doute que ce soit ça.
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

  9. #9
    Membre régulier Avatar de Vink80
    Homme Profil pro
    Analyste Développeur BI
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Développeur BI
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 98
    Points
    98
    Par défaut
    Merci pour le coup de main. J'ai retravaillé le code pour lui donner un peu d'oxygène. Le tout semble rentré dans l'ordre ... pour l'instant.

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

Discussions similaires

  1. [GPS] Problème trames NMEA entre différents modèles de PDA
    Par Julien_G dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 14/05/2009, 12h07
  2. Problème avec NXServer entre deux postes
    Par Mockingbird dans le forum Réseau
    Réponses: 0
    Dernier message: 29/06/2008, 21h53
  3. Problème d'exécution entre MATLAB 6.5 et 7
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 9
    Dernier message: 10/04/2008, 17h44
  4. Réponses: 4
    Dernier message: 18/03/2008, 01h59
  5. problème de connectivité entre deux postes
    Par passion_info dans le forum Hardware
    Réponses: 1
    Dernier message: 18/02/2007, 05h11

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