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 de tableaux avec VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut Tri de tableaux avec VBA
    Bonjour,

    Je cherche à effectuer plusieurs tris sur un tableau qui comporte plusieurs sous-tableaux.

    Exemple, le tableau en pièce jointe comporte 4 tableaux de 2 colonnes. J'ai effectué à la main le tri du tableau 1 (colonnes A et B)
    Sélection du tableau 1 puis Edition/Trier et filtrer/Tri personnalisé/colonne B/ du plus grand au plus petit

    Je dois effectuer la même opération sur les 3 autres tableaux.
    Je souhaite effectuer ce tri en VBA car le problème que je traite comporte beaucoup plus de lignes et s'insère dans une application VBA.
    Est-il possible de sélectionner chaque sous tableau, avec la propriété "Range" par exemple, puis d'effectuer le tri sur la 2ème colonne.

    Si oui, Merci à tous ceux qui auraient une bonne idée

    Cordialement
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut
    La pièce jointe de mon message est illisible. J'espère que la nouvelle est mieux.

  3. #3
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 215
    Par défaut
    hello

    je copie/colle

    Pour ajouter un fichier, il y a en dessous de la fenêtre de composition d'un nouveau message un bouton "gérer les pièces jointes". Dans la fenêtre qui s'ouvre cliquer sur "ajouter un fichier", sélectionner votre fichier dans l'explorateur de fichiers, cliquer sur "ouvrir" dans l'explorateur de fichiers, et enfin cliquer sur le bouton "envoyer".


  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut
    Merci pour ces conseils qui correspondent à ce que j'ai fait hier. Je recommence la manip en espérant avoir plus de succès aujourd'hui?

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut
    Désolé, j'avais encore fait une erreur, mais maintenant ça devrait marcher.
    Images attachées Images attachées  

  6. #6
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 215
    Par défaut
    Hello,

    je ne comprend pas bien la question, en fait l'enregistreur de macro vous donneras la manip, et si ça doit s'intégrer dans un vba existant ça ne devrait pas être un problème pour celui qui code, non ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut
    OK merci pour le conseil, je n'y avais pas pensé

  8. #8
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    ça pourrait ressembler à ça :

    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
    Option Explicit
     
    Sub TrierTout()
    Dim I As Integer
    For I = 1 To 7 Step 2
        With ActiveSheet
            Trier .Range(.Columns(I), .Columns(I + 1))
        End With
    Next I
    End Sub
     
    Sub Trier(UneRange As Range, Optional SurColonne As Integer = 2, Optional Sens As Integer = xlAscending)
    With UneRange.Parent.Sort
        .SortFields.Clear
        .SortFields.Add2 UneRange.Columns(SurColonne), xlSortOnValues, Sens, xlSortNormal, xlSortTextAsNumbers
        .SetRange UneRange
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    End Sub
    à adapter si besoin : on ne voit pas sur les images s'il y a des en-têtes, les numéros de ligne / colonne où ça se passe etc. Là j'ai supposé qu'il n'y a pas d'en-tête et qu'on commence en A1.

  9. #9
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut
    Bonjour et Merci,

    J'ai essayé le module tel que vous l'aviez présenté. Voici le résultat
    Je ne comprends pas tout, mais ça marche. J'ai simplement changé xlAscending par xlDescending et j'ai déplacé le tableau vers la cellule A1.

    Dès que j'aurai le temps, je vais chercher à comprendre l'ensemble de la procédure.
    Il n'y a pas d'en-têtes. Juste une question: qu'est-ce que je dois changer si le tableau n'est pas placé en cellule A1.

    Merci
    Images attachées Images attachées  

  10. #10
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    Juste une question: qu'est-ce que je dois changer si le tableau n'est pas placé en cellule A1.
    Ça sera quand même mieux de rentrer dedans et comprendre le code

    Le 1 du for i = 1 to 7 step 2 représente la première colonne à traiter et le 7 la première colonne du dernier sous-tableau. Donc si par exemple les données etaient en D:K on aurait for i = 4 to 10 step 2

    Par contre si les données ne commencent pas ligne 1 ça va être un peu plus compliqué. Actuellement le tri est appliqué sur toute la colonne : .Range(.Columns(I), .Columns(I + 1)) ce qui les fait commencer implicitement ligne 1.
    Pour des données qui commenceraient par exemple ligne 10, on pourrait remplacer la ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Trier .Range(.Cells(10, I), .Cells(2 ^ 20, I + 1))

  11. #11
    Membre confirmé
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 108
    Par défaut
    Merci pour ces précisions.

    Je reviendrai sur le code car je n'aime pas laisser une tâche inachevée.

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

Discussions similaires

  1. [XL-2013] Tri multi-conditionnel avec VBA
    Par Suc_Pith dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/02/2015, 20h33
  2. [XL-2007] comparer deux tableaux avec VBA
    Par anstech dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2014, 14h36
  3. [AC-2003] Tri et affichage avec VBA
    Par stan057 dans le forum VBA Access
    Réponses: 8
    Dernier message: 19/05/2009, 17h29
  4. Tri de tableaux avec mémorisation des indices
    Par mlny84 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/12/2007, 11h57
  5. Traitement des tableaux de word avec VBA: balise index
    Par Invité dans le forum VBA Word
    Réponses: 20
    Dernier message: 29/11/2005, 15h39

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