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 :

Boucle de tri [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Septembre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 37
    Par défaut Boucle de tri
    Bonjour,
    J'ai plusieurs fiches "collées" côte à côte (oui, je sais... mais changer les habitudes des utilisateurs est trèèès compliqué), et je souhaiterais faire un tri sur une plage donnée pour chaque fiche. J'ai la macro de tri qui fonctionne, mais j'ai un problème avec la boucle. J'apprécierais un petit coup de main...
    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
    Sub Filtre()
    '
    ' Filtre Macro
    '
    '
    Dim Cell As Range
    '
    Range("6:6").Select
    For Each Cell In Selection
    If Cell.Value <> "" Then
        If Cell = "Nb tiges fleurs" Then
        Set ActiveCell = Cell.Offset(x, y)
        Range("Cell.Offset(4, 0):Cell.Offset(22, 4)").Select
        ActiveWorkbook.Worksheets("chiffrage").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("chiffrage").Sort.SortFields.Add Key:=Range("Cell.Offset(4, 0)") _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("chiffrage").Sort.SortFields.Add Key:=Range("Cell.Offset(4, 1)") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("chiffrage").Sort
            .SetRange Range("Cell.Offset(4, 0):Cell.Offset(22, 4)")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
            End With
        End If
        End If
        Next Cell
    End Sub
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Qu'est-ce que tu entends par fiches côte à côte ? Dans la même feuille ?
    Si oui, tu ne peux pas filtrer en même temps différents tableaux sur une même feuille sauf si tous les tableaux sont du même format ou ont les mêmes colonnes à filtrer...

    Mais je n'ai peut-être pas très bien compris le problème... (?)

    Et tu ne dois pas mettre de guillemets autour d'un Range comme ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Key:=Range("Cell.Offset(4, 0)")
    Essaie plutôt

  3. #3
    Membre averti
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Septembre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 37
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Qu'est-ce que tu entends par fiches côte à côte ? Dans la même feuille ?
    Si oui, tu ne peux pas filtrer en même temps différents tableaux sur une même feuille sauf si tous les tableaux sont du même format ou ont les mêmes colonnes à filtrer...
    Oui c'est le cas, les fiches sont toutes identiques et doivent toutes être triées de la même façon. D'où la macro...
    J'ai fait la modif pour les "Key", mais ça bloque avant : ça me met l'erreur "LA méthode Range de l'objet global a échoué" pour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Cell.Offset(4, 0):Cell.Offset(22, 4)").Select
    J'ai essayé d'enlever les guillemets mais ça m'affiche un message d'erreur...
    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
    Sub Filtre()
    '
    ' Filtre Macro
    '
    '
    Dim Cell As Range
    '
    Range("6:6").Select
    For Each Cell In Selection
    If Cell.Value <> "" Then
        If Cell = "Nb tiges fleurs" Then
        Set Cell = Cell.Offset(x, y)
        Range("Cell.Offset(4, 0):Cell.Offset(22, 4)").Select
        ActiveWorkbook.Worksheets("chiffrage").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("chiffrage").Sort.SortFields.Add Key:=Cell.Offset(4, 0) _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("chiffrage").Sort.SortFields.Add Key:=Cell.Offset(4, 1) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("chiffrage").Sort
            .SetRange Range("Cell.Offset(4, 0):Cell.Offset(22, 4)")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
            End With
        End If
        End If
        Next Cell
    End Sub

  4. #4
    Membre averti
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Septembre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 37
    Par défaut
    En fait j'ai trouvé, c'était juste une histoire de syntaxe, il fallait mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cell.Offset(4, 0), Cell.Offset(22, 4)).Select
    et c'est bon ça marche ! Merci de m'avoir donné cette piste

    Le code complet et fonctionnel si ça peut servir à quelqu'un :
    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
    Sub Filtre()
    '
    ' Filtre Macro
    '
    '
    Dim Cell As Range
    '
    Range("6:6").Select
    For Each Cell In Selection
    If Cell.Value <> "" Then
        If Cell = "abcd" Then
        Set Cell = Cell.Offset(x, y)
        Range(Cell.Offset(4, 0), Cell.Offset(22, 4)).Select
        ActiveWorkbook.Worksheets("feuill1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("feuill1").Sort.SortFields.Add Key:=Cell.Offset(4, 0) _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("feuill1").Sort.SortFields.Add Key:=Cell.Offset(4, 1) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("feuill1").Sort
            .SetRange Range(Cell.Offset(4, 0), Cell.Offset(22, 4))
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
            End With
        End If
        End If
        Next Cell
    End Sub

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

Discussions similaires

  1. [XL-2007] Gestion d'erreur- boucle de tri cells.find - debutant
    Par isfet dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/06/2010, 09h54
  2. trié des date avec une boucle for each
    Par alex santus dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/09/2009, 11h00
  3. Réponses: 1
    Dernier message: 17/11/2007, 13h42
  4. [SQL] tri d'un resultat avec boucle for
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/09/2007, 14h30
  5. Tri dans une boucle avec numéros
    Par delavega dans le forum ASP
    Réponses: 1
    Dernier message: 24/11/2006, 13h17

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