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 :

Macro de tri personnalisé pour un classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut Macro de tri personnalisé pour un classeur
    Bonjour à tous
    J'ai un classeur de plusieurs feuilles.
    Dans chacune d'elles un tableau identique de cinq colonnes.
    Je veux trier tous les tableaux dans un ordre ascendant à partir des cellules: A1:A15 puis C1:C15 puis descendant pour B1:B15.
    Je peux utiliser 2 formules, soit une macro pour trier feuille aprés feuille; soit pour trier toutes les feuilles en même temps.
    Merci pour votre attention.
    Bob

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Enregistres une macro avec l'enregistreur d'excel pour faire ce que tu demandes
    en ouvrant le code généré ( ce à quoi je n'ai pas compris grand chose , il faut l'avouer) tu n'auras plus qu'à ajouter un boucle sur les feuilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    triage()
    for t= 1 to sheets.count
    with sheets(t)
    ..
    ' là tu places le code généré n'oublie pas de placer un point  . devant les .RANGE(
     
    ..
    end with
    next
    end sub

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Salut
    J'ai fait la macro ci-dessous pour la feuille 11 par exemple.
    Je ne connais pas le code à écrire sur "this workbook"pour générer cette macro sur toutes les feuilles .
    Merci pour ton aide
    Bob

    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
    Macro1 Macro
    '
    '
        Range("A4:J43").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Worksheets("11").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("11").Sort.SortFields.Add Key:=Range("A5:A43"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("11").Sort.SortFields.Add Key:=Range("E5:E43"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("11").Sort
            .SetRange Range("A4:J43")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub

  4. #4
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    puisque toutes tes feuille ont les même tableau il suffit de garder la macro dans un module et que ce soit elle qui boucle sur toutes les feuilles
    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
     
    sub Macro1()
    '
    for t= 1 to sheets.count  ' nombre de feuille dans le classeur
     
    with sheets(t)    'on balaye les feuilles par leur numero d'idex
     
       .Range("A4:J43").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Worksheets("11").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("11").Sort.SortFields.Add Key:=.Range("A5:A43"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("11").Sort.SortFields.Add Key:=.Range("E5:E43"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets(t).Sort
            .SetRange .Range("A4:J43")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    end with
    next
    End Sub
     je n'ai pas les feuille sous le coude mais essayes cette modif en plaçant la macro dans un module

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Salut Daranc
    J'ai placé ta macro dans un module mais lorsque j'appelle cette macro, j'ai un message d'erreur "la méthode Select de la classe Range a échoué."

    Sur cette ligne ".Range("A4:J43").Select"

    J'ai essayé à partir de plusieurs feuilles sans résultat.

    Je n'ai peut-être pas donné assez d'explications, donc:

    J'ai un classeur de X pages qui possèdent le même tableau (A4:j43) que je veux trier par les colonnes
    A ascendant
    C descendant
    B ascendant

    Sur ton exemple je pense qu'il faudrait peut-être changer (ActiveWorkbook.Worksheets("11")) car je dois utiliser cette macro pour toutes les feuilles.
    Je peux créer un bouton de macro sur chaque feuille aussi.
    Merci pout ta patience.
    Cordialement
    Bob

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Daran
    J'ai trouvé c'était "Activeworksheet"
    Je te remercie encore pour ton attention.
    bob


    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
    Sub Macro3()
    '
    ' Macro3 Macro
    '
     
    '
        Range("A3:J43").Select
        Range("J3").Activate
        ActiveSheet.Sort.SortFields.Clear
         ActiveSheet.Sort.SortFields.Add Key:=Range("A4:A43"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
         ActiveSheet.Sort.SortFields.Add Key:=Range("E4:E43"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
         ActiveSheet.Sort.SortFields.Add Key:=Range("G4:G43"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveSheet.Sort
            .SetRange Range("A3:J43")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub]

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

Discussions similaires

  1. Tri des données et classeur (Macro)
    Par Iridescent dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/06/2012, 03h13
  2. Réponses: 2
    Dernier message: 28/11/2011, 22h33
  3. [XL-2003] Gestion de menu personnalisé pour deux classeurs identiques ouverts
    Par Sacha_vba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2010, 19h00
  4. [XL-2003] macro pour ouvrir classeur ,récup données et fermer
    Par doudou8mc dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/11/2009, 16h45
  5. Réponses: 2
    Dernier message: 10/06/2006, 13h19

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