tri sur 2 colonnes avec 1 colonne date et 1 colonne heure

sebbbbb

XLDnaute Impliqué
bonjour a tous

je me permets de vous solliciter à nouveau. J'ai un réel problème à vous soumettre :).

Pour un doc du boulot j'ai réussi à faire une macro pour faire des tris de dates (seulement sur une colonne). Cependant lorsque plusieurs dates sont identiques, le tri n'est plus respecté à cause des horaires (sur une 2e colonne)

En gros j'aimerai que les lignes B21:AB 21 jusqu'à B30:AB30 soient triées en fonction des cellules N21:p21 (2 colonnes donc, la 1er tri se faisant sur la date puis ensuite sur l'horaire)

Idem sur la 2e partie du tableau mais le tri se faisant à partir des colonnes AA (dates) et AB (horaires)

un grand grand merci par avance pour votre aide
seb
 

Pièces jointes

  • Relève.xlsm
    53.4 KB · Affichages: 37

sebbbbb

XLDnaute Impliqué
cool !
j'ai trouvé tout seul comme un grand :) (trop content !)
Ma pomme je te confirme que le tri sur colonne fusionnées fonctionne bien

ci-dessous mon code

Sub crewchrono()
'
' tri des embarquants / débarquants par date de vol
'

'
Range("B21:AB30").Select
ActiveWorkbook.Worksheets("Crew change").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Crew change").Sort.SortFields.Add Key:=Range("N21:N30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Crew change").Sort.SortFields.Add Key:=Range("P21:p30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Crew change").Sort
.SetRange Range("B21:AB30")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Range("B35:AB44").Select
ActiveWorkbook.Worksheets("Crew change").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Crew change").Sort.SortFields.Add Key:=Range("N35:N44"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Crew change").Sort.SortFields.Add Key:=Range("P35:p44"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Crew change").Sort
.SetRange Range("B35:AB44")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

merci
seb
 

Papou-net

XLDnaute Barbatruc
Bonjour,

Je rejoins l'affirmation de mapomme (que je salue au passage) concernant les cellules fusionnées (à éviter dans le cas d'utilisation de VBA).

Par ailleurs sebbbbb, si la mise en majuscule se fait bien en cas d'une cellule renseignée, essaie d'en effacer le contenu et tu constateras un message d'erreur. Erreur dûe là-aussi à l'usage de la fusion de cellules.

Enfin, je profite de mon intervention pour te proposer un code plus concis:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next 'Pour passer outre l'erreur en cas d'effacement

If Not Application.Intersect(Target, Range("B21:L30, B35:L44, R21:R30, Y35:Y44")) Is Nothing Then
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End If
End Sub


Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 381
Membres
102 876
dernier inscrit
BouteilleMan