Autres Verrouillage auto de ligne, après saisie d'une de ses cellules (via liste déroulante). Une seule cellule par ligne (doit pouvoir être saisie)

Slavko.R

XLDnaute Nouveau
Bonjour à vous tous, membres éminents de ce forum

J'ai crée un tableau Excel (2007) à l'intérieur duquel, une zone spécifique de variables est à saisir avec plusieurs listes déroulantes.
Dans cette zone, nous avons 6 lignes (22;23;24;25;26 & 27) et 4 colonnes (E;F;G;H), ce qui nous donne une zone avec 24 ITEMS potentiels.
Sauf que je ne veux pas que les 24 ITEMS puissent être saisies en même temps.

Je ne veux qu'une seule réponse possible par ligne (au choix), soit: "1"; "2"; "3" ou "4".
Une fois ce choix ou variable saisie (via liste déroulante) dans des cellules de la première ligne, cette même ligne doit être impérativement verrouillée (verrou automatique).
Dit autrement, plus aucune autre saisie ou modification ne peut intervenir ensuite

Il en va ainsi, pour chacune des 6 lignes de cette zone spécifique.
En commençant par la ligne 22 et pour finir par la ligne 27

je m'adresse à vous chers membres de ce forum et compte sur votre talent pour m'apporter une réponse simple et efficace (Exit la soluce "REVISION", "PROTEGER LA FEUILLE").
Je ne doute pas un seul instant qu'il y aura quelqu'un pour vouloir relever ce défis, j'attends donc vos propositions.

D'avance merci,
Cordialement,
Slav
 

Pièces jointes

  • FicheD'agréage(ProgrammeComplet).xlsb
    33.5 KB · Affichages: 3

Robert

XLDnaute Barbatruc
Bonjour Slavko, bonjour le forum,

Au départ la plage doit être déverrouillée... Puis ces deux événementielles à placer dans l'onglet Feuil1 (Feuil1) :

VB:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Application.Intersect(Target, Range("E22:H27")) Is Nothing Then Exit Sub 'si le changement à lieu aillerus que dans la plage E22:H27, sort de la procédure
ActiveSheet.Unprotect 'déprotège l'onglet
Cells(Target.Row, "E").Resize(1, 4).Locked = True 'verrouille la ligne (colonne E à H) modifiée
ActiveSheet.Protect 'protège l'onglet
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection dans l'onglet
If Application.Intersect(Target, Range("E22:H27")) Is Nothing Then Exit Sub 'si la sélection à lieu aillerus que dans la plage E22:H27, sort de la procédure
If Target.Cells.Count > 1 Then Target(1, 1).Select 'si plus d'une seule cellule sélectionnée, ne sélectionne que la première
End Sub
 

Slavko.R

XLDnaute Nouveau
Bonjour Robert

Tout d'abord, un grand merci pour ton investissement et ton implication dans la résolution de mon problème.
Ensuite, je salue tes compétences et on talent dans la maîtrise de VBA et peut être plus globalement Excel.
Car ton code, c'est de la "Balle!", mon brave.
Il fonctionne à merveille.

Tu as parfaitement saisi ce dont j'avais besoin et ça fonctionne au "Poile", ce cas est donc bien résolu...
Encore une fois, merci et chapeau l'artiste.

PS: Cela faisait deux ans que je bricolais dans mon coin des bouts de codes, récupérés ici ou là, sans succès!

Cordialement,
Slav
 

Statistiques des forums

Discussions
302 236
Messages
2 001 687
Membres
215 256
dernier inscrit
Adso