Je souhaiterai savoir quel seraist le mode opératoire pour appliquer la macro suivante automatiquement lors du chargement de l'onglet "Plannning"
Sub triligne()
On Error GoTo errorhandler
Dim i As Long
Dim fPlanning As Worksheet
Dim r As Range
Dim masquer As Range
Dim Premiere As Range
Dim Derniere As Range
Set fPlanning = ActiveWorkbook.Worksheets("Planning")
fPlanning.Activate
'Premier tri : descendant
Set r = fPlanning.Range("C1:BQ1") 'Definit le champ a trier
Set Premiere = r.Cells(1, 1)
Set Derniere = r.Cells(1, r.Columns.Count)
'Affiche toutes les colonnes de ce champ
fPlanning.Range(fPlanning.Columns(Premiere.Column), fPlanning.Columns(Derniere.Column)).Hidden = False
With ActiveWorkbook.Worksheets("Planning").Sort
.SortFields.Clear
.SortFields.Add Key:=r, _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SetRange r
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
'Chercher le premier 0 ou ""
Set masquer = Nothing
For i = Premiere.Column To Derniere.Column
If fPlanning.Cells(1, i) = "" Or fPlanning.Cells(1, i) = 0 Then
Set masquer = fPlanning.Range(fPlanning.Columns(fPlanning.Cells(1, i).Column), Derniere)
Set r = fPlanning.Range(Premiere, fPlanning.Cells(1, i - 1)) 'Definir le champ a trier
Exit For
End If
Next
If i > Premiere.Column Then
'Second tri : Ascendant
With ActiveWorkbook.Worksheets("Planning").Sort
.SortFields.Clear
.SortFields.Add Key:=r, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange r
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
'Masquer les colonnes dont le titre est "" ou est 0
If Not masquer Is Nothing Then
fPlanning.Range(fPlanning.Columns(masquer.Column), fPlanning.Columns(masquer.Columns.Count + masquer.Column - 1)).Hidden = True
End If
End If
Exit Sub
errorhandler:
MsgBox "Ligne: " & Erl & vbCrLf & _
"Error: (" & Err.Number & ") " & Err.Description, vbCritical, "Erreur"
End Sub
Cordialement.