Insérer une zone de liste dans une feuille pour filtrer une base

Arnold35

XLDnaute Junior
Bonsoir le forum,

J'ai un fichier excel avec des cases d'option au dessus de ma base de données pour filtrer celle-ci.

Je souhaiterai remplacer ces cases d'option (qui ne sont pas très ergonomiques) par des zones de liste qui auraient les même fonction à savoir appliquer des filtres sur la base. Les macros de filtre sont deja faites.

Je n'arrive pas à renseigner mes 3 critères de filtre dans une zone de liste et la relier avec la base.

Pourriez vous m'aiguiller?

J'utilise des contrôles de formulaire et non des activex car je fais partie des victimes de la maj microsoft qui empêche d'insérer des activex.

Je vous remercie pour votre aide
 

Fichiers joints

job75

XLDnaute Barbatruc
Re : Insérer une zone de liste dans une feuille pour filtrer une base

Bonjour Arnold35,

Post annulé, désolé.

Bonne journée et A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Insérer une zone de liste dans une feuille pour filtrer une base

Re,

Cases d'options ou zones de liste c'est du kif-kif à mon avis.

Mais plutôt que d'affecter une macro à chaque objet il serait sans doute mieux de les formater avec une cellule liée (à priori une seule pour toutes les options).

L'inconvénient d'une cellule liée c'est que quand elle se modifie elle ne crée aucun évènement VBA (sur Excel 2003).

Pour créer l'évènement Calculate, par exemple avec la cellule liée D6, entrer en D7 =D6.

Ensuite dans l'unique macro Worksheet_Calculate on testera la cellule liée.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Insérer une zone de liste dans une feuille pour filtrer une base

Re,

Voyez sur le fichier joint ce que donnent les cases d'options avec les cellules D6 (liée) et D7.

La macro dans le code de la feuille :

Code:
Private Sub Worksheet_Calculate()
Dim colonne, critere
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
Me.Unprotect "citedia"
Me.AutoFilterMode = False 'affiche tout
If [D6] < 9 Then
  colonne = Array(11, 11, 8, 8, 9, 9, 10, 10)
  critere = Array("A valider/B. BUDET", 0, "A contrôler*", 0, _
    "A contrôler/Compta", 0, "A signer/F. DEMAY", 0)
  [A16:L1004].AutoFilter colonne([D6] - 1), critere([D6] - 1)
End If
Me.Protect "citedia"
Application.EnableEvents = True 'réactive les évènements
End Sub
Les macros dans Module4 et Module5 sont devenues inutiles.

A+
 

Fichiers joints

Arnold35

XLDnaute Junior
Re : Insérer une zone de liste dans une feuille pour filtrer une base

Merci job 75, c'est parfait!!

Beaucoup plus sympa à utiliser que ce que j'avais auparavant.
 

job75

XLDnaute Barbatruc
Re : Insérer une zone de liste dans une feuille pour filtrer une base

Bonjour Arnold35,

Je viens de tester le fichier .xls précédent sur mon portable avec Excel 2010.

1) Très curieusement l'ordre des cases d'options est changé, il faut modifier la macro :

Code:
Private Sub Worksheet_Calculate()
Dim colonne, critere
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
Me.Unprotect "citedia"
Me.AutoFilterMode = False 'affiche tout
If [D6] > 1 Then
  colonne = Array(11, 11, 8, 8, 9, 9, 10, 10)
  critere = Array("A valider/B. BUDET", 0, "A contrôler*", 0, _
    "A contrôler/Compta", 0, "A signer/F. DEMAY", 0)
  [A16:L1004].AutoFilter colonne([D6] - 2), critere([D6] - 2)
End If
Me.Protect "citedia"
Application.EnableEvents = True 'réactive les évènements
End Sub
2) si l'on convertit le fichier en .xlsm il n'est plus lisible.

C'est sans doute dû à mon convertisseur sur Excel 2003, le fichier est vérolé.

A+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas