Bonjour,
Alors déjà, je te remercie car je l'ai transposé sur mon fichier original et ça marche mais partiellement car je me retrouve face à une erreur d'execution '13'.
La liste de validation de l'école fonctionne mais c'est lorsque je choisi une école que se passe l'erreur d'execution.
Voilà mon code transposé dans la feuille "LISTING":
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)
If Target.Address <> "$E$2" Then Exit Sub 'si le changement a lieu ailleurs qu'en E2, sort de la procédure
Target.Offset(0, 1).ClearContents 'efface F2
If Target.Value = "" Then Exit Sub 'si F2 est effacée, sort de la procédure
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau de cellules TC (en partant de la seconde)
'si la valeur ligne I colonne 1 de TC est égale à la valeur de E2
'alimente le dictionaire D avec les valeurs de la colonne 2 de TC (Classe)
If TC(I, 8) = Target.Value Then D(TC(I, 10)) = ""
Next I 'prochaine ligne de la boucle
L = Join(D.Keys, ",") 'définit la liste L (les élément du dictionnaire D sans doublon séparés par une virgule)
With Range("F2").Validation 'prend en compte la validation de données de la cellule F2
.Delete 'efface une éventuelle ancienne validation de données
.Add xlValidateList, , , L 'définit la valitation de données en E2 (Liste L)
End With 'fin de la prise en compte de la validation de données de la cellule F2
End Sub
La ligne que le débogeur me surligne est la ligne
For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau de cellules TC (en partant de la seconde)
Sur la feuille LISTE_CLASSE, le nom de l'école est en colonne H (8) et le nom de la classe est en J (10).
je te remercie de m'aider.