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

VBA Discussion :

Filtre automatique par ordre alphabétique


Sujet :

VBA

  1. #1
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Filtre automatique par ordre alphabétique
    Bonjour,

    Malgré la consultation de topics reliés à mon problème je n'arrive pas solutionner le mien...

    Explications :

    J'ai un fichier (assez lourd) pour lequel il me faut à un moment donner faire en sorte que les valeurs soient classées par ordre alphabétique. En gros chaque jour je met à jour le fichier avec de nouvelle données qu'on va aller coller dans certaines feuilles et après ce "collage" il me faut reclasser mes données par ordre alphabétique.

    Premièrement j'avais le code suivant :

    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
    ActiveWorkbook.Worksheets("INPUT GLOBAL").ListObjects("Input_Global"). _
            Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("INPUT GLOBAL").ListObjects("Input_Global"). _
            Sort.SortFields.Add Key:=Range("Input_Global[[#All],[Security name]]"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
       'With ActiveWorkbook.Worksheets("INPUT GLOBAL").ListObjects( _
            Input_Global").Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        'End With
     
     
    Ce code fonctionne bien sauf qu'à chaque fois il me ressortait l'erreur suivant : Erreur 1004 methode 'range' de l'objet _global a échoué
     
    En relançant la macro manuellement cela permettait de contourner l'erreur mais cela était relativement peu pratique car il fallait répéter l'opération pour chaque feuille. 
     
     
    Suivant les conseils de certains sur ce forum j'ai donc réécrit un code qui est le suivant : 
     
    Worksheets("INPUT GLOBAL").Select
    Rows("20:20").Select
    ActiveWorkbook.Worksheets("INPUT GLOBAL").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("INPUT GLOBAL").AutoFilter.Sort.SortFields.Add Key:=Range _
            ("Input_Global[[#All],[Security name]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("INPUT GLOBAL").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Or ce code ne fonctionne pas car il me ressort l'erreur : Erreur d'exécution 1004 Erreur définie par l'application ou par l'objet. Tout ça en me surlignant .Apply sur mon code.

    Ca fait plusieurs jours que je cherche sur le net et je n'y arrive pas et cela commence à me taper sur le système...


    Merci d'avance pour votre aide !

    Romain

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je n'ai aucun souci de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With ActiveWorkbook.Worksheets("INPUT GLOBAL").ListObjects("Input_Global")
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=.ListColumns("Security name").DataBodyRange, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With

  3. #3
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Bonsoir Joe,

    Merci beaucoup de votre réponse, elle fonctionne parfaitement. Je ne comprends pas trop quel était le problème à la base mais en tout cas ce code (plus simple) fonctionne bien mieux.

    Bien à vous et encore merci,

    Romain

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    dans la mesure où le code que tu as fournis contient des erreur de syntaxe (une ligne mise en commentaire et un String sans guillemet ouvrante), je n'ai pas vraiment cherché l'erreur, et me suis contenté d'optimiser la rédaction, en utilisant les propriétés de ton ListObject (ListColumns("Nom_De_Champs").DataBodyRange) qu'il ne faut jamais négliger

  5. #5
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Très bien merci de la précision.

    Romain

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

Discussions similaires

  1. Formulaire par ordre alphabétique
    Par Nabouille dans le forum Access
    Réponses: 1
    Dernier message: 21/03/2006, 11h29
  2. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 15h53
  3. Affichage par ordre alphabétique
    Par masseur dans le forum Langage
    Réponses: 8
    Dernier message: 08/12/2005, 11h41
  4. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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