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 :

Passer un tableau dans un filtre en VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    attache de direction
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : attache de direction
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Par défaut Passer un tableau dans un filtre en VBA
    Bonjour,
    J'ai dans un classeur Microsoft Office Excel 2007, une feuille contenant une colonne de texte (environ 50 lignes)
    Est il possible en VBA de faire un filtre sur une autre feuille de ce classeur en "passant" cette colonne sous forme de tableau?
    Merci à vous

    Cordialement

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    Est il possible en VBA de faire un filtre sur une autre feuille de ce classeur en "passant" cette colonne sous forme de tableau?
    Que cherches-tu exactement ?
    filtrer une colonne d'une feuille et copier le résultat sur une colonne vierge d'une autre feuille ?, si oui, qu'appelles-tu "Tableau" ? si c'est une variable tableau, il n'y en a pas besoin,
    dans un premier temps, ouvres l'enregistreur de macros, filtres ta colonne, copies et colles le résultat sur ton autre feuille, enlèves le filtre de la 1ère feuille arrêtes la macro, regardes le résultat et publies le sur ton prochain message (entre balises #), je t'aiderai à nettoyer le code
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut RE
    Bonjour
    Je reconnais que la demande n'est pas très claire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre du Club
    Homme Profil pro
    attache de direction
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : attache de direction
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Par défaut
    Merci Dom pour ta réponse.
    En fait l'idée c'est de pouvoir , si c'est possible, utiliser dans le code filtre VBA, une variable constituée des éléments de la feuille contenant une colonne de texte
    pour éviter d'entrer ces éléments à la main ou par l'enregistreur de macro.
    Du coup, je ne sais pas comment faire pour affecter à cette variable (que j'imagine en variable ARRAY) , la colonne concernée et surtout si je peux l'utiliser dans le filtre
    Je vois comme avantage, de n'avoir à changer dans mon filtre que le nom de ma variable, si les éléments à trier sont ceux d'une autre colonne par exemple
    Si je ne suis pas clair, je reprends mon explication sans problème
    Merci

    Bonjour patricktoulon,

    Je reconnais également que je ne suis pas très clair
    Voici reformulée, ma demande initiale et pour exemple
    J'ai dans une feuille1 , une colonne qui contient en A1 "ccc", en A2"eee" et en A3 "ffff"
    J'ai une autre feuille2 qui contient une colonne avec ces valeurs mais aussi d'autres valeurs
    Filtrer cette feuille2 par un filtre "ActiveSheet.Range("$A$1:$A$5").AutoFilter Field:=1, Criteria1:=Array("ccc","eee", "ffff"), Operator:=xlFilterValues"
    ca je sais faire.
    Mais est il possible de me servir de la colonne de la feuille1 pour remplacer dans le code "Array("ccc","eee", "ffff")" par "Array("variable_de_la_colonne_feuille1")"?
    Et ainsi éviter d'entrer les éléments "ccc","eee", "ffff à la main ou par l'enregistreur de macro (car en fait , j'ai environ 30 lignes dans la feuille1)
    Merci et j'espère vraiment avoir été plus clair
    Patrick

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    non pas vraiment du moins je crois comprendre que tu veux alimenter une colonne d'une des deux feuille avec les manquants présent dans une autre feuille
    c'est bien ca ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre du Club
    Homme Profil pro
    attache de direction
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : attache de direction
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Par défaut
    Merci Patrick
    En fait j'ai une colonne dans une feuille dans laquelle se trouvent des données; A1 "ccc", en A2"eee" et en A3 "ffff"
    Peut on créer un code qui dirait en vba: met dans mavariable le contenu de A1;A2,A3
    et que je pourrai inclure dans ActiveSheet.Range("$A$1:$A$5").AutoFilter Field:=1, Criteria1:=Array("mavariable"), Operator:=xlFilterValues" pour filtrer une autre feuille?
    Bien cordialement

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Un exemple avec le filtre avancé:
    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
    43
    44
    45
    Sub Filtre_Avance()
     
    'Définir la feuille à filter
    Set f = Worksheets("Feuil2")
     
    'Définir le champ à filter
    Set r = f.Range("C3:D100")
     
    'Définir la feuille des critères
    Set FeuilleCriteres = Sheets("Feuil1")
     
    'Définir le champ des critères
    Set Criteres = FeuilleCriteres.Range("A1:X40")
     
    'Définir la colonne des critères
    colonne = 2
    Set Criteria = Criteres.Columns(colonne)
     
    'Ne garder que les premieres cellules non vides
    Set rr = Nothing
    For i = 1 To Criteria.Rows.Count
     
     Set c = Criteria.Cells(i)
     
     If c.Value = "" Then
      Exit For
     Else
     
      If rr Is Nothing Then
        Set rr = c
      Else
        Set rr = Union(rr, c)
      End If
     End If
     
    Next
     
    r.AutoFilter
     
    r.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=rr, Unique:=False
     
    r.Parent.Activate
    r.Select
     
    End Sub

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par Millery Voir le message
    Peut on créer un code qui dirait en vba: met dans mavariable le contenu de A1;A2,A3
    Oui via le B-A-BA d'Excel, les fonctions de feuille de calculs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        [A1:A5].AutoFilter 1, Feuil1.Evaluate("INDEX(TRANSPOSE(A1:B3),1)"), xlFilterValues
    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  9. #9
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 237
    Par défaut
    hello,
    en équivalent en VBA à ce que Marc-L a écrit tu peux faire comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub FiltreParPlageCrit()
    Dim vCrit As Variant
    Dim PlageCrit As Range
    Dim PlageFruits As Range
    Set PlageFruits = Sheets("Feuil2").Range("$A$1:$A10")
    Set PlageCrit = Sheets("Feuil1").Range("$A2:$A4")
    vCrit = PlageCrit.Value
    PlageFruits.AutoFilter _
        Field:=1, _
        Criteria1:=Application.Transpose(vCrit), _
        Operator:=xlFilterValues
    End Sub
    sur la Feuille 1 de A2 à A4 j'ai la liste à utiliser pour le filtre (dans mon exemple il y a pêche,poire,pomme).
    si la liste était disposée en horizontale (ex B1,C1,D1) il n'y aurait pas besoin de faire le Application.Transpose ( ex : Criteria1:=vCrit)

    Nom : FiltrePlageCritère.png
Affichages : 1842
Taille : 18,9 Ko

    Ami calmant, J.P

  10. #10
    Membre du Club
    Homme Profil pro
    attache de direction
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : attache de direction
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Par défaut
    Merci beaucoup JP je vais m'en inspirer pour intégrer cela dans mon fichier
    Bien cordialement
    Patrick

    Merci Marc L je garde aussi cette solution
    Bien cordialement

    Patrick

    Merci Docmarti pour cette réponse claire que je vais mettre en application dans mon VBA
    Bien cordialement
    Patrick

  11. #11
    Membre du Club
    Homme Profil pro
    attache de direction
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : attache de direction
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Par défaut
    Merci Patrick
    Je vais mettre en application les nombreuses réponses reçues
    Bien cordialement
    Patrick
    Citation Envoyé par patricktoulon Voir le message
    non pas vraiment du moins je crois comprendre que tu veux alimenter une colonne d'une des deux feuille avec les manquants présent dans une autre feuille
    c'est bien ca ?

  12. #12
    Membre du Club
    Homme Profil pro
    attache de direction
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : attache de direction
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Par défaut
    Merci Casefayre
    Je vais pouvoir essayer toutes les solutions que l'on me propose c'est cool
    Cordialement
    Patrick
    Citation Envoyé par casefayere Voir le message
    Bonjour,


    Que cherches-tu exactement ?
    filtrer une colonne d'une feuille et copier le résultat sur une colonne vierge d'une autre feuille ?, si oui, qu'appelles-tu "Tableau" ? si c'est une variable tableau, il n'y en a pas besoin,
    dans un premier temps, ouvres l'enregistreur de macros, filtres ta colonne, copies et colles le résultat sur ton autre feuille, enlèves le filtre de la 1ère feuille arrêtes la macro, regardes le résultat et publies le sur ton prochain message (entre balises #), je t'aiderai à nettoyer le code

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

Discussions similaires

  1. Passer un tableau dans un trigger
    Par piotrr dans le forum jQuery
    Réponses: 3
    Dernier message: 11/01/2010, 09h48
  2. Passer un tableau dans un lien
    Par Giantrick dans le forum Langage
    Réponses: 9
    Dernier message: 18/05/2009, 01h32
  3. [AJAX] passer un tableau dans xhr.send() ?
    Par beegees dans le forum AJAX
    Réponses: 10
    Dernier message: 23/03/2009, 14h39
  4. Réponses: 1
    Dernier message: 28/12/2006, 17h02
  5. [Tableaux] Passer un tableau dans une requête HTTP ??
    Par haffouff dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2006, 17h17

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