Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Autoriser la saisie d'une date dans une cellule sous deux conditions

Pat54

XLDnaute Nouveau
Bonjour à tous,
je butte sur un soucis dans un formulaire.(Excel 2019)
j'ai 2 cellules A1 et A2, la cellule A1 est une liste déroulante avec les valeurs " oui" et "non" . J'aimerai qu'il ne soit possible de pouvoir rentrer une date dans la cellule A2 que si dans A1 soit sélectionné "oui" .
J'ai essayé de valider les données de A2 de la manière suivante: dans options/Autoriser/personnalisé et formule =NBVAL(A1) mais si je rentre non, je peux mettre une date, j'ai essayé aussi =A1="oui" mais là si je ne mets rien dans A1, je peux rentrer une date dans A2.
Est ce quelqu'un peut me donner une solution ???
Merci d'avance et bonne journée
 

patricktoulon

XLDnaute Barbatruc
bonjour
pour ce genre de contrôle de pré/post saisie il te faudra une macro tu ne pourra pas gérer les deux avec une formule (forcement reference circulaire ) meme avec une validation
donc ton fichier c'est un xlsx ou xlsm?
tu veux des macros ou pas ?
soyez plus complet dans vos demandes
 

Pat54

XLDnaute Nouveau
Bonjour à vous deux et merci pour vos réponses, @JHA je vais tester ta solution et te tiendrai au courant. @patricktoulon mon fichier est bien un xlsm et si tu veux bien me fournir le code, je suis preneur bien évidemment. Merci d'avance
Cordialement
Patrick du 54
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case Target.Column
    Case 2
        If Target.Offset(, -1) <> "Oui" Then MsgBox "nan nan!!": Target.Offset(, -1).Select: Exit Sub
    Case 1
        If Target.Value <> "Oui" Then Target.Offset(, 1) = ""
    End Select

End Sub
 

Pat54

XLDnaute Nouveau
Re, merci pour le code. Dans la description du problème j'avais pris les cellules A1 et A2 pour exemple mais je me rends compte que je n'aurai pas dû car en fait c'est plus complet que çà. Les cellules a prendre en compte sont J8 et J10 et j'ai essayé de modifié ton code comme ceci mais cela ne fonctionne pas. Au cas ou , je joins le fichier.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case Target.Address
Case "$J$10"
If Target.Offset(, -1) <> "oui" Then MsgBox "remplir la case certif!!": Target.Offset(, -1).Select: Exit Sub
Case "$J$8"
If Target.Value <> "oui" Then Target.Offset(, 1) = ""
End Select
End Sub
 

Pièces jointes

  • Liste des coureurs.xlsm
    43.4 KB · Affichages: 0

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…