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 :

Utiliser "trier et filtrer" d'excel dans VBA (a partir d'une liste)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 6
    Par défaut Utiliser "trier et filtrer" d'excel dans VBA (a partir d'une liste)
    Bonjour,
    voici mon problème :
    Je voudrais utiliser la fonction "trier et filtrer" de Excel via un code VBA, et avec les critère suivant :
    une liste de personne (écrite sous Excel) que je récupère grâce au premier code que je vous montre

    je récupère donc la liste de cette manière (je met des " pour correspondre au code VBA crée par le générateur de macro (je pars de cela avant de coder pour comprendre comment faire))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    liste = """" & ActiveCell & """"
     
        ActiveCell.Offset(0, 2).Select
     
        While ActiveCell <> ""
            liste = liste & ", " & """" & ActiveCell & """"
            ActiveCell.Offset(0, 1).Select
        Wend
    Puis j'essaye de trier avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Application.Workbooks("modele_RC_NC_en_cour").Worksheets("extraction").Activate
        ActiveSheet.Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,H:H,I:I").AutoFilter Field:=9, Criteria1:=Array( _
            liste), _
            Operator:=xlFilterValues
    J'espère ne pas vous avoir perdu :/
    (j'ai utiliser le créateur de macro pour avoir une idée de comment faire mais quelque chose doit m'échapper)
    Merci d'avance pour votre temps ^^

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    As-tu vérifié le contenu de la variable liste avant qu'elle soit utilisée dans l'Autofilter ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 6
    Par défaut
    Déjà merci de ta réponse rapide ^^
    Et oui avec une MsgBox , la variable "liste" contient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "Jean XX", "Alex YY", "Emi ZZ", "Nikola WW"
    pour expliquer pourquoi je procède de cette manière je voudrais refaire le code crée par l'enregistreur de macro mais avec mes données, je donne ce code au cas ou.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveSheet.Range("$A$1:$I$1281").AutoFilter Field:=9, Criteria1:=Array( _
             "Allan XX", "Adeline YY", "Francois ZZ"), _
            Operator:=xlFilterValues

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Array( "Allan XX", "Adeline YY", "Francois ZZ") n'est pas une chaîne de caractères. C'est une liste.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 6
    Par défaut
    Ha ! oui je n'y avais pas penser ^^ merci beaucoup

    je vérifie ça demain (ce soir je ne peut pas), je tiens au courant si ça marche

    Je continu a réfléchir au cas ou il y aurait autre chose

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 6
    Par défaut
    Me revoilà,
    J'ai remplacer la chaîne de caractère par un liste comme tu me l'a proposer

    [code]
    While ActiveCell <> ""
    a = a + 1
    texte = ActiveCell
    liste(a) = "=*" & ActiveCell & "*"
    ActiveCell.Offset(0, 1).Select
    MsgBox (liste(a))
    Wend
    [code]
    Mais j'ai un nouveau problème avec la liste maintenant, je ne sais pas comment dire a la formule que je veut qu'i prenne toute ma liste

    quand je lui donne par exemple

    [code]

    Application.Workbooks("modele_RC_NC_en_cour").Worksheets("extraction").Activate
    ActiveSheet.Range("A:A,B:B,C:C,D,E:E,F:F,G:G,H:H,I:I").AutoFilter Field:=9, Criteria1:=Array( _
    liste(2)), _
    Operator:=xlFilterValues

    [code]

    Le programme est content et il tri mon tableau par la donnée en 3eme place dans la liste : liste(2)
    Mais j'aimerai qu'il prenne tout les elements de ma liste

    j'ai essayer avec : liste liste() liste(0 TO 5)
    et j'ai essayer de mettre une fonction ( For i to 5 ____ Next i ) mais comme je le pensais il ne prend pas de fonction ( ce qui me paraît logique mais on ne sais jamais)


    Je viens d'essayer en mettant a la mains liste(0) , liste(1) etc
    Le programme ne marche que quand il y a soit un soit deux entrer ( si je met plus de deux fois liste(0) etc il ne fonctionne plus )

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/09/2017, 11h03
  2. Réponses: 2
    Dernier message: 18/05/2015, 22h09
  3. Réponses: 1
    Dernier message: 09/01/2012, 16h47
  4. [XL-2003] Utiliser fonction excel dans VBA
    Par bebel9313 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2009, 05h55
  5. utilisation des fonction excel dans VBA
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2009, 11h24

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