Tri automatique + repetition ligne en debut de pages

Bonjour à tous,

Bonjour peresh95,

Effectivement, j'avais bien pensé à traiter ce type d'erreur puis, au fil des modifications du code, ça a fini par m'échapper.

Il suffit donc de rajouter la ligne : Target = LCase(Target)

N'étant pas sous XL2007 pour le moment, je t'envoie la copie complète du code au lieu du fichier.

Private Sub Worksheet_Change(ByVal Target As Range)
' Cette procédure se rapporte à la feuille de présence
' Elle se déclenche chaque fois qu'une cellule est modifiée
'----------------------------------------------------------------------------
' La condition suivante teste si la sélection comporte plusieurs cellules _
  si c'est le cas, la macro n'est pas déclenchée pour éviter une erreur VBA
If Target.Count > 1 Then Exit Sub
'----------------------------------------------------------------------------
' La condition suivante teste si la cellule est dans la plage nommée "Noms" _
  si c'est le cas, le tri est lancé et la macro se termine sur cette action
If Not Intersect(Range("Noms"), Target) Is Nothing Then
  Tri
  Exit Sub
End If
'----------------------------------------------------------------------------
' Cette condition teste si la cellule est vide : si oui, la macro se termine _
  pour éviter une erreur VBA
If Target = "" Then Exit Sub
'----------------------------------------------------------------------------
' La ligne suivante désactive la détection d'événement pour éviter de tourner en boucle
Application.EnableEvents = False
' La condition suivante teste si la cellule est dans le tableau des horaires _
  si c'est le cas, le formatage de la cellule est lancé
If Not Intersect(Range("B3:AO" & Range("Noms").Cells.Count + 2), Target) Is Nothing Then
  Target = LCase(Target) ' Passe les caractères majuscules en minuscules ("H" ---> "h")
  ' Si le dernier caractère  de droite de la cellule est un 'h' ajout de "00" à la fin
  If Right(Target.Value, 1) = "h" Then Target.Value = Target.Value & "00"
  ' Remplacement du "h" dans la cellule par ":" pour qu'Excel considère la valeur comme une heure
  ' L'affichage au format voulu se fait par l'option de mise en forme de la cellule
  Target.Value = CDate(Replace(Target.Value, "h", ":"))
End If
' La ligne suivante rétablit la détection d'événement
Application.EnableEvents = True
End Sub
Sub Tri()
' Cette procédure effectue le tri sur la colonne A de la feuille active (Feuille de présence mater)
' La ligne suivante détecte le n° de la dernière colonne du tableau des heures
dcol = Range("1:2").Find("Presence Matin S1", LookIn:=xlValues, lookat:=xlWhole).Column - 2
' La ligne suivante désactive le rafraîchissement d'écran, ce qui permet de gagner en _
  rapidité et de supprimer le scintillement. A partir de là, l'écran reste figé
Application.ScreenUpdating = False
' Les lignes suivantes appliquent les paramètres de tri
With ActiveSheet.Sort
  ' supprime tous les réglages précédents
  .SortFields.Clear
  ' applique le tri sur la zone "Noms" correspondant à la plage E3:E72
  .SortFields.Add Key:=Range("Noms" & dlg), SortOn:=xlSortOnValues, Order:=xlAscending, _
    DataOption:=xlSortNormal
  ' étend la plage de tri jusqu'à la colonne AO (41ème colonne)
  .SetRange Range("Noms").Resize(Range("Noms").Rows.Count, Range("Noms").Columns.Count + dcol)
  ' Indique que la plage de tri ne comporte pas de ligne d'en-tête
  .Header = xlGuess
  ' Indique que le tri ne tient pas compte de la casse des carctères
  .MatchCase = False
  ' Indique que le tri se fera de manière ascendante, du haut vers le bas
  .Orientation = xlTopToBottom
  ' Effectue le tri
  .Apply
End With
' Réactive le rafraîchissement d'écran : à partir de ce moment, le résultat du tri s'affiche
Application.ScreenUpdating = True
End Sub

Cordialement.

SUPER !!!! Merci beaucoup

Rechercher des sujets similaires à "tri automatique repetition ligne debut pages"