Vérifier une condition sur VBA

Résolu/Fermé
flodu64 Messages postés 15 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 21 juin 2017 - 21 juin 2017 à 12:09
flodu64 Messages postés 15 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 21 juin 2017 - 21 juin 2017 à 17:03
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

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
21 juin 2017 à 12:15
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
flodu64 Messages postés 15 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 21 juin 2017
21 juin 2017 à 12:44
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
21 juin 2017 à 13:50
Bonjour,

Mieux qu'un discours, un exemple :
https://mon-partage.fr/f/6M2ajo5d/
0
flodu64 Messages postés 15 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 21 juin 2017 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
21 juin 2017 à 14:44
Je trouve votre solution géniale!

Merci.

je vais modifier toutes mes boites de dialogue, c'est plus ergonomique comme ça.
0
flodu64 Messages postés 15 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 21 juin 2017 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
21 juin 2017 à 17:03
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
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
21 juin 2017 à 12:13
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
flodu64 Messages postés 15 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 21 juin 2017
21 juin 2017 à 12:32
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