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

VBA Word Discussion :

Bouton ANNULER dans inputbox


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Inscrit en
    août 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Bouton ANNULER dans inputbox
    Bonjour le forum,
    je fais apparaitre à l'ouverture du document, une InputBox pour demander la saisie d'un Montant via l'instruction
    Montant = InputBox("Saisir le montant) et récupérer ce montant pour l'insérer dans un document à un emplacement définit par un signet MT_FRAIS

    je souhaite tester en suite la réponse en distinguant :
    ne rien saisir en validant par Ok qui ferait apparaitre un msgbox "vous avez omis la saisie"
    Cliquer sur Annuler pour interrompre la procédure.
    Cliquer sur OK avec une saisie valide et continuer la procédure

    j'ai écrit ce bout de code :
    Private Sub Document_Open()
    'Afficher la boite de dialogue et stocker la reponse dans la variable _rep
    V_rep = MsgBox("Y'a t'il des frais ?", vbQuestion + vbYesNoCancel, "SAISIE DES FRAIS")
    'Test sur la reponse de la boite
    If V_rep = vbCancel Or V_rep = vbNo Then
    Exit Sub
    Else
    'Pour Afficher la Boite de dialogue permettant de saisir le montant
    Q: V_Montant = InputBox("Saisissez votre montant", "SAISIE DES FRAIS")
    End If

    If V_Montant = vbCancel Then
    MsgBox "Saisie Annulée"
    Exit Sub
    ElseIf V_Montant = "" Then
    MsgBox "pas de montant saisi"
    GoTo Q
    Else
    'Pour atteindre l'endroit (SIGNET) du document où insérer le montant des frais
    Selection.GoTo What:=wdGoToBookmark, name:="MT_FRAIS"
    ' 'Pour insérer le montant
    Selection.TypeText Text:="O coutera donc : " & V_Montant
    End If
    End Sub

    le test du bouton ANNULER de la MSGbox fonctionne, mais je n'arrive pas à faire la même chose pour la InputBox!!!
    Qd je clique sur annuler il n'en tient pas compte, il ne tient compte que du test sur le vide
    Quelqu'un a t'il une solution, un piste??

    Merci pour vos réponses

  2. #2
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    juin 2019
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : juin 2019
    Messages : 181
    Points : 245
    Points
    245
    Par défaut
    Tu peux créer ton propre dialogue de saisie comme ça la tâche devient plus facile,

    https://www.developpez.net/forums/d2.../#post11901861

    mais des solutions restent possibles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     Do
       ret = InputBox("Saisir le montant", "", "Saisir le montant")
       If ret = "Saisir le montant" Then
          If MsgBox("vous avez omis la saisie", vbInformation + vbOKCancel) = vbCancel Then
             Exit Sub
          End If
       ElseIf ret = "" Then
         Exit Sub
       Else
         Exit Do
       End If
     Loop

  3. #3
    Membre à l'essai
    Inscrit en
    août 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci wheel

    c'est ce que je voulais.

    Pour mon histoire de tester le bouton Annuler d'un Inputbox ....
    est ce que ce qui suit est correct ?
    On peut faire test sur le Bouton ANNULER d'un MSGBOX car c'est une des valeurs qui peut être renvoyée (VBCancel ou 2)
    on ne peut pas tester le bouton ANNULER d'un Inputbox car les valeur renvoyées ne sont que celles saisie dans la boite de dialogue ?

    merci encore pour ta réponse
    à bientôt

  4. #4
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    juin 2019
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : juin 2019
    Messages : 181
    Points : 245
    Points
    245
    Par défaut
    est ce que ce qui suit est correct ?
    Non pas forcement le code ne vérifie pas la valeur saisie qui dépend de votre contexte mais il n'est pas difficile d'envisager le code pour cette opération (avant de quitter la boucle si la valeur du montant est correcte).

    Le code suivant accepte des valeurs entre 100 et 1000 tu peux le modifier selon tes besoins .

    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
     Dim ret, TextDepart
     TextDepart = "Saisir le montant"
     Do
       ret = InputBox("Saisir le montant", "", TextDepart)
       If ret = TextDepart Then 'ok de InputBox sans rien saisir
          If MsgBox("vous avez omis la saisie", vbExclamation + vbOKCancel) = vbCancel Then
             Exit Sub 'annuler l'opération MsgBox
          End If
       ElseIf ret = "" Then 'annuler l'opération InputBox
          Exit Sub
       Else
          If (Trim(ret) < 1000) And (Trim(ret) >= 100) Then ' valider le montant entre 100 .. 1000
             Exit Do 'montant correct on sort de la boucle
          ElseIf MsgBox("Veuillez saisir un montant correct", vbExclamation + vbOKCancel) = vbCancel Then
             Exit Sub 'annuler l'opération MsgBox
          End If
          TextDepart = ret
       End If
     Loop
     'continuer avec la valeur correcte
     MsgBox ret


    on ne peut pas tester le bouton ANNULER d'un Inputbox car les valeur renvoyées ne sont que celles saisie dans la boite de dialogue ?
    mes connaissances en VBA sont limitées et donc je ne peux pas être catégorique surtout que VBA recèle beaucoup de fonctions intégrantes IsEmpty IsNull, NullString et je ne sais pas quoi d'autres.. je pense comme vous qu'il n'est pas possible de récupérer le code de la fermeture de la boite moche, la meilleure solution serait de créer la sienne.

Discussions similaires

  1. Bouton Annuler dans un InputBox
    Par mawkli dans le forum VB.NET
    Réponses: 12
    Dernier message: 09/04/2013, 12h42
  2. Maitriser le bouton annuler de InputBox
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2008, 13h36
  3. bouton annuler dans un GUI
    Par androz dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 17/03/2008, 00h22
  4. Bouton annuler dans un formulaire
    Par Niniz dans le forum JSF
    Réponses: 4
    Dernier message: 27/07/2007, 11h26
  5. Bouton Annulation dans un formulaire
    Par Vincent_59 dans le forum IHM
    Réponses: 2
    Dernier message: 19/06/2007, 09h30

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