Vérifier une condition sur VBA

Résolu
flodu64 Messages postés 15 Statut Membre -  
flodu64 Messages postés 15 Statut Membre -
Bonjour,

J'ai créé plusieurs boîtes de dialogue dans lesquelles j'ai des textbox et des listbox essentielles.

J'ai mis en place les formules suivantes afin qu'Excel vérifie que je ne pas valide pas la boite de dialogue sans avoir complété les textbox et listbox essentielles.

Voici le début du code :

If INTERVENANT = "" Then
MsgBox ("Attention vous n'avez pas sélectionné d'intervenant")

Else

If CHANTIER = "" Then
MsgBox ("Attention vous n'avez pas sélectionné de chantier")
Else

If LIVRAISON = "" Then
MsgBox ("Attention vous n'avez pas renseigné le lieu de livraison ")
Else
If...

Le code fonctionne très bien. Cependant, si par exemple j'oublie de remplir la Texbox INTERVENANT, je valide la MSG Box qui me fait remarquer mon oubli.
Lorsque je valide à nouveau ma boîte de dialogue avec l'erreur corrigée, excel ne vérifie plus cette condition, il reprend donc à If CHANTIER...

J'aimerais qu'Excel vérifie à chaque fois toutes les conditions si une d'entre elles n'est pas rempli.

Merci par avance.

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Généralement, plutôt que d'afficher des messages qui deviennent rapidement agaçants pour l'utilisateur, on désactive le bouton Valider tant que les conditions ne sont pas remplies.
    On peut éventuellement utiliser un label pour informer l'utilisateur des manquements
    1
    1. flodu64 Messages postés 15 Statut Membre
       
      Bonjour Patrice,

      Comment fait-on pour désactiver un bouton ? J'ai essayé ton idée mais j'ai le même problème pour l'instant. Voici le code entier (le label se nome ERREUR) :
      rivate Sub VALIDER_Click()

      If INTERVENANT = "" Then
      ERREUR = "Attention vous n'avez pas sélectionné d'Intervenant"
      Else

      If CHANTIER = "" Then
      ERREUR = "Attention vous n'avez pas sélectionné un chantier"
      Else

      If LIVRAISON = "" Then
      ERREUR = "Attention vous n'avez pas renseigné le lieu de livraison "
      Else

      Range("N3") = INTERVENANT
      Range("C8") = CHANTIER
      Range("C9") = LIVRAISON
      Range("C7") = DEVIS


      LIVRAISON = ""
      DEVIS = ""

      Unload Données_BC
      Données_BC.Hide
      End If
      End If
      End If
      End Sub
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      Mieux qu'un discours, un exemple :
      https://mon-partage.fr/f/6M2ajo5d/
      0
      1. flodu64 Messages postés 15 Statut Membre > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        Je trouve votre solution géniale!

        Merci.

        je vais modifier toutes mes boites de dialogue, c'est plus ergonomique comme ça.
        0
      2. flodu64 Messages postés 15 Statut Membre > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        A tout hasard j'ai posé une autre question sur ce forum

        Je souhaite créer une macro qui me permet d'exporter la feuille active (Excel 2007) en PDF et renommer ce fichier PDF avec le nom de la feuille active.

        Ma formule ne fonctionne pas.

        Attention j'ai voulu renommer mon dossier PDF avec la cellule N2 qui porte le nom de la feuille active car je ne sais pas comment récupérer le nom d'une feuille dont le nom change à chaque création d'un nouveau bon de commande.

        Sub Valider_BC_PDF()

        ' Enregistrer en PDF

        Dim fichier As String
        'adaptez le nom de la feuille
        With ActiveSheet.Select
        fichier = Range("N2").pdf
        'pensez a ecrire le chemin
        CHEMIN = fichier
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=CHEMIN, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True

        End With
        End Sub

        Sheets("ACCUEIL").Select
        End Sub
        0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Dans ton IF .... si la condition n'était pas rempli ... après ton "msgbox" .. tu quittes la macro.
    De sorte à ce que l'utilisateur soit obligé de re-cliquer sur ton bouton enregistgrer et que ça relance l'ensemble de tes vérifications.

    0
    1. flodu64 Messages postés 15 Statut Membre
       
      Bonjour Jordane,

      J'ai écouté ton conseil. Je ferme et je ré-ouvre la boite de dialogue à chaque condition non respecté, et comme je n'ai rien dans l'initialize les informations restent affichées.

      Merci
      0