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 :

InputBox et 2 conditions pour une valeur entrée [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Par défaut InputBox et 2 conditions pour une valeur entrée
    Bonjour le Forum,

    dans la partie du code ci-dessous :
    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
    OK = False
    Do While OK = False
       d1 = InputBox("Valeur 1")
       If CInt(d1) >= [AD1] And CInt(d1) <= [AT243] Then        'CInt(d1) >= 3 And CInt(d1) <= 242
          OK = True
          d2 = InputBox("Valeur 2", "Titre", [AT243])         'InputBox("Texte ?", "Titre", "Valeur par défaut")
          If CInt(d2) <= CInt(d1) Then                   'If CInt(d2) <= CInt(d1)
             OK = False
             MsgBox "d2 doit être supérieur à d1"
          Else
              OK = True
          End If
       Else
           MsgBox "d1 doit être compris entre " & [AT3] & " et " & [AT243]   '"d1 doit être compris entre 3 et 242"
           OK = False
       End If
    Loop
    ,

    1 condition est imposée à "d2" : "d2" >= "d1".
    Comment compléter ce code en ajoutant une 2 ème condition pour "d2"; à savoir : "d2"<= [AT243] (condition déjà imposée à "d1") ?

    Je vous remercie pour vos réponses et vous souhaite une bonne journée.
    Cordialement.

    Nonno 94.

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Je comprend pas trop ta question.

    Déjà, par rapport à ta condition ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          If CInt(d2) <= CInt(d1) Then                   'If CInt(d2) <= CInt(d1)
             OK = False
             MsgBox "d2 doit être supérieur à d1"
          Else
              OK = True
          End If
    Par rapport à ce que tu dis :

    1 condition est imposée à "d2" : "d2" >= "d1".
    J'aurai plutôt mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          If CInt(d2) < CInt(d1) Then                   'If CInt(d2) <= CInt(d1)
             OK = False
             MsgBox "d2 doit être supérieur à d1"
          Else
              OK = True
          End If
    Sinon, ta condition sur l'égalité ne fonctionnera pas.

    Soit j'ai pas compris ta question, mais pour répondre à ta 2e question pourquoi tu fais pas ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          If CInt(d2) < CInt(d1) And CInt(d2) > [AT243] Then                   'If CInt(d2) <= CInt(d1)
             OK = False
             MsgBox "d2 doit être supérieur à d1 et inférieur à 243"
          Else
              OK = True
          End If
    ça ne correspond pas à ce que tu veux ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Par défaut
    Bonjour illight et merci pour votre réponse.

    malheureusement, votre proposition ne résoud pas mon problème car pour "d2", elle permet de saisir des valeurs supérieures à [AT243] (= 212); la MsgBox d'erreur ne s'affiche pas :

    MsgBox "d2 doit être supérieur à d1 et inférieur à 243"
    Dans mon exemple, la valeur "d1" doit être supérieure ou égale à 21 ([AD1]) et inférieure ou égale à 212, la valeur "d2" doit être supérieure à "d1" et inférieure ou égale à 212 donc comprise entre 22 et 212.

    Je serais déçu s'il se révélait impossible d'imposer les 2 conditions à "d2".
    Mon problème est-il insoluble ?

    Cordialement.

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ton problème est je pense plus une question d'algorithme que de problème impossible à résoudre. Essaye d'écrire exactement ce que tu veux comme condition avec des SI et des ALORS, de façon à pouvoir faire ton code en fonction de ce que tu souhaites. Pour exemple, voici ce que j'ai compris dans ce que tu dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SI D1 >=21 ET <= 212 ALORS
       SI D2 > D1 ET D2 <= 212 ALORS
           OK
       SINON
           PAS OK
       FIN SI
    FIN SI
    Estce que ton algorithme de base ressemble à cela ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Par défaut
    Merci encore pour votre patience.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SI D1 >=21 ET <= 212 ALORS
       SI D2 > D1 ET D2 <= 212 ALORS
           OK
       SINON
           PAS OK
       FIN SI
    FIN SI
    Cette formulation me semble correspondre à ma demande à ceci près que :
    D1 >21 et non D1 >=21.

    Je vous joins un classeur d'essai dans lequel le bouton permet d'exécuter la macro et d'afficher les InputBox(es).

    Pour "d2", vous ne pourrez pas entrer 16 (<21) et la MsgBox s'affiche mais vous pourrez entrer 350 bien que > à 212 sans que la MsgBox apparaisse !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             MsgBox "La Valeur 2 doit être supérieure à " & [AP1] & " et inférieure à " & [AT243]
    Qu'en pensez-vous ?

    Cordialement.

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Dans un premier temps, et au vu de l'algorithme fourni, on va pouvoir déjà modifier ta macro en fonction de celui-ci.
    J'ai donc pris la négation de ton algo. Ça donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        If CInt(d1) <= [AD1] And CInt(d1) > [AT243] Then        'CInt(d1) > [AD1] And CInt(d1) <= [AT243]'CInt(d1) >= 3 And CInt(d1) <= 242
            OK = False
            MsgBox "d1 doit être compris entre " & [AD1] & " et " & [AT243]
        Else
          d2 = InputBox("Valeur 2", "Titre", [AT243])         'InputBox("Texte ?", "Titre", "Valeur par défaut")
          If CInt(d2) <= CInt(d1) Or CInt(d2) > [AT243] Then                 'If CInt(d2) <= CInt(d1)
             OK = False
             MsgBox "La Valeur 2 doit être supérieure à " & [AP1] & " et inférieure à " & [AT243] 'MsgBox "d2 doit être supérieur à d1"
          Else
              OK = True
          End If
      End If
    Essaye de mettre ça voir si ça correspond à ton besoin (j'ai pas testé dans ton fichier, je te laisse le faire )
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

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

Discussions similaires

  1. Active la cellule pour une valeur donnée par inputbox
    Par Kestion100 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/06/2015, 09h59
  2. Faire copier coller d'une valeur entrée dans une inputbox
    Par nico17137 dans le forum VBScript
    Réponses: 4
    Dernier message: 21/06/2013, 09h33
  3. Réponses: 6
    Dernier message: 25/10/2011, 15h52
  4. [MySQL] Condition pour une Requete sql vide
    Par needles94000 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/03/2006, 18h03
  5. [CR] Générer des espaces pour une valeur champ
    Par newpress dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/02/2005, 17h43

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