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 :

Boucle qui ne fonctionne pas [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Par défaut Boucle qui ne fonctionne pas
    Bonjour,
    J’ai un problème avec une boucle.
    J'ai besoin: si un calcul donne une valeur entre 6 et 10 que l'utilisateur tape un code pour pouvoir poursuivre ou qu'il sorte du programme directement.
    J'ai donc créée une boucle pour récupérer le mot de passe mais je 'arrive pas à sortir de la boucle quand on clique sur cancel.
    Pouvez-vous me dire où je me trompe ?

    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
    Private Sub VALIDE2_Click()
    
    Dim longeur1 As Double
    Dim largeur As Double
    Dim hauteur1 As Double
    Dim Vv As Double
    Dim av As Double
    Dim A As Double
    Dim Kb As Double
    Dim Q As Double
    Dim Q1 As Double
    Dim Vtotal As Double
    Dim Qcorriger As Double
    Dim reservoir As Double
    Dim QUESTION As Variant
    Dim Qobst As Double
    Dim Qte As Double
    Dim gaz As Double
    Dim securite As Double
    Dim question2 As Variant
    Dim REPONSSE As String
    Dim delta As String
    Dim question3 As Variant
    Dim volumeloc As Double
    Dim code As String
    
    ...
    Case 6 To 10
    
    Do
    question2 = InputBox("Le devis doit être soumis imperativement à un responsable" + Chr(13) + "veuillez entrer le code admnistrateur", vbOKcancel + vbDefaultButton1)
    
    If question2 = vbCancel Then Exit Do
    
     Loop While question2 <> 1812
    If question2 = vbCancel Then
    Exit Sub
    Else
    End If
    Case Else
    End Select
    Merci de votre aide je n'ai rien trouvé sur le Tuto des boucles

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Tester ça
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Loop While question2 <> "1812"

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Par défaut
    Bonjour,

    Si l'utilisateur clique sur Annuler, la valeur de question2 sera "". Ce qui devrait donner dans votre cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Case 6 To 10
     
    Do
    question2 = InputBox("Le devis doit être soumis imperativement à un responsable" + Chr(13) + "veuillez entrer le code admnistrateur", vbOKcancel + vbDefaultButton1)
     
    If question2 = "" Then Exit Do
     
     Loop While question2 <> 1812
    If question2 = "" Then
    Exit Sub
    Else
    End If
    Case Else
    End Select

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    question2 =1812
    vbCancel =2 'constante vb toujours = à 2
     
    'si 1812=2 ça n’arrive jamais
    If question2 = vbCancel Then

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Par défaut je viens de tester
    Citation Envoyé par SMBeccaria Voir le message
    Bonjour,

    Si l'utilisateur clique sur Annuler, la valeur de question2 sera "". Ce qui devrait donner dans votre cas:

    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
     
    1234567891011121314 Case 6 To 10
     
    Do
    question2 = InputBox("Le devis doit être soumis imperativement à un responsable" + Chr(13) + "veuillez entrer le code admnistrateur", vbOKcancel + vbDefaultButton1)
     
    If question2 = "" Then Exit Do
     
     Loop While question2 <> 1812
    If question2 = "" Then
    Exit Sub
    Else
    End If
    Case Else
    End Select
    dans cette solution que je viens de tester, que je clique sur ok ou cancel je sort du programme or je voudrai que seulement si je clique sur cancel je sort, si non le inputbox réaparais pour autorisé une erreure de code éventuelle
    j'ai remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if question2=""then 'par
    if question2 = vbcancel then
    Comme me la indiqué rdurupt.
    Mais je ne sort pas de la boucle tant que le code n'est pas Ok
    et je ne peut pas déclaré vbcancel = 2 ou alors je n'est pas compris cette partis
    Merci de votre aide je me raproche du but, reste plus cas sortir de la boucle que quand l'UE clique sur cancel.

  6. #6
    Invité
    Invité(e)
    Par défaut
    vbcancel est un constante de Excel VBA.
    Constante veut dire ne change jamais, donc inutile de vouloir lui dire
    vbcancel =2-> vbcancel =25 ou vbcancel=1812 car sauf te manifester son mécontentement par un message d'erreur, il ne changera jamais de valeur.

    maintenant pourquoi veux tu tester le cancel pour interdire la sortie du formulaire. si tu en disais plus sur tes intension et non sur le code qui vraisemblablement ne fait pas ce que tu attends de lui?

  7. #7
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Par défaut plus d'info
    Alors je vais essaye d'être plus explicite:
    Ce programme s'adresse a deux type d'utilisateur des novices et des confirmés.
    Si un certain nombre de parmètre font que la valeur ce situe entre 6 et 10 seul les confirmés pourront allées au bout du programme (ceux qui on le code)sauf qu'un code on peut ce tromper d'où la boucle.Les autres doivent pouvoir quiter le programme d'où le "cancel" pour eux.
    J'éspere avoir été claire dans mes explication
    Maintenant il ya peut être une autre solution qu'une boucle mais là je pêche.
    Merci

  8. #8
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Peut-être est-ce plus judicieux d'utiliser la méthode Environ() qui retourne le nom d'utilisateur Windows par exemple.
    Sinon ton problème se résoud à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Do
    question2 = InputBox("Le devis doit être soumis imperativement à un responsable" + Chr(13) + "veuillez entrer le code admnistrateur", vbOKCancel + vbDefaultButton1)
     
    'Cas du cancel On arrête la procédure
    If question2 = "" Then Exit Sub
    'Sortie de la boucle par le code ("1812")
    Loop While question2 <> 1812
     
    End Sub

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

Discussions similaires

  1. Macro EXCEL - Boucle qui ne fonctionne pas
    Par babouchka01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/10/2011, 11h24
  2. [MySQL] boucle qui ne fonctionne pas dans autocompletion
    Par groskanel dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/08/2010, 14h56
  3. Boucle qui ne fonctionne pas
    Par Msieurduss dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/04/2009, 16h00
  4. Range.Offset(1) dans une boucle qui ne fonctionne pas
    Par Pierre.g dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2008, 11h58
  5. [MySQL] Boucle qui ne fonctionne pas bien que la 1ère fois
    Par R.L. dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/05/2006, 21h59

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