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 :

[E-03] récupération éléments issus d'un filtre automatique.


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut [E-03] récupération éléments issus d'un filtre automatique.
    Bonjour,

    Je suis en train de réaliser un petit projet en VBA (mon tout premier alors veuillez m'excuser s'il y a des maladresses de code), mais je bloque sur un point. Comment récupérer les éléments d'une colonne apres un filtrage automatique selon un critère et les dupliquer sur une autre feuille ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim CheminComplet As String
    ' Ligne pour test
       CheminComplet = "REP1/REP2/REP3/REP4/fichier.ext"
    'Fin de ligne pour test
     
            CheminComplet = Chr(61) & Chr(42) & CheminComplet & Chr(42)
            'Chr(61) caractere =
            'Chr(42) caractere "
     
            Sheets("Listing").Select
            Selection.AutoFilter Field:=10, Criteria1:=CheminComplet
            Ligne = 3   ' Debut des donnees
            Colonne = 10   'Colonne listant les chemins.
    Jusque la ca marche, j'arrive a filtrer les éléments que je souhaite, sur ma colonne 10. Toutefois je ne vois pas trop comment faire pour récupérer les données et les dupliquer sur une autre feuille.
    Peut être n'est ce pas la meilleure solution, est-il préférable d'utiliser une commande find et de dupliquer les lignes sur une autre feuille ? La je ne sais pas trop comment ça fonctionne.

    Je remercie d'avance les gens m'accordant un peu de temps.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Un conseil, en VBA évite au maximum d'utiliser la méthode .Select

    Pour récupérer les lignes filtrées au sein d'une zone, tu peux utiliser la propriété SpecialCells avec l'argument xlCellTypeVisible.


    PGZ

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut
    Bonsoir



    Exemple pour copier la zone filtrée de la feuille active, dans la Feuil2.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub COPIE_FILTRE()
    Range("A1").AutoFilter Field:=1, Criteria1:="4"
    ActiveSheet.AutoFilter.Range.Copy Sheets("Feuil2").Range("A1")
    End Sub
    @+

    J.L

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut
    J'ai donc abandonné l'histoire du filtre automatique. La solution proposée par jolop35 ne me satisfaisait pas pleinement, j'ai donc cherché sur la deuxieme voix que je visais.
    Feuille2 est ma feuille ou sont rangé mes critere de selection

    Cela me donne :

    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
    Private Sub ListeTAGTRUNK_Click()
    Dim IndexTag As Integer, IndexFichier As Integer
    Dim c As Variant, firstAddress As Variant
    Dim CheminComplet As String
     
        IndexTag = 1
        IndexFichier = 2
     
        Do While Not IsNumeric(Sheets("Feuille2").Cells(IndexFichier, 3))
            CheminComplet = Sheets("Feuille2").Cells(IndexFichier, 3)
            With Sheets("Listing").Range("J3:J32000")
                Set c = .Find(CheminComplet, LookIn:=xlValues)
                If Not c Is Nothing Then
                firstAddress = c.Address
                    Do
                    Sheets("Listing Tag + Trunk").Cells(IndexTag, 1).Value = c.Value
                    IndexTag = IndexTag + 1
                    Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> firstAddress
                End If
            End With
            IndexFichier = IndexFichier + 1
        Loop
    End Sub
    Toutefois, ma question résolu, y a t'il une méthode qui définie que la derniere cellule soit la derniere cellule avec du texte dans cette ligne ?
    With Sheets("Listing").Range("J3:J32000")

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

Discussions similaires

  1. Récupération éléments zone de liste multiple
    Par TimDe dans le forum Excel
    Réponses: 16
    Dernier message: 16/09/2008, 16h55
  2. [XPATH] Problème récupération élément imbriqué.
    Par Mygush dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/02/2008, 17h28
  3. Récupération éléments de liste WSS dans Infopath
    Par st_vinja dans le forum InfoPath
    Réponses: 2
    Dernier message: 21/11/2007, 10h55
  4. [Excel] Récupération d'un filtre automatique dans une cellule
    Par billy123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2007, 15h32
  5. [FLASH 8] Récupération éléments formulaire
    Par bractar dans le forum Flash
    Réponses: 1
    Dernier message: 03/02/2006, 16h43

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