Saisie obligatoire !!

Jullaye74

XLDnaute Junior
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 ! :rolleyes:

Bonne journée
 

Pièces jointes

  • Repas_saisie obligatoire.xlsx
    18.7 KB · Affichages: 68

Jullaye74

XLDnaute Junior
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 ++++++++
 

Papou-net

XLDnaute Barbatruc
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

  • Copie de Repas_saisie obligatoire.xlsm
    24.9 KB · Affichages: 68

Papou-net

XLDnaute Barbatruc
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.
 

Papou-net

XLDnaute Barbatruc
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.
 

Fo_rum

XLDnaute Accro
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

  • SaisieForcée.xlsm
    23.4 KB · Affichages: 42

Jullaye74

XLDnaute Junior
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 !
 

fhoest

XLDnaute Accro
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 159
Messages
2 085 836
Membres
102 998
dernier inscrit
billABDELL