Excel - cellule non vide

Bonjour,

Mon souci est le suivant :

Sous excel, j'ai une liste déroulante dans une cellule.

Je voudrais que la personne qui utilise ce classeur ne puisse pas supprimer (la liste déroulante) ou mettre vide dans la cellule.

Hors si je protège cette cellule, l'utilisateur ne pourra plus changer la valeur de la cellule (vu que c'est une liste déroulante).

Comment dois-je procéder ?

De même, pour le fait que l'utilisateur ne puisse pas saisir une autre valeur que celle présente dans ma liste déroulante.

Cordialement

Bonjour,

Merci de joindre un fichier pour la compréhension du problème.

Bonjour,

Une exemple ... et une solution

12kurapiika.xlsm (16.84 Ko)

A+

Merci frangy pour votre solution.

Pourrais-tu m'expliquer comment tu procède ?

Cordialement

Au faite j'ai une autre question,

Dans ma feuille, plusieurs cellules d'une même colonne(exemple colonne A) peuvent être concernées par les listes déroulantes.

Je ne peux pas savoir à l'avance combien de lignes sont définis.

Aurais-tu une autre solution ?

Cordialement,

P.S : si tu as un code pouvant savoir quel est la cellule sélectionnée par l'utilisateur sinon voila un bout de code pour récupérer la dernière ligne

'-- Récupération de la dernière ligne inoccupée

For Each cel In Range("A01:A60000")

If IsNull(cel.Value) Or cel.Value = "" Then

Exit For

End If

Next

i = cel.Row - 1

Par nature, la validation permet de limiter les choix disponibles en utilisant la liste. Par contre, elle n'interdit pas l'effacement de la plage.

J'ai placé une procédure évènementielle Worksheet.Change dans le module de la feuille "Feuil1".

A chaque modification de la valeur de A1, la procédure vérifie si la cellule contient des données valides.

Si c'est le cas, on mémorise la valeur de A1. Dans le cas contraire, on affiche un message et on réaffecte la valeur mémorisée à A1.

A+

EDIT :

J'ai 2 propositions à te soumettre :

1) Attendre la réponse à une question avant d'en poser une autre.

2) Joindre un classeur exemple pour éviter à l'intervenant de se perdre en conjectures.

Je vais attendre un peu, des fois que tu aies encore quelque chose à ajouter

A+

Ci-joint, l'exemple en question.

Il s'agit de la colonne F. Comme tu peux le voir, l'utilisateur peut rajouter autant de ligne qu'il veut avec le bouton "Générer une ligne".

Mon essai, avec ton code, n'est pas concluant.

Désolé pour la double question et pour le fichier manquant.

Cordialement.

14exemple.xlsm (34.43 Ko)

Dans l’exemple joint, j'ai utilisé la feuille "Param" pour mémoriser les priorités.

15kurapiika.xlsm (37.02 Ko)

A te relire.

A+

Merci

Tu as juste oublié le "Exit sub", dans le cas où l'utilisateur rajoute une ligne grâce au bouton (la macro tourner en boucle).

Très bon boulot.

A +

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count <> 1 Then Exit Sub

If Not Application.Intersect(Target, Range(Range("F12"), Range("F" & Rows.Count))) Is Nothing Then

If Target.Validation.Value = False Then

MsgBox "Vous devez choisir une priorité dans la liste proposée."

Target = Worksheets("Param").Range(Target.Address)

Exit Sub

Else

Worksheets("Param").Range(Target.Address) = Target

End If

End If

End Sub

Rechercher des sujets similaires à "vide"