Bonjour,
Voici la procédure que je voudrais mettre en œuvre dans le cadre d’une association sportive :
Sur une feuille « Inscriptions » j’ai 2 colonnes, commençant ligne 8, recensant les « Noms » des participants sur une 1ére colonne et leurs « Régions » associées sur la 2de colonne
Sur une autre feuille « Classement », j’ai un tableau répertoriant les médaillés, avec les 2 mêmes colonnes Régions puis Noms
Dans cette feuille Classement, je voudrais qu’une fois la Région définie dans une cellule Région, une liste déroulante soit produite, dans la cellule Nom, contiguë, avec les seuls noms associés à cette région (en se basant sur les 2 colonnes de la feuille Inscriptions, puis filtrage) .
Au niveau VBA (que je ne maitrise pas vraiment) de la feuille Classement, j’ai créé un tableau Liste_Noms_Région(), filtrant sur une région, que j’ai essayé d’associer ensuite, soit à un With, soit en passant par la création d’une combo (cf ci-dessous) … sans succés ! ça bloque avec erreurs d’incompatibilité.
Pourriez-vous m’aider
Merci d’avance
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 Private Sub Worksheet_Change(ByVal Target As Range) Dim Nom_Region As String Dim Liste_Noms_Region() Dim Liste_Noms As String Dim CmbListe As Object Set CmbListe.Name = Liste_Noms_AS() Dim Combo As MSForms.ComboBox Dim I As Long Sheets("Classement").Select Nom_Region= Range("B6") Colonne B pour les noms de Région Sheets("Inscriptions").Select DLig = Range("C" & Rows.Count).End(xlUp).Row Création du tableau, filtrant tous les Noms associés à la Région définie initialement en B6 de Classement j = 1 For I = 0 To DLig If Range("D" & I + 8) = Nom_Region Then Colonne D pour les noms de Région Liste_Noms_Region(j) = Range("C" & I + 8) Colonne C pour les Noms des participants j = j + 1 End If Next Sheets("Classement ").Select Range("C6").Select Colonne C pour les Noms des participants 'Si une valeur change dans la colonne B If Not Intersect(Target, [B:B]) Is Nothing Then With CmbListe .Name = Liste_Noms_Region Set Combo = .Object End With 'Remplissage de la liste For I = 1 To UBound(CmbListe()) Combo.AddItem CmbListe(I) Next I End If End Sub
Partager