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 :

Message d'erreur et retour au début de la procédure


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2017
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Message d'erreur et retour au début de la procédure
    Bonjour à tous,

    Toujours dans le cadre de la réalisation de mon TFE (crf autres posts), j'essaie maintenant de gérer les différentes erreurs qui plantent mon programme.

    Et je commence avec la plus évidente, lorsque l'utilisateur oublie de rentrer une information dans une textbox/combobox/listbox.

    Le procédure de calcul commence lorsque l'utilisateur clic sur "suivant" mais si un champs d'entrée est incomplet, je veux donc afficher un msgbox indiquant " veuillez compléter les champs".

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If combobox = false Then 
    msgbox "veuillez compléter les champs", vbOKOnly
    End if
    La msgbox s'affiche bien mais mon code continue quand mm sa route sans prendre des valeurs parfois essentielles à la suite du calcul.
    Il faut donc que je contrôle si tous les champs sont complétés en début de procédure (juste après le clic suivant) et si ce n'est pas le cas msgbox -> retour à l'userform où l'on rentre les données -> effectuer le contrôle à nouveau. Si mtn tout est rempli, les calculs s’enchaînent avec les bonnes valeurs rentrées.

    J'ai essaye la façon suivante mais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Do While Combobox = False
     
            MsgBox "veuillez compléter les champs ", vbOKOnly
     
    Loop
    Mais ça ne fonctionne pas nn plus.

    Pouvez-vous m'aider ?

    Merci beaucoup.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par adridech Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If combobox = false Then 
    msgbox "veuillez compléter les champs", vbOKOnly
    End if
    La msgbox s'affiche bien mais mon code continue quand mm sa route sans prendre des valeurs parfois essentielles à la suite du calcul.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If combobox = false Then 
       msgbox "veuillez compléter les champs", vbOKOnly
       Exit Sub
    End if

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2017
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Bonjour Menhir,

    Désolé j'avais laissé ce problème de côté...
    Merci de ta réponse, cependant, si je "exit sub" alors tout mes calculs se trouvant dans ce sub ne sont pas pris en compte..

    il faudrait donc qu'une fois l'utilisateur ait appuyer sur "suivant", le code vérifie les données rentrées.
    Si tous les champs d'entrées ne sont pas complets ou complété de manière incorrecte, le code effectue la vérification et renvoie le message d'erreur tant que tout les champs ne sont pas corrects.

    Mais peut être serait-il plus simple de dégriser le bouton "suivant" avant que toute les cases ne soient remplies. Je vais donc analyser cette piste.
    Peut être auriez vous un code adéquat ?

    Merci de votre aide.

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Msg="1"
    Do while msg=""
    Msg =inputbox("entrez valeur")
    If trim("" & msg)<> "" then exit do
    msgbox "veuillez compléter les champs", vbOKOnly
    Loop

  6. #6
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2017
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Bonsoir,

    merci pour vos réponse.

    dysorthographie, désolé mais je n'ai pas compris votre code, je n'ai donc pas réussi à l'appliquer à ma situation...

    Ayant lu les explications dans le lien de kiki29, je vais effectivement dégriser la commande "suivant" une fois que tous les champs sont remplis.

    pour le moment voici comment ca fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub userforme_initialize
    'charge toute les infos necessaire dans combobox et listbox, c'est ces infos que l utilisateur doit séléctionner
    suivant2.Enabled = False
    en sub
    ensuite, le calcul se lance avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Suivant2_click()
    'Msd=ql^2/8
    '...
    End sub
    dois-je rajouter une étape de vérification entre les deux sub présents ? si oui, quel est élément déclencheur ? un Change ? Est-ce possible demander le dégrisement de la commande "suivant" une fois que tous les champs aient "changé" ? si oui comment ?

    Car pour le moment j'ai grisé le bouton de commande "suivant" et tous les champs d'entrées sauf le premier.

    Une fois le premier "changé", le deuxieme champs se dégrise,... ainsi de suite jusqu'au dernier champs d'entrée qui dégrise la bouton "suivant".
    Mais j'ai du créer un sub pour chaque "listbox1_change", "listbox2_change",... De plus je force l'utilisateur à remplir les champs dans un certaine ordre, ce qui n'est pas tjrs intéressant.

    J'espere que vous avez bien compris mon probleme et que vous trouverez une chouette solution

    Merci beaucoup.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2017
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Voila ce que j'ai fait : (sacahnt que tout ce qui est "choix..." sont les noms de combobox)

    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
    Private Sub choixresistancebeton2_AfterUpdate()
     
    If choixresistancearmature2 <> "" Then
    Suivant4.Enabled = True
    End If
     
    End Sub
     
    Private Sub choixresistancearmature2_AfterUpdate()
     
    If choixresistancebeton2 <> "" Then
    Suivant4.Enabled = True
    End If
     
    End Sub
    Vu que j'ai que 2 ou 3 listbox, combobox par userform, ca reste cette technique reste possible, mais elle n'est pas adapté pour des userform avec bcp de de choix a faire...

    Si vous avez d'autres solutions, c'est tjrs interessant merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    on ne teste pas un booléen pour affecter la même valeur à un autre booléen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Suivant4.Enabled =choixresistancearmature2 <>""
    !

Discussions similaires

  1. Réplication aller-retour et message d'erreur
    Par hoppa dans le forum Installation
    Réponses: 1
    Dernier message: 06/09/2011, 17h25
  2. Réponses: 12
    Dernier message: 20/03/2009, 15h01
  3. Messages d'erreur (même au début)
    Par yoshi10 dans le forum Code::Blocks
    Réponses: 4
    Dernier message: 29/10/2008, 01h17
  4. Retour message d'erreur
    Par cerede2000 dans le forum SAP
    Réponses: 1
    Dernier message: 23/10/2008, 18h25
  5. Retour à la ligne dans un message d'erreur
    Par Breezy dans le forum JSF
    Réponses: 5
    Dernier message: 01/08/2008, 17h55

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