Vérifier une condition sur VBA

Résolu
flodu64 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
flodu64 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
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.


A voir également:

2 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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   Statut Membre Dernière intervention  
 
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Mieux qu'un discours, un exemple :
https://mon-partage.fr/f/6M2ajo5d/
0
flodu64 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 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
flodu64 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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