Obliger à remplir une cellule
Résolu
simkmil
Messages postés
481
Date d'inscription
Statut
Membre
Dernière intervention
-
simkmil Messages postés 481 Date d'inscription Statut Membre Dernière intervention -
simkmil Messages postés 481 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai encore besoin de vous !
Sur une feuille, j'ai une cellule (J6) qui doit absolument être remplie par le préposé.
Je veux donc rendre ce remplissage obligatoire. Pour cela j'ai fais une boucle :
if ("J6")="" then
msgbox "vous devez remplir la cellule J6"
end if
Le problème est que le message apparait bien, mais le programme continue que la cellule soit remplie ou non.
J'ai donc précédé mon code par
Do While ("J6")<> ""
et terminé par Loop
et ici ça tourne sans arret et le seul moyen que j'ai eu pour sortir de mon programme fut d'arrêter Excel]. et pas moyen d'aller inscrire quelque chose dans J6.
Merci de votre aide
Sur une feuille, j'ai une cellule (J6) qui doit absolument être remplie par le préposé.
Je veux donc rendre ce remplissage obligatoire. Pour cela j'ai fais une boucle :
if ("J6")="" then
msgbox "vous devez remplir la cellule J6"
end if
Le problème est que le message apparait bien, mais le programme continue que la cellule soit remplie ou non.
J'ai donc précédé mon code par
Do While ("J6")<> ""
et terminé par Loop
et ici ça tourne sans arret et le seul moyen que j'ai eu pour sortir de mon programme fut d'arrêter Excel]. et pas moyen d'aller inscrire quelque chose dans J6.
Merci de votre aide
A voir également:
- Obliger à remplir une cellule
- Organigramme a remplir word - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Excel si cellule contient partie texte ✓ - Forum Excel
1 réponse
Salut,
ici ça tourne sans arret
Ça veut dire que ta macro se lance dès l'ouverture du classeur en question et s'arrête lorsque tu fermes le classeur, non ?
Ton code VBA ressemble à ça ?
Dans ce code, on ne laissera jamais la possibilité d'écrire dans J6, ni dans d'autres cellules.
Tu as 2 options. La première est la plus simple. En imaginant que l'utilisateur va fermer le classeur, tu lances, dans le gestionnaire d'événements, la macro lorsque l'utilisateur ferme le classeur pour le contraindre à remplir cette cellule.
Ou, mieux, car s'il a passé 3h dans le classeur et qu'il veut à tout prix sortir de celui-ci, la contrainte va plus l'énerver qu'autre chose. Tu ajoutes dans le do while un inputbox :
ici ça tourne sans arret
Ça veut dire que ta macro se lance dès l'ouverture du classeur en question et s'arrête lorsque tu fermes le classeur, non ?
Ton code VBA ressemble à ça ?
do while range("J6").value = "" msgbox "Vous devez remplir la cellule J6" loop
Dans ce code, on ne laissera jamais la possibilité d'écrire dans J6, ni dans d'autres cellules.
Tu as 2 options. La première est la plus simple. En imaginant que l'utilisateur va fermer le classeur, tu lances, dans le gestionnaire d'événements, la macro lorsque l'utilisateur ferme le classeur pour le contraindre à remplir cette cellule.
Ou, mieux, car s'il a passé 3h dans le classeur et qu'il veut à tout prix sortir de celui-ci, la contrainte va plus l'énerver qu'autre chose. Tu ajoutes dans le do while un inputbox :
do while range("J6").value = "" range("J6").value = inputbox("Vous devez remplir la cellule J6.") loop do while vartype(range("J6").value) <> vbString range("J6").value = inputbox("La cellule J6 doit contenir du texte." loop
je met immédiatement ceci en test.
c'est super, ça marche très bien SAUF que ... j'avais omis de dire que dans J6 j'ai une liste déroulante ...
et mon input box ne me le permet pas.
Aurais tu une alternative ?
merci
Je fais de la programmation, mais, VBA, je connais peu.
Rien n'empêche de faire autant d'inputbox que d'éléments à entrer dans la liste déroulante.
Imaginons que ta liste déroulante doive contenir 5 éléments : ["avion", "voiture", "moto", "vélo", "bateau"]
Tu crées un Array de String de 5 éléments. Et tu boucles 5 fois un inputbox.
Par contre, je viens de me rendre compte que dans mon message 1, la première option va bloquer Excel, donc, il ne faut pas la faire.
For Each c In [Obligatoires]
If c.Value = "" Then nb = nb + 1
Next c
'If [K47] = "" And ([W44] = "autre service" Or [W44] = "PRS directe") Then nb = nb + 1
If nb > 0 Then MsgBox "Il manque " & nb & " champs obligatoires": Exit Sub
je vais donc mettre ce post en résolu.
merci de ton aide. et bon week end