Do while --- > Loop qui pose problème

Bonjour à tous,

j'ai créé un formulaire pour des demandes de devis. Dans le code, je souhaite boucler sur ces cellules (que j'ai nommé) afin de vérifier qu'elles sont bien remplies et si ce n'est pas le cas, alerter le demandeur qu'il faut compléter.

j'ai codé comme suit :

Worksheets("formulairesaisie").Select
Range("FS_demandeur").Select
Do While IsEmpty(ActiveCell.Value) = True
MsgBox "Demandeur obligatoires", vbOKOnly, "Champ obligatoire"
Range("FS_demandeur").Select
Loop

le problème, c'est que si on clique sur "ok" de la msgbox, la boucle se relance et on ne peut pas remplir la cellule citée.

merci de votre aide.

VL

Dim bStop as Boolean
bStop)False
Worksheets("formulairesaisie").Select
Range("FS_demandeur").Select
Do While IsEmpty(ActiveCell.Value) = True and bStop=False
if MsgBox ("Demandeur obligatoires", vbOKCancel, "Champ obligatoire: (cancel=Stop)") = vbCancel Then bStop=True
Range("FS_demandeur").Select
Loop

Bonjour VL07247

Mettre une variable d'arret de boucle

Merci Scraper.

le bstop permets de sortir de la macro, mais je voudrais que le demandeur n'est pas d'autres choix que de remplir "FS_demandeur"

Bonjour VL07247

Dans ce cas, il faut remplacer MsgBox par un InputBox pour que la saisie ce fasse dans la boite de dialogue

  Dim Rng As Range
  Set Rng = Worksheets("formulairesaisie").Range("FS_demandeur")
  Do While Rng = ""
    Rng = InputBox("Merci de saisir le nom du demandeur", "Demandeur obligatoires !")
  Loop

Ou mettre un test avant enregistrement ou impression

@+

Salut

la proposition de BrunoM45 est bien pratique , pour faciliter le remplissage des cellule et en même temps s'assurer qu elles seront toutes rempli

si tu veux encore essayer les msgbox voici deux propositions :

Worksheets("formulairesaisie").Select
Set Rng = Union(Range("FS_demandeur"), Range("FS_demandeur")) '................
'or Rng.Interior.ColorIndex = 3
For Each c In Rng
If IsEmpty(c) Then MsgBox "Merci de remplir le champ selectionné"
c.Select 'or c.Interior.ColorIndex = 3
Exit Sub
Next
Worksheets("formulairesaisie").Select
Set Rng = Union(Range("FS_demandeur"), Range("FS_demandeur")) '................
 Rng.Interior.ColorIndex = 2
For Each c In Rng
If IsEmpty(c) Then rslt = rslt & ", " & c.Address(0, 0)
c.Interior.ColorIndex = 3
Next
MsgBox "Merci de remplir le champ selectionné" & rslt

Bonjour,

merci pour toute vos réponses.

Vos réponses répondent toutes à mon besoin.

Particulièrement, celle de BrunoM45 me convient bien. Cependant, le remplissage de la cellule nommé ("fs_demandeur") est lié une liste déroulante (validation de données). Tel que codé par BrunoM45, Inputbox ne me permet de reprendre la liste déroulante, et je ne sais pas faire. Et cela est-il possible?

merci de votre support.

VL

Bonjour VL07247

Dans ce cas, il faut créer un USF avec une liste déroulante qui reprend celle de la validation de donnée

Et au lieu de faire un InputBox() on affiche l'USF

@+

Merci de vos réponse.

je ne suis pas assez à l'aise avec les userform. faut que je me forme.

merci à tous de vos réponses

Rechercher des sujets similaires à "while loop qui pose probleme"