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 :

Réaliser un filtre à partir d'une autre page


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut Réaliser un filtre à partir d'une autre page
    Bonjour à tous,

    Je suis confronté à un problème, j'ai deux feuilles et j'aimerais réaliser un affichage sur base de paramètre provenant d'une autre page, . En clair, je dois faire un filtre, par exemple :

    J'ai une page qui contient des données, j'ai plusieurs colonnes, une marchandise et d'autre par exemple mécanique, électricité, maçonnerie, ... je peux avoir des marchandises qui sont sélectionnées dans plusieurs colonnes, exemple mécanique, électricité (par une croix X).

    Dans une autre page, j'aimerais afficher sur base des données de la première, uniquement les marchandises d'électricité, pour ce je dois faire une sorte de filtre en VBA et la je bloque. Je dois faire une liste déroulante, ça j'ai compris, et puis en fonction de la sélection réaliser une série de test, mais je galère grave et je tourne en rond.

    Si quelqu'un avait une idée, un squelette de comment appeler la première page et comment tester les données, ce serait génial. Ou un code comme exemple sur lequel je pourrai me baser pour avancer.

    Je demande pas la solution, mais VBA, je connais absolument pas je viens de m'y mettre pour le boulot.

    Un tout grand merci d'avance, pour tous ceux qui auront réfléchit à mon problème.

    Belle journée à tous et toutes, Stu

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    et puis en fonction de la sélection réaliser une série de test
    C'est bien vague. Le mieux serait que tu mettes en pièce jointe un classeur exemple, sans données confidentielles.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut Exemple du projet
    Bonjour à tous,

    Désolez de répondre si tard, mais j'ai eu quelque soucis de santé et mon remplaçant n'a pas suivi le projet. Voici un exemple, j'aimerai réaliser un filtre à partir d'un bouton d'une zone liste déroulante ou d'une liste déroulante simple. Je suis nul sous Excel et macro, mais bon j'apprends et je suis ouvert à la critique (constructive de préférence).

    Je joins un fichier exemple, dans lequel il y a une liste déroulante, quand je sélectionne par exemple "Elec" j'aimerai juste voir la colonne "Elec" et "validé" et masquer tout le reste. Je suis sur que cela est simple, mais je trouve pas .

    Un tout grand merci à toute les personnes qui ce pencherons sur mon prob.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Dans un module standard, colle la macro suivante :

    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
    Sub Zonecombinée2_QuandChangement()
        Dim Var As Integer, Elem As String, Tabl(), Txt As String
        Dim Col As Integer, C As Range, Ctr As Integer
        With Sheets("Feuil2")
            Var = .Shapes("Drop Down 2").DrawingObject.ListIndex
            Elem = Application.Index(.[K2:K4], Var)
            .AutoFilterMode = False
        End With
        With Sheets("Feuil1")
            Col = Application.Match(Elem, .[6:6], 0)
            For Each C In .Range("C6", .Cells(.Rows.Count, 3).End(xlUp))
                If C.Offset(, Col - 3) = "X" Then
                    ReDim Preserve Tabl(Ctr)
                    Tabl(Ctr) = C.Value
                    Ctr = Ctr + 1
                End If
            Next C
            For i = 0 To UBound(Tabl)
                dd = Array(Tabl(i))
            Next i
        End With
        With Sheets("Feuil2")
            .[A8:E8].AutoFilter 2, Criteria1:=Tabl, Operator:=xlFilterValues
        End With
    End Sub
    Attache-la à ta zone de liste. Teste et dis-moi si ça te convient.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Par défaut
    Salut Daniel,

    Avant toute chose un tout grand merci pour ton aide, le code fonctionne parfaitement. Je pourrai m'en contenter, mais pour une raison de visibilité j'aurai préférer masquer les colonnes inutiles. Exemple si je sélectionne "ELEC" qui se trouve dans la colonne "C", j'aurai aimé que les colonnes "D et E" soit masquées.

    Mais cela risque fortement de compliqué la mise ne page et le code derrière, penses tu qu'il est possible de réaliser ce code .

    En tout cas, à l'analyse de ton code j'apprends beaucoup, encore merci.

    Bien à toi,

    Stu

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    La modif est facile, par contre les titres qui se trouvent dans ces colonnes pourront être masqués. S'il y a une partie du code que tu ne comprends pas, n'hésite pas à demander. Voici le code modifié (j'ai ajouté les dernières lignes) :

    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
    Sub Zonecombinée2_QuandChangement()
        Dim Var As Integer, Elem As String, Tabl(), Txt As String
        Dim Col As Integer, C As Range, Ctr As Integer, i As Integer
        With Sheets("Feuil2")
            Var = .Shapes("Drop Down 2").DrawingObject.ListIndex
            Elem = Application.Index(.[K2:K4], Var)
            .AutoFilterMode = False
        End With
        With Sheets("Feuil1")
            Col = Application.Match(Elem, .[6:6], 0)
            For Each C In .Range("C6", .Cells(.Rows.Count, 3).End(xlUp))
                If C.Offset(, Col - 3) = "X" Then
                    ReDim Preserve Tabl(Ctr)
                    Tabl(Ctr) = C.Value
                    Ctr = Ctr + 1
                End If
            Next C
            For i = 0 To UBound(Tabl)
                dd = Array(Tabl(i))
            Next i
        End With
        With Sheets("Feuil2")
            .[A8:E8].AutoFilter 2, Criteria1:=Tabl, Operator:=xlFilterValues
            For i = .Cells(8, Columns.Count).End(xlToLeft).Column To 3 Step -1
                If .Cells(8, i).Value <> Elem Then .Columns(i).Hidden = True
            Next i
        End With
    End Sub

Discussions similaires

  1. Retrouver ma popup à partir d'une autre page
    Par Frostek dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/05/2011, 15h19
  2. créer pages web à partir d'une autre page web
    Par genie007 dans le forum Langage
    Réponses: 6
    Dernier message: 01/04/2011, 00h55
  3. Réponses: 15
    Dernier message: 06/07/2010, 09h43
  4. Fermer une fenêtre web à partir d'une autre page web.
    Par midotoon dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/02/2009, 04h44
  5. Appel d'une méthode à partir d'une autre page
    Par mona dans le forum ASP.NET
    Réponses: 9
    Dernier message: 16/09/2007, 00h52

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