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 du plus ancien au plus récent (sélection étendue) [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 359
    Points : 77
    Points
    77
    Par défaut Tri du plus ancien au plus récent (sélection étendue)
    Bonjour,

    Je cherche à attribuer à un bouton une macro permettant de classer les dates.

    C'est chose faite avec le code suivant :

    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
    Sub Tri()
    '
    ' Tri Macro
    '
     
    '
        ActiveWorkbook.Worksheets("Histo").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Histo").AutoFilter.Sort.SortFields.Add Key:=Range( _
            "B5:B1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Histo").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    Seulement, lorsque je clique sur ledit bouton, l'affichage me renvoie en haut de mon tableau qui est en constante évolution (749 lignes actuellement) alors que je souhaiterais que l'affichage reste sur la ligne sur laquelle je suis au moment où je clique sur mon bouton.

    Quelqu'un aurait-il une idée pour améliorer mon système ?

    Merci.
    Microsoft SQL Server Management Studio v17.9.1

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       'ligne à mettre avant de trier
        Lig = ActiveCell.Row
     
       'ligne à mettre après le tri
        ActiveWindow.ScrollRow = Lig
    Cdlt

  3. #3
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Ajoute en fin de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets("Histo").Cells(Rows.Count, 2).End(xlUp).Activate
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 359
    Points : 77
    Points
    77
    Par défaut
    Comme ceci ?

    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
    Sub Tri()
    '
    ' Tri Macro
    '
     
    '
    Lig = ActiveCell.Row
        ActiveWorkbook.Worksheets("Histo").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Histo").AutoFilter.Sort.SortFields.Add Key:=Range( _
            "B5:B1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Histo").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
    ActiveWindow.ScrollRow = Lig
        End With
    End Sub
    Microsoft SQL Server Management Studio v17.9.1

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Dernière ligne après le end with

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    End With
    ActiveWindow.ScrollRow = Lig

  6. #6
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 359
    Points : 77
    Points
    77
    Par défaut
    Ça fonctionne parfaitement.

    Merci.
    Microsoft SQL Server Management Studio v17.9.1

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/01/2016, 22h24
  2. Réponses: 5
    Dernier message: 07/01/2016, 12h27
  3. Réponses: 1
    Dernier message: 29/04/2014, 18h54
  4. Réponses: 8
    Dernier message: 29/09/2008, 20h11
  5. Ouvrir des classeurs du plus ancien au plus récent
    Par simstef dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/06/2007, 20h25

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