IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtre automatique qui perd l'accès au menu déroulant par VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet ERP
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet ERP

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut Filtre automatique qui perd l'accès au menu déroulant par VBA
    Bonjour,
    je me suis battu avec des heures avec un code VBA identique sur 2 feuilles mais qui se comporte différemment.
    J'ai créé des cellules de recherche en haut d'une liste afin que par un évènement Worksheet_Change(ByVal Target As Range), je récupère le contenu de la cellule où j'ai tapé du texte, puis j'active le filtre automatique sur la colonne concernée.
    J'ai aussi fait en sorte d'annuler le filtre sur une colonne quand la case de recherche est vidée. Et là, j'ai un problème énorme !La suppression du filtre sur une colonne laisse le filtre auto visible (flèches) mais on n'a plus accès au menu déroulant en cliquant sur les flèches ... et la recherche devient inactive.
    Avez-vous une idée du problème ? Que puis-je fournir pour aider ?
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Avec un petit fichier joint, c'est plus facile. Avoir un oeil sur le code est plus aisé pour vous aider.
    Merci par avance

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet ERP
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet ERP

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    Ma feuille concernée a pour codename "ListeBT" que j'utilise dans une fonction personnalisée de protection ou déprotection de la page.
    C'est le dernier ElseIF qui désactive le filtre !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim msg, txt, contenu As String
    'DEBUT
        Application.ScreenUpdating = False
    'si modif d'un autre champ que ceux de recherche
        On Error Resume Next
        If Target.Row <> 7 Or Target.Column > 6 Then
            Exit Sub
    'Sinon si champ de recherche non vide
        ElseIf Target <> "" Then
            Call Deproteger(ListeBT)
            Range("TitreListeBT").Select
            txt = "*" & Target.Value & "*"
            Select Case Target.Name.Name     'recherche dans la liste sur colonnes
                Case "rechbt1": Selection.AutoFilter Field:=1, Criteria1:=txt, Operator:=xlAnd
                Case "rechbt2": Selection.AutoFilter Field:=2, Criteria1:=txt, Operator:=xlAnd
                Case "rechbt3": Selection.AutoFilter Field:=3, Criteria1:=txt, Operator:=xlAnd
                Case "rechbt4": Selection.AutoFilter Field:=4, Criteria1:=txt, Operator:=xlAnd
                Case "rechbt5": Selection.AutoFilter Field:=5, Criteria1:=txt, Operator:=xlAnd
                Case "rechbt6": txt = Mid(Target.Value, 1, 2) & "/" & Mid(Target.Value, 4, 2) & "/" & Mid(Target.Value, 9, 2)
                    Selection.AutoFilter Field:=6, Criteria1:=txt, Operator:=xlAnd  'traitement spécial pour date !!
            End Select
            Target.Select
    'Sinon si champ de recherche vide
        ElseIf Target = "" Then
            Call Deproteger(ListeBT)
            Range("TitreListeBT").Select
            Select Case Target.Name.Name
                Case "rechbt1": Selection.AutoFilter Field:=1
                Case "rechbt2": Selection.AutoFilter Field:=2
                Case "rechbt3": Selection.AutoFilter Field:=3
                Case "rechbt4": Selection.AutoFilter Field:=4
                Case "rechbt5": Selection.AutoFilter Field:=5
                Case "rechbt6": Selection.AutoFilter Field:=6
            End Select
            Target.Select
        End If
    'FIN
        Application.ScreenUpdating = True
        Call Proteger(ListeBT)
    End Sub

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Peut-être que dans Format - Protection - Faut-il cocher la case qui autorise l'utilisation des filtres automatiques.
    Ce n'est juste qu'une idée

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet ERP
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet ERP

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    L'option "Utiliser le filtre automatique" est bien activée à la protection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Proteger(sht As Worksheet)
        sht.Protect Password:="aielc", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=False, AllowFormattingColumns:=False, _
        AllowFormattingRows:=False, AllowSorting:=False, AllowFiltering:=True, UserInterfaceOnly:=True
        ActiveWindow.Zoom = 85
    End Sub
    C'est vraiment la première fois que je rencontre ce problème. Le plus étonnant est qu'un autre fichier Excel utilisant exactement le même code avec une colonnes en moins dans la liste fonctionne parfaitement.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai cette macro qui fonctionne. Apparament vous avez fait à-peu-près la même chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
       ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False, AllowFiltering:=True
    End Sub
    à part cette différence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sht.Protect Password:="aielc",

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtre automatique qui ne s'active pas
    Par Lyndils dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2015, 23h38
  2. Comment fixer une applet Java qui bouge à cause d'un menu déroulant ?
    Par Beginner. dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 11/02/2013, 15h31
  3. Creer un filtre automatique qui utilise une variable de type string
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2009, 13h53
  4. Comment remplir un menu déroulant avec VBA ??
    Par souheil59 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/11/2008, 22h19
  5. Menu déroulant par dessus tableau
    Par M1000 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/12/2005, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo