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 :

condition sous IF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut condition sous IF
    bonjour,

    j'ai un souci je souhaite mettre des sécurités de saisie sur mon projet. Donc j'ai posé des conditions sous IF mais meme quand je rentre une valeur bonne, j'ai un msgbox qui s'affiche. Et donc les calculs ne se lancent pas.
    Pourriez vous m'aider svp. 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
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub CommandButton1_Click()
     
    Dim point As Integer, i As Integer, x As Integer
    point = Range("calcul2!B5")
    x = 12
     
    If TextBox1.Value > 2 Then
        MsgBox "Vérifier votre valeur", vbCritical, "Hauteur de station"
    Else
     
        If TextBox2.Value > 2.5 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Hauteur du Voyant"
        End If
     
        If TextBox3.Value > 100 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Nombre de points"
        End If
     
    'permet d'afficher le noms des points visés. Ils commencent au 1001
        For i = 1 To point
         Range("calcul2!A" & x) = 1000 + i
         x = x + 1
        Next i
    'après il y a la suite de mon projet

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Par défaut
    Salut,
    il manque quelques else non ?

    Pour éviter ça monte utilise Exit sub (les batteries de contrôles font partie des rares cas où on a le droit de déstructurer un peu le code...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if erreur1 then
       msgbox message1
       exit sub
    endif
    ...
     
    if erreurN then
       msgbox messageN
       exit sub
    endif
    'fin des contrôles

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comme la suite de ton projet est dans un else, elle a de l'importance ici...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       If TextBox1.Value > 2 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Hauteur de station"
        ElseIf TextBox2.Value > 2.5 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Hauteur du Voyant"
        Elseif TextBox3.Value > 100 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Nombre de points"
        Else
            'la suite de ton code et à la fin...
       endif

  4. #4
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    ne serait-il pas plus judicieux de faire le test directement à la saisie?

    lié à l'événement change tu textbox donc!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    ok mais alors je crois que la valeur de mon textbox1 n'est pas prise en compte comme un single, mais en tant qu'integer car si je rentre 1.615 cela ne fonctionne pas par contre pour 1 ça fonctionne.

    mais comment lui dire de prendre les chiffre après la vrigule.
    pourtant avec .value ça devrait etre fait??

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       If CSng(Replace(TextBox1.Value, ".", ",")) > 2 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Hauteur de station"
        ElseIf CSng(Replace(TextBox2.Value, ".", ",")) > 2.5 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Hauteur du Voyant"
        Elseif TextBox3.Value > 100 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Nombre de points"
    Dans la version française, TextBox1.Value réclame une virgule

    Edit
    Si une virgule est saisie, cette syntaxe ne "devrait" pas poser de problème
    Je te laisse tester

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    ok merci.

    et donc si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CSng(Replace(TextBox1.Value, ".", ","))
    , cela permet de remplacer le point par la virgule?

    car j'avais un problème quand je mettais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Not IsNumeric(TextBox1.Value
    vu que j'avais des points, il s'éxitait tout de suite

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux aussi imposer la virgule lors de la saisie mais ta solution de vérifier les erreurs derrière un bouton de validation me paraît meilleure.
    Par contre, j'ajouterais, après ton message indiquant l'erreur, un retour sur le textbox qui va bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If CSng(Replace(TextBox1.Value, ".", ",")) > 2 Then
            MsgBox "Vérifier votre valeur", vbCritical, "Hauteur de station"
            Textbox1.setfocus
    A+

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

Discussions similaires

  1. comptages avec 2 conditions sous excel
    Par cpe81 dans le forum Excel
    Réponses: 8
    Dernier message: 11/12/2008, 13h45
  2. Remplir une cellule Excel avec une condition sous vb
    Par enibris dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2008, 13h47
  3. [Calculs VBA] Test de condition sous VBA
    Par guen dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/11/2007, 17h52
  4. [Excel VBA] Faire une condition sous Excel
    Par ANTMA dans le forum Excel
    Réponses: 3
    Dernier message: 03/08/2007, 11h20
  5. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23

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