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 :

[VBA] Obtenir une listre filtrée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Bonsoir,

    Dans un classeur, j'ai sur la feuille 1 une liste de prénoms correspondant à une colonne dans la feuille 2 contenant l'ensemble de ces prénoms (colonne C). Sur cette même feuille, on retrouve, sur une deuxième colonne, face à ces prénoms, des noms d'activités liés aux prénoms (colonne A). Le code ci-dessous me crée sur la colonne F de la feuille 2 une série d'activités, filtrée en fonction du prénom choisi en c3. Jusque là, tout va bien.

    Voici à présent ce que je souhaiterais : sur la feuille 2, colonne B, on retrouve un autre paramètre lié également aux colonnes A et C. Par exemple, on peut admettre que ce paramètre est un jour de la semaine. J'aimerais obtenir sur la colonne H une série des activités déjà filtrées précédemment en fonction du prénom, refiltrée sur un jour particulier (disons "lundi"). J'ai essayé d'appliquer la même méthode que ci-dessous (très gentiment donnée par un membre d'un autre forum dédié à Excel, je l'en remercie), sans succès...

    J'ai essayé d'exposer au mieux le problème, si quelque chose n'est pas clair, n'hésitez pas à m'en faire part.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim f1 As Worksheet, f2 As Worksheet
      If Flag Then Exit Sub
      If Not Application.Intersect(Target, Range("c3")) Is Nothing Then
        Application.ScreenUpdating = False
        Set f1 = Sheets("Feuille 1")
        Set f2 = Sheets("Feuille 2")
            If Target.Count > 1 Then Exit Sub
        Flag = True
            Range("b12").ClearContents 'cellule où l'on retrouve la première liste
        Flag = False
        f1.Range("k2") = "=Feuille 2!c2=Feuille 1!c3"
        f2.Range("a1:c" & f2.[a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        f1.Range("k1:k2"), CopyToRange:=f2.Range("f1"), Unique:=False
        f1.Range("k2").ClearContents
      End If
    End Sub
    Pouvez-vous m'aider svp ?
    Merci d'avance !

    Je sens que je n'ai pas été très clair... non ?

  2. #2
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut
    Salut,

    Je ne m'y connais pas vraiment en filtre mais je ne peux que t'encourager à reformuler ton problème. Rien que de lire l'énoncé, ça m'a fait mal à la tête
    Citation Envoyé par m@tix Voir le message
    Jusque là, tout va bien.
    Bah non, justement.

  3. #3
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Ok, je tente de reformuler donc.

    J'ai un classeur comportant 2 feuilles, feuille 1 et feuille 2.

    Sur la feuille 2, on trouve :
    * Colonne A, une liste d'activités
    * Colonne B, une liste de jours de la semaine
    * Colonne C, une liste de prénom

    Ces 3 colonnes étant indissociables, dans le sens où les infos d'une ligne correspondent entre elles.

    **********************************
    A......................B...................C.........
    --------------------------------------------
    Sport................lundi..............Bob
    Musique............mardi............Bob
    Art plastique.....lundi.............Jack
    **********************************

    Sur la feuille 1, on trouve une liste déroulante en c3 basée sur les prénoms de la colonne C de la feuille 2.

    Ma première intention était de créer sur la feuille 2, colonne F, une liste d'activité basée sur celles présentes en colonne A, qui comprendrait uniquement les activités correspondant au prénom choisi sur la feuille 1.
    Sur l'exemple ci-dessus, si on choisit Bob sur la liste de la feuille 1, on doit voir apparaître en colonne F uniquement Sport et Musique. Et ça, c'est ce que fait le code que j'ai mis dans mon premier message.

    A présent, je souhaiterais obtenir une autre liste sur la feuille 2, en colonne H cette fois-ci, basée sur la liste filtrée précédemment obtenue sur la colonne F. Dans ce cas, je souhaiterais voir apparaître uniquement les activités du lundi.
    En conséquence, si on s'en tient à mon exemple, on devrait voir apparaître dans la colonne H, uniquement Sport.

    J'espère avoir été plus clair... Je tiens absolument à passer par une macro comme pour la première liste, les PC que j'utilise rament trop lors du calcul de formules...

    Merci d'avance !

  4. #4
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Toujours pas clair ?

Discussions similaires

  1. [XL-2010] VBA : Recopier une plage filtrée dans une Listbox de formulaire
    Par Pipeti dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/06/2015, 18h36
  2. Réponses: 1
    Dernier message: 30/09/2011, 09h55
  3. [VBA-E] Enregistrement d'une plage filtrée
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/01/2008, 11h14
  4. [VBS/VBA] Obtenir la couleur d'une cellule Excel
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 27/12/2007, 16h31
  5. Réponses: 3
    Dernier message: 07/07/2006, 09h09

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