Liste déroulante dépendant des valeurs d'un tableau

Bonjour à tous,

Je fais appel à vos lumières pour créer une liste déroulante dépendant d'un tableau.

Je m'explique :

Pour situer le contexte, je cherche à remplir un planning d'entrainement de double en tennis.

Chaque entrainement, 4 joueurs sont convoqués, mais certains sont indisponibles à certaines dates...

Mon fichier se construit comme tel :

Deux feuilles et un tableau dans chacune d'entre elles :

1er tableau : 1ière colonne contenant les dates des entrainements puis les 4 colonnes suivantes contenant le nom des 4 joueurs convoqués.

2ième tableau : 1ière colonne contenant toujours les dates des entrainements, puis suive un nom de joueur par colonne. Ainsi, j'insère l'indisponibilité du joueur MARTIN le 17/10/2010 en écrivant un 1 dans la cellule ayant comme ligne la date du 17/10/2010 et MARTIN pour colonne.

Mon objectif et ma question est de créer dans mon premier tableau, une liste déroulante dans toutes les cellules où il faut entrer des noms de joueurs. Cette liste proposerait la liste des joueurs DISPONIBLES (c-à-d la liste de tous les joueurs en retirant les joueurs indisponibles).Elle serait donc fonction du second tableau.

D'avance, je vous remercie pour vos réponses et les attends avec impatience.

Bon dimanche.

-- 17 Oct 2010, 15:10 --

Peut-être qu'avec le ficher en support, ça sera plus facile à comprendre de quoi il en retourne.

Merci d'avance pour votre aide !

Bon dimanche encore.

-- 17 Oct 2010, 20:57 --

Voyant que quelques uns sont venus lire mon soucis mais que personne n'a encore répondu, je me demande si mon énoncé est assez clair.

N'hésitez pas à me poser des questions pour éclaircir un point particulier.

Merci pour votre aide.

Bonne soirée.

Bonsoir Fatos

Je vois que personne n'est venu t'éclairer pour le moment. Je suis nouveau sur ce forum, et débute sur Excel.

Je n'ai donc pas de solution a te proposer pour le moment, mais il y a surement qu'un pour t'aider ici.

Bonne chance pour ton problème ! A+

Bonsoir à tous,

Je crains que ta demande ne soit surréaliste !

cela reviendrait à avoir une liste par jour, impensable !!

à la limite une macro pour tester au jour choisi si une croix est dans la colonne joueur,

et t'avertir par message de l'indisponibilité.

Amicalement

Claude

Bonsoir Dubois,

En fait, j'avais justement créé un bouton permettant de vérifier les indisponibilités avec une macro, mais je voulais améliorer le fichier car je pensais qu'il était possible de faire mieux.

Maintenant que j'y penses, avec une macro, il est possible, en lisant le second tableau, de créer dans une autre feuille, les listes par jour qu'il faudrait charger dans le premier tableau. Le seul bémol étant qu'il faut un évènement pour lancer la macro et que cela ne se fait pas automatiquement. Le bouton est une solution. Mais n'y-a-t-il pas mieux ?

Existe-t-il un évènement qui se déclencherait lorsque les cellules de mon tableau d'indisponibilité seraient modifiées ?

Merci en tout cas de ta réponse Dubois, et merci d'avance pour la suivante.

re,

Je te propose :

Private Sub Worksheet_Change(ByVal Target As Range)
'Macro par Claude Dubois pour "Fatos" Excel-Pratique le 17/10/10
Dim Lg%, i%, cL%
    If Not Application.Intersect(Target, Range("Tablo")) Is Nothing Then
            If Target = "" Then Exit Sub
        With Sheets("Indisponibilites")
            cL = WorksheetFunction.Match(Target, .Rows(2), 0)
            Lg = WorksheetFunction.Match(Cells(Target.Row, 1), .Columns(1), 0)
            If .Cells(Lg, cL) <> "" Then
                MsgBox ("Le " & Cells(Target.Row, 1) & Chr(10) & _
                Target & "  indisponible ce jour !")
                Target = ""
            End If
        End With
    End If
End Sub

amicalement

Claude

48fatos-listenoms.zip (16.86 Ko)
dubois a écrit :

re,

Je te propose :

Private Sub Worksheet_Change(ByVal Target As Range)
'Macro par Claude Dubois pour "Fatos" Excel-Pratique le 17/10/10
Dim Lg%, i%, cL%
    If Not Application.Intersect(Target, Range("Tablo")) Is Nothing Then
            If Target = "" Then Exit Sub
        With Sheets("Indisponibilites")
            cL = WorksheetFunction.Match(Target, .Rows(2), 0)
            Lg = WorksheetFunction.Match(Cells(Target.Row, 1), .Columns(1), 0)
            If .Cells(Lg, cL) <> "" Then
                MsgBox ("Le " & Cells(Target.Row, 1) & Chr(10) & _
                Target & "  indisponible ce jour !")
                Target = ""
            End If
        End With
    End If
End Sub

amicalement

Claude

Boujour à tous,

Merci encore de ta participation Dubois et pour l'évènement proposé. C'est effectivement celui qui m'intéresse.

Par contre, je ne souhaite pas un msgbox qui m'affiche que le joueur MARTIN est indisponible le xx/xx/xxxx puisque c'est l'information que je viens d'entrer ! Pas plus, que je ne veux que le macro me supprime cette information (cf. target="")

Sinon, pourquoi avoir déclaré une variable i qui n'est jamais utilisée ?

Ensuite, je n'ai pas très bien compris les deux lignes suivantes et la fonction Match :

cL = WorksheetFunction.Match(Target, .Rows(2), 0)

Lg = WorksheetFunction.Match(Cells(Target.Row, 1), .Columns(1), 0)

La première d'ailleurs ne fonctionne pas, il m'affiche erreur '1004' impossible de lire la propriété Match

Mais je crois comprendre qu'elles servent à récupérer le numéro de ligne et de colonne de notre cellule "target".

Dans ce cas-là, le code target.row et target.column ne suffit-il pas ?

Voilà pour mes questions et remarques.

Mes remerciements encore.

Rechercher des sujets similaires à "liste deroulante dependant valeurs tableau"