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
 

Pièces jointes

  • MODELE_validation des commandes V10.xlsm
    243.3 KB · Affichages: 37
  • MODELE_validation des commandes V10.xlsm
    243.3 KB · Affichages: 40
  • MODELE_validation des commandes V10.xlsm
    243.3 KB · Affichages: 43

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+
 

Pièces jointes

  • MODELE(1).xls
    641.5 KB · Affichages: 40
  • MODELE(1).xls
    641.5 KB · Affichages: 30
  • MODELE(1).xls
    641.5 KB · Affichages: 43

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+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali