Verrouillage de listes de choix

  • Initiateur de la discussion Initiateur de la discussion maho_7
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

maho_7

Guest
Bonjour,

Je dois réaliser un questionnaire dans lequel les utilisateurs vont répondre à des questions en faisant un choix dans une liste. Faute de mieux, j'utilise Excel 97.
Certaines de leurs réponses vont en induire d'autres et ainsi verrouiller certaines listes.
J'ai donc écrit un programme dans VBA pour produire ces actions comme dans l'exemple.
Le programme ne fonctionne qu'à moitié puisque j'arrive à imposer des réponses mais la cellule ne se verrouille pas.
Je n'arrive pas à voir ce qui cloche...
 

Pièces jointes

Re : Verrouillage de listes de choix

Bonjour Maho,

J'espère que tu es là pour apprendre ....

bon voici le code modifié et testé sous Excel 2010

J'ai remplacé tous les If pas un select case à mon avis beaucoup plus lisible dans ce cas d'utilisation.

Je pense que tous fonctionne comme cela ,

si tel n'était pas le cas , le ca marche pas habituel ne résould rien , donc précises ce que ça fait et ce que tu attends . ( Mais testes déjà et l'on verra )
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'Unniuement si la colonne du changement est la C
If Target.Column = 3 Then
  
  ActiveSheet.Unprotect "chtx12" 'déprotège l'onglet
  Application.EnableEvents = False 'Empêcher les évènements lors de la modification
  'Pour être sûr de pouvoir au moins cliquer quelque part
  Range("C1").Locked = False
  
  'Si la réponse à la première question est "X" alors...
  Select Case Cells(1, 3).Value

  Case "X"   'L'utilisateur ne répond pas à la question 2. On verrouille la cellule.
              Range("C3").Value = "X"
              Range("C3").Locked = True
  
  Case "Oui" 'Si la réponse à la première question est "Oui" alors...
             'L'utilisateur doit répondre à la question 2. On déverrouille la cellule.
              Range("C3").Locked = False
  
  Case "Non" 'Si la réponse à la première question est "Non" alors...
             'L'utilisateur ne répond pas à la question 2. On verrouille la cellule.
              Range("C3").Value = "X"
              Range("C3").Locked = True
  
  End Select
  Application.EnableEvents = True 'rétablir les évènements
  ActiveSheet.Protect "chtx12" 'protège l'onglet

End If
End Sub


cordialement
 
Dernière édition:
Re : Verrouillage de listes de choix

Re ,

une petite variante , où là tu ne peux selectionner que les cellules déverrouillées

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'Unniuement si la colonne du changement est la C
If Target.Column = 3 Then
  
  ActiveSheet.Unprotect "chtx12" 'déprotège l'onglet
  Application.EnableEvents = False 'Empêcher les évènements lors de la modification
  'Pour être sûr de pouvoir au moins cliquer quelque part
  Range("C1").Locked = False
  
  'Si la réponse à la première question est "X" alors...
  Select Case Cells(1, 3).Value

  Case "X"   'L'utilisateur ne répond pas à la question 2. On verrouille la cellule.
              Range("C3").Value = "X"
              Range("C3").Locked = True
  
  Case "Oui" 'Si la réponse à la première question est "Oui" alors...
             'L'utilisateur doit répondre à la question 2. On déverrouille la cellule.
              Range("C3").Locked = False
  
  Case "Non" 'Si la réponse à la première question est "Non" alors...
             'L'utilisateur ne répond pas à la question 2. On verrouille la cellule.
              Range("C3").Value = "X"
              Range("C3").Locked = True
  
  End Select
  Application.EnableEvents = True 'rétablir les évènements
  ActiveSheet.Protect "chtx12" 'protège l'onglet
  ActiveSheet.EnableSelection = xlUnlockedCells
End If
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour