Filtrer en fonction d'une liste déroulante

Bonjour à toutes et tous,

Je suis en train d'essayer de réaliser un fichier excel pour gérer des bénévoles ainsi que leurs notes de frais.

Voici l'architecture de mon fichier :

un onglet facture : une espèce d'Etat qui me servira pour faire mes impressions.

un onglet bdd : mon tableau principal avec toutes mes données.

un onglet listes : où j'ai créé mes listes.

Je ferai plus tard un formulaire de saisie pour ajouter une note de frais ainsi que les bénévoles (ajout modif suppr).

Dans mon onglet bdd :

  • j'ai un tableau avec plusieurs colonnes (N°, nom, adresse,..., km)
  • j'ai deux listes déroulantes créées qui font référence à mes listes de l'onglet du même nom (à l'aide d'un =decaler(...))
Une première liste qui me retourne le nom du bénévole.

Une seconde qui me donne la période à consulter (1er trimestre, ... ainsi que 1er et 2nd semestre).

Je souhaiterai filtrer mon tableau en fonction de ces deux listes. Je m'explique :

Je sélectionne mon bénévole ainsi que la période que je veux consulter (3ème trimestre). Je clique sur un bouton et le tableau ce filtre en fonction de mes choix.

Ce que je n'arrive pas à mettre en place c'est ce satané filtrage en fonction du choix de mes deux listes.

Je suis bien passé par des filtres classique sur les entêtes de colonne mais j'aimerai quelque chose de plus automatique.

Autre soucis qui concerne ma liste déroulante période et le filtrage sur ce point. Comment lui dire que 1er trimestre = de janvier à mars, 2nd trimestre =avril à juin ... ???

Je vous en remercie par avance

Bonne journée à vous !

alex

206alex08beta1.xlsm (65.32 Ko)

re bonjour,

j'essaie toujours d'améliorer mon fichier et je suis en train de bosser sur le formulaire de saisie des bénévoles (en attendant une réponse au premier post)

alors voici un bout de code dans lequel je "teste" la valeur rentré dans [benevole_nom] par rapport à ma liste "ADRESSES_nom"

Si la valeur existe dans la liste, il supprime les infos saisies, sinon il passe à la suite.

Mon soucis c'est que ça vide les infos sans prévenir et que l'utilisateur n'est pas averti.

J'ai essayé d'insérer un msgbox pour prévenir que le nom existe déjà mais sans succès.

Si vous avez une idée, elle est la bienvenue, en attendant je m'y replonge et je reteste autre chose

Merci d'avance ^^

alex

For Each cell In Range("ADRESSES_nom")
    If cell.Value = [benevole_nom] Then
        Range("D9:D12").Select
        Selection.ClearContents
        Range("D9").Select
    Exit Sub
    End If
    Next

EDIT : j'ai réussi à faire ça, vous en pensez quoi ???

merci d'avance

For Each cell In Range("ADRESSES_nom")
    If cell.Value = [benevole_nom] Then
        If MsgBox("Ce nom existe déjà", vbOKOnly, "Redondance") = vbOK Then
            Range("D9:D12").Select
            Selection.ClearContents
            Range("D9").Select
        End If
    Exit Sub
    End If
    Next

Après plusieurs test j'ai enfin réussi à faire quelque chose.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$G$2" Then
    Dim Lig As Long, Critère As String
    Lig = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
    Critère = Target.Value

    ActiveSheet.Range("$B$5:$B$" & Lig).AutoFilter Field:=2, Criteria1:=Critère
End If
End Sub

J'arrive maintenant à filtrer grâce à ma première liste (G2).

Par contre je n'arrive pas à imbriquer les conditions pour le second filtre et encore moins à lui dire que 1er semestre = janvier à mars de l'année en cours ...

Je vous joints le doc modifié

229alex08beta1.xlsm (68.89 Ko)

Bonjour

Suis parti de ton premier message

Regardes déjà si cela te convient

Impeccable c'est exactement ça !

Maintenant reste plus qu'à décortiquer le code pour le comprendre et le refaire

Merci à toi Banzaï t'es un vrai chef !!!

Me revoilà à la charge !!!

Je viens de "finir" mon fichier grâce aux infos de Banzaï mais je souhaiterai y apporter encore quelques modif.

Celà concerne les onglets BDD et FACTURE.

Dans l'onglet FACTURE, je souhaiterai que lorsque l'utilisateur sélectionne sa période en A2 (nommé FACTURE_période) et puis son bénévole en D9 (nommé FACTURE_bénévole) ça filtre automatiquement le tableau de l'onglet BDD.

Pour ce faire j'ai dis que G2=FACTURE_bénévole et que G3=FACTURE_période.

Les noms apparaissent bien dans les cellules, mais le tri ne se fait plus et je n'arrive pas à voir ce qu'il y a à modifier dans le code :S

Je suppose que le fait d'avoir changé le contenu de G2 et G3 (=FACTURE_période et bénévole) est la cause de mon pbm !

Car avant la cellule renvoyait la période ou le nom directement alors que maintenant dans la barre de formule il m'affiche la "formule" et non le terme.

Comment faire pour contourner ce pbm ???

Merci d'avance.

EDIT :

je viens de m'apercevoir de quelque chose :

Quand je choisi mon bénévole sur l'onglet FACTURE, la cellule BDD!G2 change mais le filtre ne fonctionne pas.

Par contre dès que je rentre dans la barre de formule de la cellule G2 et que je valide par entrée, là ça fonctionne !

Bonjour

alex08 a écrit :

Quand je choisi mon bénévole sur l'onglet FACTURE, la cellule BDD!G2 change mais le filtre ne fonctionne pas.

Par contre dès que je rentre dans la barre de formule de la cellule G2 et que je valide par entrée, là ça fonctionne !

Bien sur la macro réagit à l'événement "Change"

Si la modification est du à une formule cet évènement n'est pas déclenché

A tester

c'est nickel !

Un gros merci pour ta dispo et ton aide

@+

alex

Salut à tous,

après avoir passé un bon week end de repos, je me suis remis replongé dans mon fichier pour le tester un peu plus en profondeur et je me suis aperçu que lorsque j'éxecute une macro ou que je copie des infos sur l'onglet FACTURE, VB me sort une erreur d'éxecution de type 13 (incompatibilité de type).

Alors le filtrage directement à partir de l'onglet fonctionne parfaitement. Par contre lorsque je veux aller vers l'onglet BDD (via le bouton/macro RECHERCHER) VB "plante". Pareil pour la macro vider le tableau et de même si je suis dans l'onglet BDD et que je veux copier les infos filtrées dans le tableau de la FACTURE.

Bréf dès que je fait quelque chose dans l'onglet FACTURE, ça plante :s

Je suis reparti du dernier fichier joint par Banzaï.

En attendant une votre aide, je vais essayer de faire quelque chose (selon mes compétences :s )

merci d'avance.

Bonjour

Ah ces cellules fusionnées

Remplaces la macro dans le module de la page "FACTURE"

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells(1, 1) = Range("FACTURE_période") Then
    Filtre
  End If
End Sub

Je ne peux pas tout tester car des instructions sont spécifiques à 2010

c'était donc ça

désolé

merci à toi Banzaï !!!

Bonjour,

J'ai le même problème concernant le lien entre listes déroulantes et filtres, mais je n'arrive pas à adapter le programme précédent au miens...

Voici mon problème:

Je crée un formulaire avec des listes déroulantes. J'aimerai lier chaque choix à un tableau d'indicateurs de temps contenant des filstres pour qu'à la fin de la sainsi du formulaire, selon les choix cliqués, apparraisse un temps moyen.

Voici mon fichier:

Merci !!!

Rechercher des sujets similaires à "filtrer fonction liste deroulante"