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

Fermé
AurelC - 5 févr. 2021 à 11:07
 AurelC - 8 févr. 2021 à 11:16
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
5 févr. 2021 à 15:44
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
Bonjour cs_LE PIVERT.
Je tiens à m'excuser pour le temps de réponse.
Je te remercie,
1