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 :

Script pour filtre avec un Range indeterminé


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Points : 39
    Points
    39
    Par défaut Script pour filtre avec un Range indeterminé
    Bonjour,
    Alors voici un petit problème que j'ai:
    J'ai un tableau environ comme celui-ci, cependant les nombre sont appeler a changer, ainsi que le nombre de ligne, mais les colonne reste les même.

    1 a 15 60
    1 b 10 20
    1 a 20 55
    1 b 15 20
    1 a 15 75
    1 c 30 60
    1 a 15 75
    1 b 10 20
    1 a 20 60
    1 a 15 60

    sur ce tableau, je dois avoir une commande pour faire un tri automatique
    cependant si je sélectionne tout le tableau, il ne tri rien puisque la première colonne est a 1 partout (ce chiffre peut changer aussi bien sur). je veux obtenir ceci:

    1 a 15 60
    1 a 15 60
    1 a 15 75
    1 a 15 75
    1 a 20 55
    1 a 20 60
    1 b 10 20
    1 b 10 20
    1 b 15 20
    1 c 30 60

    manuellement c'est facile. S'il y avait un nombre de ligne toujours pareil avec la même quantité de nombre ou lettre pareil dans chaque. le tri manuel se fait donc en plusieurs étape:
    1- tout le tableau selectionné pour faire un tri
    2- selectionner toutes les ligne contenant "a" en colonne 2 et faire un autre tri
    3- selectionner tous nombre identique de la colonne 3 et faire un autre tri avec la colonne 4 .... etc

    comment faire le tout avec un script vba sachant que le tableau change à chaque fois, autant le nombre de ligne, que les lettre et chiffre.

    Merci

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Regardes la méthode Sort de l'objet range. Tu peux faire le tri sur 3 champs simultanément.

    Cordialement,

    PGZ

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Points : 39
    Points
    39
    Par défaut
    Pour documentation s'il y a des utilisateur qui ont le même problème.

    J'ai trouvé la solution avec une macro excel, puis ensuite je l'ai copié dans mon VBA... Car avec la fonction sort de vba on ne peut que trier avec 3 keys.

    j'ai donc fait comme suit:
    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
    Dim noligne As Integer
    For i = 1 To 150
        If Cells(i, 1) = "" Then
            noligne = i - 1
            i = 150
        End If
    Next i
    Range(Cells(1, 1), Cells(noligne, 10)).Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(1, 1), Cells(noligne, 1)) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(1, 2), Cells(noligne, 2)) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(1, 4), Cells(noligne, 4)) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(1, 5), Cells(noligne, 5)) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(1, 10), Cells(noligne, 10)) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range(Cells(1, 1), Cells(noligne, 10))
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    merci pour l'aide

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

Discussions similaires

  1. Script pour zipper avec Winzip +date
    Par PAB/31/SAB dans le forum VBScript
    Réponses: 2
    Dernier message: 08/06/2011, 14h19
  2. comment modifier le script pour zoommer avec un style.cursor?
    Par sebac dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/04/2010, 16h08
  3. Cherche script pour défilement avec options
    Par Martyin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2007, 08h41
  4. [Java] Script pour formatter un textarea avec des icones
    Par odoobe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/09/2006, 09h30

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