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 :

erreur aléatoire de comparaison entre deux valeurs [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Par défaut erreur aléatoire de comparaison entre deux valeurs
    Bonjour,

    J'ai créé une macro de gestion de stock. Selon l'élément choisi, excel retrouve la quantité en stock correspondante et la compare avec la quantité entrée par l'utilisateur.

    Selon le code, si qté > stock, un message d'erreur s'affiche. Si c'est le cas, la macro fonctionne comme prévu.

    Cependant, sur 9 essais sur 10, le message d'erreur s'affiche bien que le stock soit suffisant...

    Après plusieurs essais, j'ai remarqué que les seules valeurs qu'il accepte sont 1, 10, 100, 1000, ... indépendemment du stock!

    depuis, je patauge pour tenter d'y remédier...

    une piste de solution serait grandement appréciée

    merci!

    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
     
    'l'utilisateur choisit l'élément souhaité, le code recherche les quantités disponibles dans la feuille excel correspondante
     
    Private Sub ComboBox_selection_1_Change()
     
      If Me.ComboBox_selection_1.ListIndex <> -1 Then
            Me.TextBox_stock_objet1.Enabled = False
            Me.TextBox_emplacement_1.Enabled = False
            Me.TextBox_stock_objet1 = Sheets("Stocks_robinetterie").Range("C" & Me.ComboBox_selection_1.ListIndex + 3)
            Me.TextBox_emplacement_1 = Sheets("Stocks_robinetterie").Range("A" & Me.ComboBox_selection_1.ListIndex + 3)
      Else
                Me.ComboBox_selection_1.ListIndex = 0
                Me.TextBox_emplacement_1 = ""
      End If
     
    End Sub
    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
    22
    23
    'ensuite, les dispositifs de controle et d'alerte vérifient les quantités entrées par l'utilisateur
     
    'sélection 1
     
        If Me.TextBox_qte_objet1.Value < 0 Then
            MsgBox " La quantité 1 à commander doit être positive"
            Me.TextBox_qte_objet1.SetFocus
            Exit Sub
        End If
     
        If IsNumeric(TextBox_qte_objet1) = False Then
            MsgBox " La quantité n'est pas numérique"
            Me.TextBox_qte_objet1.SetFocus
               Exit Sub
        End If
     
        If Me.ComboBox_selection_1.ListIndex <> -1 And Me.TextBox_qte_objet1 <> 0 Then
             If Me.TextBox_qte_objet1.Value > Me.TextBox_stock_objet1.Value Then
                MsgBox "Le stock de l'élément 1 est inférieur à la quantité demandée"
                Me.TextBox_qte_objet1.SetFocus
                Exit Sub
             End If
        End If
    je peux fournir le fichier entier si nécessaire!

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour

    TextBox, comme son nom l'indique c'est une boite qui contient du text
    donc 12 en text est < 2
    Il est souhaitable quand on veut tester des valeurs numériques de les convertir
    Val, Cint, Clng ou Cdbl

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Par défaut
    Bonjour Wilfried

    J'avais déjà essayé de le convertir avec clng, mais du coup les données n'étaient plus imprimées dans le pdf de sortie...! je vais essayer avec val du coup

  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
    Attention
    Les textbox retournent du texte et de ce faite, la comparaison se fait sur des textes.

    Utilise la fonction Val (éventuellement avec un replace sur le séparateur décimal)


    Exemple de fonction qui fera ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Function Remp(ByVal Str As String) As Double
     
    Remp = Val(Replace(Str, ",", "."))
    End Function
    pour comparer les valeurs de TextBox1 et TextBox2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
     
    If Remp(Me.TextBox1) > Remp(Me.TextBox2) Then MsgBox "kuku"
    End Sub
    A intégrer dans ton code

  5. #5
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    tu n'es pas obligé de faire une conversion définitive mais tu dois les utiliser dans les tests et le calculs éventuels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF Clng(Me.TextBox_qte_objet1.Value) < 0 then

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Par défaut
    ca marche, le programme tourne sans soucis

    un tout grand merci pour vos réponses rapides!

    un grand fardeau vient de tomber de mes épaules

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

Discussions similaires

  1. erreur comparaison entre deux date
    Par offspring dans le forum JDBC
    Réponses: 7
    Dernier message: 06/06/2008, 09h23
  2. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  3. Réponses: 6
    Dernier message: 18/04/2006, 13h11
  4. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53
  5. [jsp] addition entre deux valeurs recupérées en Java
    Par LESOLEIL dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/06/2005, 13h19

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