Liste déroulante excluant un élément déjà choisi

Bonjour à tous !

J'ai parcouru le forum pour essayer de trouver de l'aide mais les explications que j'ai pu y trouver dépassent mes compétences sur Excel... Je suis vraiment débutante mais je ne me démonte pas, et je compte bien apprendre si vous voulez bien m'aider !

Voilà ce que je voudrais faire : j'ai fait plusieurs tableaux avec des créneaux horaires.

Pour chaque créneau horaire, mes utilisateurs devront choisir une donnée dans une liste déroulante (le nom d'un enseignant).

Or, j'ai deux tableaux pour une même journée (dans mon cas, j'ai deux jurys d'examens sur une même journée), je voudrais donc que sur un même créneau horaire le même jour, on ne puisse pas choisir le même enseignant.

Ce qui reviendrait à dire, dans mon fichier, qu 'en I9 et en I21, on ne puisse pas avoir deux fois le même prénom et donc que liste déroulante évolue en fonction des choix qui ont déjà été faits.

Est-ce que je suis claire ?

Je ne sais pas du tout si c'est possible... Est-ce que ça vous parle ?

Un grand merci d'avance à la communauté !

Salut Marie,

voici ton fichier, à tester en situation réelle!

Attention, toutefois, cette version ne fonctionnera que si tu limites tes cessions à 2 par date!

Il te suffit de cliquer en colonne 'I' pour que la liste de validation s'adapte au créneau horaire correspondant.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Not Intersect(Target, Range("I:I")) Is Nothing Then
    iFlagMOD = Target.Row Mod 14
    If iFlagMOD > 5 And iFlagMOD < 14 And iFlagMOD <> 9 Then
        iFlagDATE = Target.Row - (iFlagMOD - 1)
        sFlagDATE = Cells(iFlagDATE, 1)
        For x = 1 To Cells(Rows.Count, 9).End(xlUp).Row Step 14
            If Cells(x, 1) = sFlagDATE And x <> iFlagDATE Then
                sFlagDIR = Cells(x, 9).Offset(iFlagMOD - 1, 0)
                With Worksheets("BDD")
                    iRow = .Cells(Rows.Count, 3).End(xlUp).Row
                    For y = 2 To iRow
                        If .Cells(y, 3) <> sFlagDIR Then
                            iIdx = iIdx + 1
                            .Cells(iIdx, 4) = .Cells(y, 3)
                        End If
                    Next
                End With
                Range("I" & Target.Row).Select
                With Selection.Validation
                    .Delete
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                    xlBetween, Formula1:="='BDD'!$D$1:$D$" & iIdx
                    .IgnoreBlank = True
                    .InCellDropdown = True
                End With
                Exit For
            End If
        Next
    End If
End If
'
End Sub

A+

Cher Curulis,

j'ai testé le fichier que tu as modifié, et tu as réussi à faire exactement ce dont j'avais besoin...

C'est top ! Par contre, je t'avoue que je ne comprends pas grand chose à ta formule magique. Je dois être loin derrière en termes de niveau sur Excel.

Je suis très reconnaissante, merci beaucoup. J'espère que ça pourra aider d'autres membres également.

Très belle journée à tous.

Rechercher des sujets similaires à "liste deroulante excluant element deja choisi"