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 :

Réduire une macro [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 346
    Par défaut Réduire une macro
    Bonjour,
    Sur différentes feuilles de calcul j'ai des tableaux (6 au total)
    Chaque tableau à 2 colonnes (ex 'Type' et 'Nbre') et j'ai besoin de classer les données de ces tableaux de façon automatique en triant la colonne 'Nbre' du + grand vers le + petit.
    Je peux utiliser "Trier" dans excel mais cela m'oblige à le faire manuellement pour les 6 tableaux à chaque modification.

    J'ai donc utilisé l'enregistreur de Macro et il m'a sorti celle ci, que j’appelle lors d'une modification sur ma feuille :

    Exemple : Pour le tableau nommé "Num_Lundi" sur ma feuille "Lundi-Mardi"

    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
    Sub Actualisation()
     
    ' TRI DE NUM_LUNDI
        ActiveWorkbook.Worksheets("Lundi-Mardi").ListObjects("Num_Lundi").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Lundi-Mardi").ListObjects("Num_Lundi").Sort. _
            SortFields.Add2 Key:=Range("Num_Lundi[Nbre]"), SortOn:= _
            xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Lundi-Mardi").ListObjects("Num_Lundi").Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End sub
    Cette macro se répète donc 6 fois pour trier tous des tableaux.
    Auriez vous une solution pour simplifier cette automatisation de tri ?

  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
    Citation Envoyé par texas2607 Voir le message
    Auriez vous une solution pour simplifier cette automatisation de tri ?
    Ajoute une colonne "jour" à tes tableau dans laquelle tu mettra l'information correspondant au nom d'onglet.
    Tu mets tous tes tableaux dans la même feuille et tu places un filtre dessus.
    Ca te fera le tri en deux clics.

    Cette macro se répète donc 6 fois pour trier tous des tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Actualisation()
    Dim WS As Worksheet
    For Each WS In ActiveWorkbook
        WS.Columns("A:B").Sort. Key1:=Range("B1"), order1:=xlAscending, header:=xlYes
    Next WS
    End sub
    C'est du code tapé directement sur le forum et non testé. Tu auras donc peut-être du débugage à faire.

    Pour info : le Sort de Range est bien plus simple d'usage que celui de Worksheet.
    Lire ça : https://docs.microsoft.com/fr-fr/off...ectedfrom=MSDN

  3. #3
    Membre éclairé Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 346
    Par défaut
    Bonsoir et merci pour ta réponse.

    Citation Envoyé par Menhir Voir le message
    Ajoute une colonne "jour" à tes tableau dans laquelle tu mettra l'information correspondant au nom d'onglet.
    Tu mets tous tes tableaux dans la même feuille et tu places un filtre dessus.
    Ca te fera le tri en deux clics.
    Le problème c'est que je ne peux pas les mettre sur la même feuille ni rajouter de colonne.
    Ma 1ère feuille contient toutes les données et j'ai d'autres feuilles avec ces fameux tableaux.
    En rajoutant des données sur ma feuille1 je voudrais que les tableaux :
    1/ Se mettent automatiquement à jour -> Ca pas de souci
    2/ Une fois à jour avoir ce fameux tri automatiquement du + vers le -
    Ça fonctionne avec la macro que j'ai mentionné mais je la trouve hard car répété 6 fois (6 tableaux), c'est pour cela que je cherchais "plus léger" car dans l'avenir cela va devoir évoluer.

  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
    Citation Envoyé par texas2607 Voir le message
    Ça fonctionne avec la macro que j'ai mentionné mais je la trouve hard car répété 6 fois (6 tableaux), c'est pour cela que je cherchais "plus léger" car dans l'avenir cela va devoir évoluer.
    C'est pour ça que je t'ai donné un code qui boucle sur les feuilles avec en prime un code de tri plus léger.

    Maintenant, si tu ne dis rien sur les feuilles à traiter et celles qui ne doivent pas l'être, je ne vais pas te tirer les vers du nez.

  5. #5
    Membre éclairé Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 346
    Par défaut
    Je te joins un fichier exemple
    Lorsque je rajoute des données à mon tableau 't_Données' (feuille Données) je voudrais que mes tableaux dans les feuilles 'Lundi-Mardi' et 'Global' se tri automatiquement du + petit vers le + grand sur la colonne 'Nbre'
    Fichiers attachés Fichiers attachés

  6. #6
    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
    Citation Envoyé par texas2607 Voir le message
    Je te joins un fichier exemple
    Je n'ouvre pas les fichiers joints, entre autre pour les raisons expliquées ici : https://www.developpez.net/forums/d8...s-discussions/

    Lorsque je rajoute des données à mon tableau 't_Données' (feuille Données) je voudrais que mes tableaux dans les feuilles 'Lundi-Mardi' et 'Global' se tri automatiquement du + petit vers le + grand sur la colonne 'Nbre'
    Tu n'avais pas dit jusqu'à présent que tu voulais que ça se déclenche automatiquement suite à une modification.
    Cela dit, si un tri sur deux feuille se déclenche après chaque saisie, les saisies risquent d'être lourdes.

    A placer dans le module de la feuille Données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target as Range) 
        Worsheets("Lundi-Mardi").Columns("A:B").Sort. Key1:=Range("B1"), order1:=xlAscending, header:=xlYes
        Worsheets("Global").Columns("A:B").Sort. Key1:=Range("B1"), order1:=xlAscending, header:=xlYes
    End Sub

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

Discussions similaires

  1. Réduire temps d’exécution d'une macro
    Par le_dabbabi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/06/2019, 11h13
  2. Réduire temps d’exécution d'une macro
    Par le_dabbabi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/06/2019, 15h31
  3. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  4. Réponses: 2
    Dernier message: 22/07/2002, 12h13
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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