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-E] Enregistrement d'une plage filtrée


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut [VBA-E] Enregistrement d'une plage filtrée
    Bonjour,


    Je cherche a récupérer la plage corresspondant aux résultats trouvé lors d'un filtre...

    J'ai écrit ce code, ...mais il me récupère toute la zone triée.. mois je souhaite juste la zone des résultats

    Help


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub ChangeFilters()
     
        Dim currentFiltrange As String
     
        Sheets(1).Range("A1").AutoFilter field:=5, Criteria1:="5"
     
        With Sheets(1).AutoFilter
            currentFiltrange = .Range.Address
        End With
     
        MsgBox currentFiltrange
     
    End Sub
    merci

    Dams'

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Application.Range("A1").SpecialCells(xlCellTypeVisible).Address
    Je n'ai pas retrouvé la réponse de Silky mais j'ai retrouvé le code
    Tu dis

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    merci...

    mais t'es sûr ??? le .address pose problème... ça bug :-(

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    par contre ça m'a mis sur la voie.... :-) merci

    ça ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ChangeFilters()
     
        Dim currentFiltrange As String
     
     
        Sheets(1).Range("A1").AutoFilter field:=5, Criteria1:="5"
     
        Maplage = ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Address
     
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Application.Range("A1").SpecialCells(xlCellTypeVisible).Address
    Je n'ai pas retrouvé la réponse de Silky mais j'ai retrouvé le code
    Tu dis
    Citation Envoyé par damsmut
    merci...

    mais t'es sûr ??? le .address pose problème... ça bug :-(


    en fait c'était le range qui posait problème.... à remplacer par cells :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maplage = ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Address

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non, en fait, si tu utilises l'instance, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Application.Range("A1").SpecialCells(xlCellTypeVisible)
    Sans l'instanciation, le code que je t'ai passé fonctionnait chez moi

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    Citation Envoyé par ouskel'n'or
    Non, en fait, si tu utilises l'instance, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Application.Range("A1").SpecialCells(xlCellTypeVisible)
    Sans l'instanciation, le code que je t'ai passé fonctionnait chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ChangeFilters()
     
        Sheets(1).Range("A1").AutoFilter field:=5, Criteria1:="5"
     
        Maplage = ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Address
        Set plage = Application.Range("A1").SpecialCells(xlCellTypeVisible)
     
        MsgBox Maplage 'là ça marche
        MsgBox plage 'là ça bug chez moi
     
    End Sub
    Ben y'a un truc que j'ai pas compris alors.... comment afficher la plage alors avec ta façon ?

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Msgbox Plage.address
    Mais c'est surtout intéressant quand tu veux parcourir une plage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Set plage = Application.Range("A1").SpecialCells(xlCellTypeVisible)
        For each Cell in plage
            NoLigne = Cell.row
            NoCol = Cell.column
            Ref = Cell.address
            '...
            Cells(NoLigne2, NoCol2).value = Cell
            'etc.
        Next
    Tu comprons ?
    A+

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    ok merci beaucoup !

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    encore une petite question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage_triée = Application.Range("A1").SpecialCells(xlCellTypeVisible)
    Comment faire : je souhaiterait avoir la plage des cellules visibles ET non vides....

    j'ai vu qu'il y'a le critère xlCellTypeConstants (Cellules contenant des constantes) ou xlCellTypeBlanks (Cellules vides)...

    mais comment coupler 2 critères ?

    merci A+

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Il existe un code pour masquer les cellules vides (ou les supprimer) Faudrait que tu fasses ça avant le filtre. Le code proposé supprime les lignes vide mais on peut remplacer supprimer par masquer
    Une recherche dans le sous-forum Excel "Contribuez"
    A+

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tiens, j'ai modifié le code qui va bien pour masquer les lignes vides
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MasquerLesLignesVides()
    Dim NbLignes As Long, i As Long
        Application.ScreenUpdating = False
        NbLignes = Range("A65535").End(xlUp).Row
     
        For i = NbLignes To 3 Step -1
            If Range("IV" & i).End(xlToLeft).Column = 1 And Cells(i, 1) = Empty Then Rows(i).Hidden = True
        Next i
     
        Application.ScreenUpdating = True
    End Sub
    A+

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    Merci

    encore une petite question concernant ces filtres auto :

    Est il possible de lancer une macro lorsque l'utilisateur change un critère du filtre auto en place ?

    Je n'ai rien trouvé dans les évènements...

    A+

    une petite idée ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Par défaut
    Je suis preneur si quelqu'un a réponse à cette question.

    Peut on associer une macro à une action de changement sur le filtre

  15. #15
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Juste à coté:

    http://www.developpez.net/forums/sho...46#post2801446

    Cordialement,

    Tirex28/

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: 2
    Dernier message: 27/09/2006, 19h41
  3. [VBA-E]Tri d'une plage par une colonne
    Par illight dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2006, 10h53
  4. [VBA-E] somme d'une plage dynamique
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/11/2005, 21h58
  5. [VBA-E] Image d'une plage de cellule
    Par flogreg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2004, 12h30

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