Jouxte
XLDnaute Occasionnel
Bonjour à toutes et tous,
J'utilise la macro évènementielle ci-dessous (dont tous les fragments sont récupérés ça et là sur ce forum dont je remercie les contributeurs).
Malheureusement, je n'ai pas réussi à faire pour que :
1) Lors de l'execution de la macro évènementielle en colonne B, la colonne A se copie également.
2) Lors de l'execution de la macro évènementielle en colonne P, le curseur se retrouve sur la ligne de la cellule qui a généré le tri.
Merci par avance pour l'aide que vous pourrez m'apporter.
Macro évènementielle dans la feuille Fichier Clients :
Dim témoin
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'Quand la cellule active de la colonne 2 est validée, copie de la ligne immédiatement au dessus
If Target.Column = 2 And Target.Count = 1 And Target.Row > 3 Then
ActiveSheet.Unprotect
If IsEmpty(Target.Offset(0, 1)) And Not IsEmpty(Target.Offset(-1, 0)) And témoin = False Then
témoin = True
sauv = Target
n = Target.Offset(-1, 0).CurrentRegion.Columns.Count
Target.Offset(-1, 0).Resize(1, n).Copy Target
On Error Resume Next
Target.Resize(1, n).SpecialCells(xlCellTypeConstants, 23).ClearContents
Target = sauv
témoin = False
ActiveSheet.Protect
End If
End If
'Met la cellule active de la colonne 3 en MAJUSCULE
If Target.Column = 3 And Target.Count = 1 Then
Target = UCase(Target)
End If
'Met la cellule active de la colonne 4 en Nom Propre
If Target.Column = 4 And Target.Count = 1 Then
Target = Application.Proper(Target)
End If
'Quand la cellule active de la colonne 16 (date de Naissance) validée = tri sur la cilonne A
If Target.Column = 16 Then
ActiveSheet.Unprotect
[A3:AC1000].Sort key1:=[A2]
ActiveSheet.Protect
End If
'place la cellule active au milieu de l'écran
If ActiveCell.Row > 12 Then
ActiveWindow.ScrollRow = ActiveCell.Row - 12
End If
Application.EnableEvents = True
End Sub
Ci-joint fichier.
J'utilise la macro évènementielle ci-dessous (dont tous les fragments sont récupérés ça et là sur ce forum dont je remercie les contributeurs).
Malheureusement, je n'ai pas réussi à faire pour que :
1) Lors de l'execution de la macro évènementielle en colonne B, la colonne A se copie également.
2) Lors de l'execution de la macro évènementielle en colonne P, le curseur se retrouve sur la ligne de la cellule qui a généré le tri.
Merci par avance pour l'aide que vous pourrez m'apporter.
Macro évènementielle dans la feuille Fichier Clients :
Dim témoin
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'Quand la cellule active de la colonne 2 est validée, copie de la ligne immédiatement au dessus
If Target.Column = 2 And Target.Count = 1 And Target.Row > 3 Then
ActiveSheet.Unprotect
If IsEmpty(Target.Offset(0, 1)) And Not IsEmpty(Target.Offset(-1, 0)) And témoin = False Then
témoin = True
sauv = Target
n = Target.Offset(-1, 0).CurrentRegion.Columns.Count
Target.Offset(-1, 0).Resize(1, n).Copy Target
On Error Resume Next
Target.Resize(1, n).SpecialCells(xlCellTypeConstants, 23).ClearContents
Target = sauv
témoin = False
ActiveSheet.Protect
End If
End If
'Met la cellule active de la colonne 3 en MAJUSCULE
If Target.Column = 3 And Target.Count = 1 Then
Target = UCase(Target)
End If
'Met la cellule active de la colonne 4 en Nom Propre
If Target.Column = 4 And Target.Count = 1 Then
Target = Application.Proper(Target)
End If
'Quand la cellule active de la colonne 16 (date de Naissance) validée = tri sur la cilonne A
If Target.Column = 16 Then
ActiveSheet.Unprotect
[A3:AC1000].Sort key1:=[A2]
ActiveSheet.Protect
End If
'place la cellule active au milieu de l'écran
If ActiveCell.Row > 12 Then
ActiveWindow.ScrollRow = ActiveCell.Row - 12
End If
Application.EnableEvents = True
End Sub
Ci-joint fichier.