Sélectionner et trier plusieurs lignes entre deux valeurs défini

AurelC -  
 AurelC -
Bonjour,

Je me tourne vers ce forum car je peche depuis plusieurs jours.
J'ai un tableau qui se compose grosso modo comme ceci :
....
....
....
Etudiants
1
2
3
4
5
Professeurs
1
2
3
4
5
Autres
...
..
.

Ce que je cherche à faire est un bouton qui lorsque l'on clique dessus
Sélectionne toutes les lignes situées entre "Etudiants" et "Professeurs"
Dans l'exemple ci-dessus il y à 5 lignes mais il peux y en avoir plus.
Une fois sélectionnées je souhaite qu'elles soient triée par ordre alphabétique.
J'ai eut beau regarder sur pleins de forums... je ne parviens pas à résoudre ce casse-tête.
Si quelqu'un peux m'aider, ça m'aiderai grandement.
Merci d'avance :)

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    en vba faire Alt F11 pour accéder à l'éditeur
    Insérer un module avec ce code
    Mettre un bouton sur la feuille concernée et l'associer à la macro:

    Option Explicit
    Public Const cotot As String = "A"
     Sub Selection()
    Dim obj As Object, liobjetud, liobjprof, liobjautres As Long
    Dim DernLigne As Long
    DernLigne = Range("A65536").End(xlUp).Row
    With ActiveSheet
      Set obj = .Columns(cotot).Find("Etudiants", , , xlWhole)
      If obj Is Nothing Then MsgBox "le mot Etudiants n'est pas en colonne " & cotot: Exit Sub
      liobjetud = obj.Row
     Set obj = .Columns(cotot).Find("Professeurs", , , xlWhole)
      If obj Is Nothing Then MsgBox "le mot Professeurs n'est pas en colonne " & cotot: Exit Sub
      liobjprof = obj.Row
       Set obj = .Columns(cotot).Find("Autres", , , xlWhole)
      If obj Is Nothing Then MsgBox "le mot Autres n'est pas en colonne " & cotot: Exit Sub
      liobjautres = obj.Row
      Range("A" & liobjetud + 1 & ":A" & liobjprof - 1).Sort Key1:=Range("A" & liobjetud + 1)
      Range("A" & liobjprof + 1 & ":A" & liobjautres - 1).Sort Key1:=Range("A" & liobjprof + 1)
    End With
    End Sub
    


    Voilà
    1
  2. AurelC
     
    Bonjour cs_LE PIVERT.
    Je tiens à m'excuser pour le temps de réponse.
    Je te remercie,
    1