XL 2010 Listes cascade sans restriction de valeurs

azerty56

XLDnaute Nouveau
Bonjour à tous,

Petite question, j'ai récupéré le code ci-dessous, depuis ce site : http://boisgontierjacques.free.fr/, que j'ai adapté à mon beosin. Tout fonctionne correctement, mis à part que dans mon cas j'ai besoin de renseigner dans les cellules de nouvelles valeurs, le problème c'est qu'il y a une restriction sur les valeurs que peut prendre une cellule.

Est-il possible d'enlever cette restriction?

D'avance merci,

VB:
im zSaisie, NbNiv
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set zSaisie = Range("E2:H5000")   ' adapter
    NbNiv = 4                       ' adapter
    If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
      TblMap = [Table1].Value
      Set d1 = CreateObject("Scripting.Dictionary")
      nivCourant = Target.Column - zSaisie.Column + 1
      Dim Tmp(): ReDim Tmp(1 To nivCourant)
      For k = 1 To nivCourant - 1
        Tmp(k) = Target.Offset(, -(nivCourant - k))
      Next k
      For i = 1 To UBound(TblMap)
         témoin = True
         For k = 1 To nivCourant - 1
            If TblMap(i, k) <> Tmp(k) Then témoin = False: Exit For
         Next k
         If témoin Then d1(TblMap(i, nivCourant)) = ""
       Next i
       If d1.Count > 0 Then
           Target.Validation.Delete
           Set Rng = [O2].Resize(d1.Count)   ' adapter K2
           Rng.Resize(100).ClearContents
           Rng.Value = Application.Transpose(d1.keys)
           Target.Validation.Add xlValidateList, Formula1:="=" & Rng.Address
        End If
    End If
 End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
         nivCourant = Target.Column - zSaisie.Column + 1
         If nivCourant < NbNiv Then
           Application.EnableEvents = False
           Target.Offset(, 1).Resize(, NbNiv - nivCourant).Validation.Delete
           Target.Offset(, 1).Resize(, NbNiv - nivCourant) = ""
           Application.EnableEvents = True
         End If
     End If
End Sub
 

azerty56

XLDnaute Nouveau
Bonjour,

Je vais faire ça simplement : joins le fichier en question ou un fichier exemple si les données sont sensibles, sinon impossible de t'aider.

Bonne continuation

Bonjour xUpsilon,

Ci-joint un exemple de mon besoin. Pour préciser, j'ai un onglet de data, et un onglet liste, la liste est un TCD lié à la data, la macro qui génère la liste déroulante "en cascade" est appliquée sur l'onglet de data. L'objectif est de pouvoir ajouter manuellement de la data, et actualiser le TCD pour actualiser la liste.

En espérant être assez clair.

D'avance merci,
 

Pièces jointes

  • Exemple - Copie.xlsm
    52 KB · Affichages: 6

xUpsilon

XLDnaute Accro
Re,

Je suis pas sûr d'avoir compris ce que tu souhaites. A vrai dire l'exemple est assez bizarre, certaines colonnes finissent pas (vide), d'autres finissent par rien. Et puis le TCD renvoie des séries de données triées selon je ne sais quoi, sachant que les listes déroulantes qui constituent la source du TCD sont elles mêmes liées à je ne sais quoi, mais pourquoi n'avoir qu'un seul choix par liste déroulante ?

Bref, je comprends pas grand chose très honnetement, est-ce le TCD qui alimente les listes ou l'inverse ? Pourquoi y a t'il des (vide) etc ?

Bonne continuation
 

azerty56

XLDnaute Nouveau
Bonjour,

Pour l'exemple j'ai crée seulement 1 seul choix, si je selectione la valeur A, alors il propose la valeur B etc..
C'est le tableau de data (BDD_1) qui alimente le TCD, et c'est le TCD qui alimente les listes. L'idée de départ est d'avoir des listes déroulantes en "cascade", qui peuvent être misent à jour en renseignant le tableau, et ce de manière "automatique", d'où le TCD plustôt d'une liste en dur.

Le problème c'est que je ne peux rien saisir dans les cellules Voir image ci-après, car les valeurs sont contraintent par les listes.

1574764147687.png


Peut-on ajouter une condition dans la macro pour permettre la saisie manuelle?
Ou bien peut-être qu'il existe une autre façon de faire?

D'avance merci,
 

Discussions similaires

Réponses
11
Affichages
285

Statistiques des forums

Discussions
312 175
Messages
2 085 953
Membres
103 058
dernier inscrit
florentLP