Bonjour au Forum,
Dans une tentative de création de listes en cascades en adaptant un code, j'ai réussi à constituer la première liste. Les ennuis arrive dès la deuxième liste, qui ne se crée pas. A la ligne 33, le message d'erreur "L'indice n'appartient pas à la sélection" apparaît et me laisse dans l'incompréhension. Un peu d'aide sera la bienvenue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Option Explicit
 
Dim f As Worksheet
Private Sub UserForm_Initialize()
Dim BD() As Variant
Dim Tbl() As Variant
Dim d As Variant
Dim i As Integer
 
  Set f = Sheets("test")
  Me.NoOrdre = f.Range("A" & Rows.Count).End(xlUp).Row
 
  Set f = Sheets("base")
  BD = f.Range("A2:C" & f.[B65000].End(xlUp).Row).Value
  Set d = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(BD)
    d(BD(i, 1)) = ""
  Next i
  Tbl = d.keys
  Tri Tbl, LBound(Tbl), UBound(Tbl)
  Me.Service.List = Tbl
 
End Sub
 
Private Sub Service_click()
Dim d As Variant
Dim i As Integer
Dim BD() As Variant
Dim Tbl As Variant
 
  Me.Fonction.Clear
  Set d = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(BD)
     If BD(i, 2) = Me.Service Then d(BD(i, 3)) = ""
  Next i
  Tbl = d.keys
  Tri Tbl, LBound(Tbl), UBound(Tbl)
  Me.Fonction.List = Tbl
End Sub
 
Private Sub Fonction_click()
Dim i As Integer
Dim BD() As Variant
 
  For i = 1 To UBound(BD)
     If BD(i, 2) = Me.Service And BD(i, 3) = Me.Fonction Then Me.Niveau = BD(i, 1)
  Next i
End Sub