Saisie obligatoire !!

  • Initiateur de la discussion Initiateur de la discussion Jullaye74
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jullaye74

Guest
Bonjour,

Comment faire pour que l'utilisateur de mon formulaire soit obligé de saisir un chiffre (même 0 si aucun repas commandé) pour les repas "normal" (B21:O21) ??

Je veux plus qu'une simple validation de données. Je veux vraiment ne pas lui laisser le choix.

Merci beaucoup pour votre aide précieuse ! 🙄

Bonne journée
 

Pièces jointes

Re : Saisie obligatoire !!

Bonjour !

Je veux qu'un message s'affiche et oblige l'utilisateur à inscrire quelque chose.

En fait, il y aura très peu de cas où aucun repas normal sera commandé et beaucoup de personnes oublient d'inscrire le nombre ce qui posent beaucoup de problème pour la personne qui réceptionne ce formulaire car elle doit TOUT contrôler et envoyer 1 mail de rappel.

En conclusion : je veux qu'un message s'affiche à l'ouverture du fichier et je veux que le message ne disparaisse pas tant qu'aucun nombre est saisi (même 0).

Merci ++++++++
 
Re : Saisie obligatoire !!

Bonjour Jullaye74, fhoest,

Une autre solution qui remet automatiquement la(les) cellule(s) à 0 si elle(s) est(sont) vide(s).

L'affichage d'un message n'est de ce fait plus nécessaire mais reste toujours possible : il suffit de retirer l'apostrophe sur la ligne MsgBox...

Cordialement.
 

Pièces jointes

Re : Saisie obligatoire !!

Super ! Je pense que ça me conviendrait.
Par contre, c'est quoi la ligne MsgBox ?? où est-elle ?

RE :

La ligne dont je te parle est la quatrième, celle qui commence par une apostrophe :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("B21:O21"), Target) Is Nothing Then
  Application.EnableEvents = False

  'MsgBox "Quantité obligatoire dans la ligne Normal !" <--- effacer (') pour activer l'affichage du message
  
For Each cel In Selection
    If cel.Row = 21 Then cel.Value = IIf(cel.Value = "", 0, cel.Value)
  Next
  Application.EnableEvents = True
End If
End Sub
Mais, à mon avis, ce message n'a pas d'utilité pratique dans cette solution. Je l'ai prévu uniquement pour répondre à ta demande initiale.

Cordialement.
 
Re : Saisie obligatoire !!

RE (suite) :

Je suis désolé, je n'avais pas testé mais, après analyse, il s'avère que le message s'affiche même si un zéro ou une autre valeur existe dans la cellule. Alors non seulement il n'a aucune utilité, mais en plus il est particulièrement gênant. Je te conseille donc de supprimer purement et simplement cette ligne.

Cordialement.
 
Re : Saisie obligatoire !!

Bonsoir Tous,

si tu tiens à ton message, change d'évènement ainsi :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim P As Range, C As Range
  Set P = Range("B21:O21")
  If Application.CountBlank(P) > 0 Then MsgBox "il faut des nombres en ligne Normal !" & Chr(10) & _
    "Corriger les 0 éventuellement.", vbInformation, "Attention..."
  For Each C In P
    If C = "" Then C = 0
  Next
End Sub
Tu auras comme avec la proposition de Papou-net😉, tes cellules mises à 0 avec possibilté de changement.
 

Pièces jointes

Re : Saisie obligatoire !!

Bonjour à tous et merci beaucoup pour votre aide !

Vos propositions sont bien mais ne correspondent pas encore tout à fait à ce que je souhaiterais... Le message s'affiche mais il disparait même si les cellules ne sont pas complétées...

Je me suis donc inspirée de vos codes pour en faire un à ma sauce mais il y a un problème...

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Worksheets("1. Repas midi").Range("B21 : O21") = "" Then if MsgBox ("Veuillez, svp, entrer une quantité pour les repas Normal (même 0) dans les cellules prévues à cet effet. Merci 🙂")
If Worksheets("1. Repas midi").Range("B21 : O21") >= 0 Then
End If
End Sub

Est-ce que quelqu'un peut me dire pourquoi svp ??

Merci d’avance !
 
Re : Saisie obligatoire !!

Bonjour,
Tu parles bien de la ligne 21,uniquement
avec ce que j'ai fait tant que la ligne n'est pas complétée tu as le message je pense que c'est assez embêtant pour l'utilisateur.
Pour les autres propositions je pense qu'elles sont aussi bonne que la mienne ,le fait est qu'il faut au mieux expliquer le problème si tu veux que l'on réponde mieux a ta demande.

Avec ceci en plus l'utilisateur n'as plus d'autres choix que de remplir la ou les cellules.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 21 Then Exit Sub
envoi_message = False
For Each Target In Range("B21:O21")
If Target = "" Then envoi_message = True
Next
If envoi_message = True Then MsgBox " Veuillez impérativement remplir les cellules (B21:O21)", vbCritical
For Each Target In Range("B21:O21")
If Target = "" Then Target.Activate
Next
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
1 K
L
Réponses
40
Affichages
5 K
lalimace
L
G
Réponses
23
Affichages
3 K
guillaumevalcin
G
Retour