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 :

Tri étendu par ordre alphabétique sur un tableau aux dimensions dynamiques [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut Tri étendu par ordre alphabétique sur un tableau aux dimensions dynamiques
    Bonjour à tous !

    Je souhaiterais automatiser en vba (via CommandButton1_Click) le tri d'une base de données qui sera complété régulièrement par des utilisateurs, voici mon cahier des charges :

    - La première ligne de la base de données est une ligne d'en tête et ne doit pas faire parti du tri.
    - Ce tri doit s'effectuer dans la colonne A, cette dernière contenant uniquement des formules, j'aimerais que le tri prennent en compte le résultat et non la formule.
    - Il faut également que le tri soit étendu aux autres colonnes afin que les lignes ne soient pas mélangées pendant le tri (imaginez le drame ^^) , contrainte supplémentaire, le nombre de colonnes sera amené à bouger régulièrement.

    J'ai fais pas mal de recherches et d'essais mais les quelques contraintes que j'ajoute me poussent à venir chercher de l'aide sur votre forum.

    Voila, je vous remercie par avance de votre aide, et bon appétit !

  2. #2
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour,

    utilisation de base d'Excel, donc réalisable aisément manuellement en utilisant l'Enregistreur de macros,
    fournissant ainsi le code sur un plateau !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Bonjour Marc,

    L'enregistreur de macro faisait parti de mes tests précédents, mais il ne prends pas en compte les dimensions dynamique du tableau, voici le code obtenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Range("A2:AD416").Select
        ActiveSheet.Sort.SortFields.Clear
        ActiveSheet.Sort.SortFields.Add Key:= _
            Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveSheet.Sort
            .SetRange Range("A3:AD416")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Merci en tout cas pour ta réponse, il est vrai que cet enregistreur est très pratique quand on débute !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai développé et mis en ligne une fonction de tri avec de multiples arguments permettant de trier verticalement ou horizontalement, liste personnalisée avec ou sans titre, une ou plusieurs colonnes avec tri ascendant et ou descendant dont tu trouveras le lien dans cette contribution.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    C'est une procédure très complète qui peut certainement faire l'affaire dans mon cas, mais en me penchant sur le code proposé, j'admets ne pas avoir le niveau pour mettre en pratique ta méthode.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Voila, j'ai finis par trouver la solution, je la partage pour les intéressés :

    Pour ceux qui n'ont pas d'en-tête dans leur base, il suffit de remplacer A2 par A1 et Range("2:" par Range("1:" à la ligne 6 du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ActiveSheet.Sort.SortFields.Clear
        ActiveSheet.Sort.SortFields.Add Key:= _
            Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveSheet.Sort
            .SetRange ActiveSheet.Range("2:" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Si quelqu'un à plus simple, je suis preneur !

    Bonne journée et merci à Marc et Philippe pour leur participation !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/01/2012, 11h24
  2. Tri list par ordre alphabétique
    Par mbadjo79 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/04/2009, 10h01
  3. Problème tri objet par ordre alphabétique
    Par scary dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 08/03/2009, 22h14
  4. Tri d'un tableau par ordre alphabétique
    Par arouze dans le forum VB.NET
    Réponses: 6
    Dernier message: 02/04/2007, 14h41
  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