Microsoft 365 Comment rendre une plage ou cellule obligatoire ?

Lazz

XLDnaute Nouveau
Bonjour,
J'aimerai savoir si c'était possible de rendre une cellule obligatoire.
J'explique ma situation :
dans mon tableau j'ai plusieurs colonne à renseigner (date de commande, fournisseurs, montant de la factures etc...)
Et si je reçois une facture je veux savoir "si c'est la dernière"
Donc je veux que ma colonne soit impérativement compléter sinon et je veux qu'on ne puisse pas continuer la saisie ou pas enregistrer.

Je ne suis pas à l'aise avec les macros
Et avec la validation de données ça ne m'envoie le message que si je double clic sur la cellule et ce n'est pas ce que je recherche

Avec illustration : je veux que si F= oui ou si montant de facture (H) est renseigné alors obligation de remplir N
1637685488895.png

Pouvez-vous m'aidez ?
Merci
 

Wayki

XLDnaute Occasionnel
Bonsoir,
J'ai pas la solution pour l'enregistrement, mais essayez ce code dans le module de feuille, il a marché chez moi :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

f = Range("F" & Rows.Count).End(xlUp).Row
If Range("N" & f) = "" And Range("F" & f) = "oui" Then MsgBox "Veuillez saisir une valeur !": Range("N" & f).Activate
End Sub
A +
 

Hervé S.

XLDnaute Nouveau
Tu peux inciter les personnes à remplir la cellule avec du format conditionnel (FC).
Si cellule = vide, alors mettre fond en jaune.
Attention, il faudra surement mettre dans la formule du FC :
ET(cellule en question = vide ; autre cellule choisi judicieusement différent vide).
Exemple et(A2="";A1<>"").
Attention, quand tu mets les guillemets, Excel va faire n'importe quoi. Tu vas saisir 2 fois les guillemets, comme ça "" et Excel va ajouter des guillemets à tes guillemets. Retourne dans la formule du FC pour supprimer les guillemets en trop.

Tu peux aussi, mettre une macro qui s'exécute automatiquement à l'enregistrement pour prévenir que la cellule en question est vide. voir image

Capture1.PNG
 

Lazz

XLDnaute Nouveau
En colonne N, dans la formule du format conditionnel tu mets:
=ET(F2="OUI";H2>0)
Pour ce faire : onglet 'Accueil', bouton "Mise en forme conditionnelle", "Nouvelle règle"
voir image
Regarde la pièce jointe 1122619
Merci, la mise en forme conditionnelle fonctionne,
mais j'aimerai rendre cette case obligatoire, ou un message d'erreur.
pour qu'on soit obliger de remplir cette case si f=oui
 

Lazz

XLDnaute Nouveau
Bonsoir,
J'ai pas la solution pour l'enregistrement, mais essayez ce code dans le module de feuille, il a marché chez moi :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

f = Range("F" & Rows.Count).End(xlUp).Row
If Range("N" & f) = "" And Range("F" & f) = "oui" Then MsgBox "Veuillez saisir une valeur !": Range("N" & f).Activate
End Sub
A +
Super ça fonctionne !
une autre petite question... Connaissez vous le code pour remplir une autre case ? C-a-d si N est renseigner alors je veux que O soit obligatoirement renseigné aussi
oui alors quand F = oui alors N et O doivent obligatoirement être renseigné ?
Désolé je suis très nulle en VBA j'ai essayé de remettre le même code avec d'autre colonne mais ça n'a pas fonctionné... :(
 

Lazz

XLDnaute Nouveau
Super ça fonctionne !
une autre petite question... Connaissez vous le code pour remplir une autre case ? C-a-d si N est renseigner alors je veux que O soit obligatoirement renseigné aussi
oui alors quand F = oui alors N et O doivent obligatoirement être renseigné ?
Désolé je suis très nulle en VBA j'ai essayé de remettre le même code avec d'autre colonne mais ça n'a pas fonctionné... :(
Bon finalement ça fonctionnait pas si bien que ça du coup j'ai trouver autre chose :

Public Sub Worksheet_Change(ByVal Target As Range)
Dim rng2 As Range
If Target.Column = 8 Then
If Target.Value = "oui" Then
Set rng2 = Range(Cells(Target.Row, Target.Column + 8), Cells(Target.Row, Target.Column + 8))
rng2.Activate
Do While (IsEmpty(rng2.Value))
MsgBox ("Veuillez renseigner cette cellule")
rng2.Value = InputBox("")
Loop
End If
End If
End Sub

Ca fonctionne très bien mais j'ai encore mon problème : je ne peux pas dupliquer cette macro pour une autre case. est-ce possible de combiner deux macro identiques mais avec des case différentes ? (j'ai rendu la cellule N obligatoire mais mtn je veux que O soit obligatoire)
 

Wayki

XLDnaute Occasionnel
Bonjour,
Je me suis permis dans un premier temps de rectifier votre code qui ne marchait pas, et de le simplifier également.
VB:
Public Sub Worksheet_Change(ByVal Target As Range)
Dim rng2 As Range, rng3 as Range
If Target.Column = 6 And Target = "oui" Then

Set rng2 = Cells(Target.Row, Target.Column + 8)
Set rng3 = Cells(Target.Row, Target.Column + 9)
rng2.Activate
Do While IsEmpty(rng2) = True
MsgBox ("Veuillez renseigner cette cellule")
rng2.Value = InputBox("")
Do While IsEmpty(rng3) = True
rng3.Activate
MsgBox ("Veuillez renseigner cette cellule")
rng3.Value = InputBox("")
Loop
Loop
End If
End Sub
Il reste un cas de figure, c'est celui où la valeur est renseignée puis supprimée, la cellule se retrouve vide sans message et sans boucle.
Je regarde pour prendre en compte les 2 cellules
A +
 
Dernière édition: