XL 2013 Problème avec liste déroulante

good57

XLDnaute Occasionnel
Bonjour le forum !

Tout d'abord, j'ai voulu reproduire mon problème dans un petit exemple simplifié mais je n'y suis pas parvenu, alors je vous envoie le fichier sur lequel je travaille actuellement. (Désole, c'est en Allemand :D )

Dans mon onglet vert, j'ai tout en haut une liste déroulante (non exhaustive).
Lorsque ma feuille est protégée, j'aimerais pouvoir modifier ponctuellement (tout en restant sur cette feuille) l'une des données de ma liste.

ex : je voudrais modifier "DH - Neuzustellung TORPEDO XXX" par "DH - Neuzustellung TORPEDO 868"

J'ai bidouillé avec la protection de ma feuille, mais aussi avec les options de validation de données, mais rien n'y fait.

Merci pour votre aide !
 

Pièces jointes

  • STUNDENZETTEL NEU2.xlsm
    94.2 KB · Affichages: 27

job75

XLDnaute Barbatruc
Bonsoir good57, Nicole,

Pas compris où est le problème car je n'en vois pas si la feuille est protégée.

En effet la cellule D1 est déverrouillée ce qui permet l'usage de la liste de validation.

Et l'on peut modifier manuellement D1 puisque l'alerte de validation est désactivée.

A+
 

job75

XLDnaute Barbatruc
Re,

Bon si l'on tient à augmenter la liste placer dans le code de la feuille "Stundennachweis" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D1]) Is Nothing Or [D1] = "" Then Exit Sub
Dim a$
[D1].Select
With Tabelle5.[A:A] 'feuille "Baustellenliste"
  .Find("", , xlValues) = [D1] 'la 1ère cellule vide est remplie
  .Sort .Columns(1), xlAscending, Header:=xlYes 'tri alphabétique de la liste
  .RemoveDuplicates Columns:=1, Header:=xlNo 'supprime les doublons
  a = .Cells(2).Resize(Application.CountA(.Cells) - 1).Address(External:=True)
End With
With [D1:R1].Validation
  .Delete
  .Add xlValidateList, Formula1:="=" & a
  .ShowError = False 'désactive l'alerte
End With
End Sub
Edit : c'est mieux d'appliquer la validation à toute la plage fusionnée D1:R1.

Fichier joint.

Après avoir modifié D1 j'espère que vous comprendrez pourquoi la liste a meilleure allure.

A+
 

Pièces jointes

  • STUNDENZETTEL NEU2(1).xlsm
    105.2 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour le forum,

La macro est évidemment plus simple :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D1]) Is Nothing Or [D1] = "" Then Exit Sub
[D1].Select
With Tabelle5.[A:A] 'feuille "Baustellenliste"i
  .Find("", , xlValues) = [D1] 'la 1ère cellule vide est remplie
  .Sort .Columns(1), xlAscending, Header:=xlYes 'tri alphabétique de la liste
  .RemoveDuplicates Columns:=1, Header:=xlNo 'supprime les doublons
End With
End Sub
si l'on utilise cette formule de validation en D1 :
Code:
=DECALER(Baustellenliste!$A$1;1;;EQUIV("zzz";Baustellenliste!$A:$A)-1)
Fichier (1 bis).

Bonne journée.
 

Pièces jointes

  • STUNDENZETTEL NEU2(1 bis).xlsm
    104.7 KB · Affichages: 23

good57

XLDnaute Occasionnel
Bonjour Nicole et Job75.
Merci pour vos réponses !

Quelques précisions sur ce que je souhaiterais :

- Je ne souhaite pas AJOUTER de nouvelles entrées dans ma liste (la liste doit rester telle quelle)

- En D1, je souhaite pouvoir modifier une entrée de ma liste lorsque la feuille est protégée.

Aucun problème pour le faire lorsque la feuille n'est pas protégée. Par contre lorsque la protection est activée, impossible de modifier par ex :"DH - Neuzustellung TORPEDO XXX" par "DH - Neuzustellung TORPEDO 868"

J'espère avoir été clair.
Merci !
 

good57

XLDnaute Occasionnel
Re,

Décidément, je ne comprends pas.
J'ai beau tourner mon problème dans tous les sens. Lorsque ma feuille est protégée (bien que ma cellule ne le soit pas), impossible d'apporter une modification a ma cellule D1.
Lorsque je double clique sur D1, ma liste ne fait que de se dérouler/enrouler.

A l'inverse, lorsque j'enlève le protection de la feuille, aucun problène : je double clique sur ma cellule et je peux modifier son contenu au clavier ....
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T