Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Liste déroulante qui exclu les champs déjà utilisés

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Marie1608

XLDnaute Nouveau
Bonjour,

J'ai besoin d'aider pour faire un planning excel avec une liste déroulante mais qui enlève les champs déjà utilisé dans la colonne. J'ai regardé sur internet mais dans les tuto il faut masquer la colonne alors que moi je préfère que les "membres" soit sur un autre onglet pour pouvoir en rajouter par la suite plus facilement.

Dans le fichier Excel, j'ai 3 colonnes (marcheur, rond de longe et paddock) le but est qu'une seule personne ne puisse avoir qu'un seul créneau horaire par colonne pour que les gens ne puissent pas prendre + qu'un créneau d'une heure.

Quelqu'un pourrait-il me donner un coup de main ?


Merci d'avance
 

Pièces jointes

Bonjour,

Ceci prévient que plus d'une personne est sur la même ligne

P.
 

Pièces jointes

Bonjour,

Ceci prévient que plus d'une personne est sur la même ligne

P.
Merci ! Par contre au lieu que cela soit en rouge est-ce possible d'avoir un message d'erreur et que la personne ne puisse pas mettre son nom ? Car sur un simple tableau les gens ne respectent pas la règle d'un seul créneau horaire... Et j'imagine qu'en changeant la formule je sais le faire à la verticale ? Car le but c'est qu'une personne ne puisse pas se noter deux fois par colonne et non par ligne 🙂
 
Bon ben, vu que j'avais encore tout compris de travers, je supprime mon #4...

Ceci dit, ça veut dire qu'une même personne peut réserver deux chevaux sur un créneau d'une heure ?
Sur une même ligne oui car il s’agit d’infrastructures différentes ( rond de longe, marcheur et paddock) par exemple quelqu’un peut mettre son cheval dans le paddock entre 12h et 13h et en même temps longer un autre de ses chevaux 🙂
 
Bonjour Marie, Gosselein, Fanfan, TooFatBoy,
Un autre exemple en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo Fin
    If Target.Count <> 1 Then Exit Sub
    If Cells(Target.Row, "B") = "" Then Exit Sub
    Dim T, DL%, L%, Lp%, NL%, i%
    T = [ts_Personnes]: Sheets("Personnes").[D3].Resize(UBound(T, 1), UBound(T, 2)) = T
    DL = Cells(Cells.Rows.Count, "B").End(xlUp).Row
    For L = 2 To DL
        Nom = Cells(L, Target.Column)
        If Nom <> "" Then
            Lp = Application.Match(Nom, [ts_PersTempo], 0): [ts_PersTempo].Item(Lp, 1) = ""
        End If
    Next L
    With [ts_PersTempo]
        NL = .ListObject.ListRows.Count
        .Resize(NL).Sort key1:=.Item(1, 1), order1:=xlAscending, Header:=xlYes
        For i = NL To 1 Step -1
            If .Item(i, 1) = "" Then .Item(i, 1).Delete Else Exit For
        Next i
    End With
Fin:
End Sub
 

Pièces jointes

Bonjour à tous , juste en passant
Ou avec une liste de validation dynamique
la sub est lancée au selectchange dans une des 3 colonnes et sur 15 lignes
VB:
Sub listRestants()
    'patricktoulon
    Dim tblprime, tblexist, li&, li2&
    tblprime = [T_personne].Value 'tblprime c'est le tableau original complet des personnes
    tblexist = ActiveSheet.Cells(2, Selection.Column).Resize(15).Value 'tblexiste c'est le tableau des personne presente dans la colonne de la cellule selectée
   
    For li = 1 To UBound(tblprime)
        'on vide les items de tblprime si il existent dans tblexist
        'et si il sont presents sur la ligne (offset -1 et 1 en colonne)
        For li2 = 1 To UBound(tblexist)
            If tblexist(li2, 1) = tblprime(li, 1) Then tblprime(li, 1) = ""
            If tblprime(li, 1) = Selection.Offset(, -1) Then tblprime(li, 1) = ""
            If tblprime(li, 1) = Selection.Offset(, 1) Then tblprime(li, 1) = ""
        Next
    Next
    With Selection.Validation
        .Delete
        'la liste de validation est remplie avec le join du transpose du tblprime
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                                      xlBetween, Formula1:=Join(Application.Transpose(tblprime), ",")
        .IgnoreBlank = True 'on fait sauter les blancs il y en a forcément au fur et à mesure
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
790
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…