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 :

le code entre dans un If alors que cela ne devrai pas être le cas


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Points : 60
    Points
    60
    Par défaut le code entre dans un If alors que cela ne devrai pas être le cas
    Voilà mon code de déboguage que je pense plutôt explicite :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
                        'ici
                        Debug.Print "Min ==> " & ctrLabelMin.Caption & " Max ==> " & ctrLabelMax.Caption & " Valeur ==> " _
                        & ctrTextBox.Value
     
                        'Si il y a un minimum et que la valeur saisi est inferieur au minimum, on met depasseborne à true
                        If ctrLabelMin.Caption <> "" And ctrLabelMin.Caption > ctrTextBox.Value Then
                            Debug.Print "on est dans le min"
                            depasseborne = True
     
                        End If
     
                        Debug.Print "Min ==> " & ctrLabelMin.Caption & " Max ==> " & ctrLabelMax.Caption & " Valeur ==> " _
                        & ctrTextBox.Value
     
                        'Si il y a un maximum et que la valeur saisi est superieur au maximum, on met depasseborne à true
                        If ctrLabelMax.Caption <> "" And ctrLabelMax.Caption < ctrTextBox.Value Then
                            Debug.Print "on est dans le max"
     
                            Debug.Print "Est ce qu'il y a un max de défini ==> "
                            Debug.Print ctrLabelMax.Caption <> ""
                            Debug.Print "est ce que le Max est inférieur à la valeur ? : ==> "
                            Debug.Print ctrLabelMax.Caption < ctrTextBox.Value
     
                            depasseborne = True
     
                        End If
     
                        Dim force As String
                        force = "0"
                        If depasseborne Then
                            force = "1"
                        End If
     
                        requetteSQL = "INSERT INTO remonter(idRealisationOperation, idInformation, valeur, `force`) " _
                        & " VALUES ( '#idRealisationOperation#' , '" & ctrLabel.Caption & "', '" & ctrTextBox.Value & "','" & force & "' );"
     
                        collectReq.Add (requetteSQL)
     
                    End If
     
                'End If
     
     
     
            Next i
     
            Dim retour As Integer
            retour = 0
     
            'ici
            Debug.Print "Est ce qu'on dépasse les bornes ? ==> " & depasseborne
     
            If depasseborne Then
              retour = MsgBox("Une des valeurs que vous avez saisie dépasse les bornes recommandés, êtes vous sûr de vouloir valider la saisie ?", vbOKCancel)
            Else
              retour = 1
            End If
    voilà ce qu'il produit comme résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Min ==> 780 Max ==> 1300 Valeur ==> 800
    Min ==> 780 Max ==> 1300 Valeur ==> 800
    on est dans le max
    Est ce qu'il y a un max de défini ==> 
    Vrai
    est ce que le Max est inférieur à la valeur ? : ==> 
    Vrai
    Est ce qu'on dépasse les bornes ? ==> Vrai

    Ca me dit que ma valeur dépasse le max, pourtant j'ai mit 800 ??? Et 800 est inferieur à 1300, non ? Je dois avoir le nez dessus et je ne comprends pas...


    Si quelqu'un a une idée, ça serai super !

    Merci

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour :

    800 est certes inférieur à 1300
    "800" est par contre supérieur à "1300"

    Tu devines ?

    Ne pas confondre la comparaison de chaines de caractères avec celle de leur valeur numérique....

    Or (regarde ton code) : tu traites non la valeur numérique de chaînes mais les chaînes elles-mêmes....!

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    ok, super merci !

    Je comparais la taille des chaînes de caractère...

    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/03/2015, 10h27
  2. Réponses: 3
    Dernier message: 27/04/2010, 19h00
  3. [AC-2002] Me.OpenArgs Null alors que ce n'est pas vrai
    Par jaffael dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/06/2009, 17h32
  4. Réponses: 33
    Dernier message: 02/02/2009, 22h25
  5. Réponses: 3
    Dernier message: 27/01/2008, 20h52

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