Créer une liste déroulante en fonction de plusieurs critères

Bonjour,

Je souhaiterai, à partir des éléments des cellules B1 et B2 de l'onglet "Saisie", afficher en B3 de ce même onglet une liste déroulante des communes concernées par un contrôle (contenues dans l'onglet "Données", colonne B et M).

Exemple, si en B1 j'indique une date en 2015, et en B2 le département "01", je souhaite avoir une liste déroulante en B3 des communes :

01-AMBERIEUX EN DOMBES

01-ANGLEFORT

01-CHALLEX

01-DORTAN

01-LENT

Merci de votre aide.

Cdt.

18test.xlsx (15.99 Ko)

Bonjour,

Quelque chose comme ça ?

51test.xlsx (16.05 Ko)

Bonjour,

Ou quelque chose comme cela ?

66test.xlsm (23.19 Ko)

A+

Bien vu frangy, ma formule ne fonctionne qu'avec du texte...

Bonjour et merci,

Mais pouvez vous me préciser les formules employées.

Par ailleurs, cela fonctionnera quelque soit le nombre de cellules renseignées dans le second onglet. En d'autres termes, si je copie un fichier similaire avec la même implantation des colonnes et sans autres modifications, j'obtiendrais en B3 ma liste attendue.

Cdt.

Dans ma proposition, le traitement est effectué par une procédure VBA.

Pour visualiser cette procédure, tu appuies sur alt + F11 pour ouvrir l'éditeur, puis ctrl + R pour afficher l'explorateur de projets.

La procédure se trouve dans le module Feuil1 (Saisie).

Le principe de cette procédure est de balayer toutes les lignes de la feuille données et de noter le nom des communes qui satisfont aux 2 conditions (département et année).

La liste étant établie, il suffit de la transférer dans la validation de données.

Le nombre de ligne peut être variable, la feuille données étant balayée jusqu'à la dernière ligne renseignée.

A+

Merci pour ces explications.

Je ne suis pas familier de l'emploi des macros. Comment puis je l'intégrer à mon fichier qui pour des raisons de confidentialité et de poids ne pouvait être attaché en PJ lors de mon premier post.

L'onglet 1 prend également une forme différente (cf. en PJ) où les cellules B1, B2 et B3 sont respectivement B15, B19 et B23.

Que faut-il donc modifier ?

Merci de votre aide précieuse.

Cdt.

capture

Voici le code adapté

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Dim Texte As String
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("B15,B19")) Is Nothing Then
        With Worksheets("Données")
            For Each Cel In .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
                If Cel.Value = Format(Range("B19").Value, "00") And Year(Cel.Offset(0, 12).Value) = Year(Range("B15").Value) Then
                    Texte = Texte & Cel.Offset(0, 1).Value & ","
                End If
            Next Cel
        End With
        With Range("B21").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Texte
        End With
    End If
End Sub

A+

Rechercher des sujets similaires à "creer liste deroulante fonction criteres"