1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Option Explicit
Dim sAgtOld As String
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sAgt As String, kR As Long, kC As Long
sAgt = Target.Value
kR = Target.Row
kC = Target.Column
If sAgtOld = "" Then
'--- cellule était vide, rien à faire
Else
Effacer sAgtOld, kR, kC '--- efface ancienne affectation
End If
If sAgt <> "" Then
If Evaluate("ISREF(" & sAgt & "!A1)") = False Then
MsgBox "Pas encore d'onglet '" & sAgt & "' créé!", , "Pour info"
Target.Value = "" '--- annule agent sélectionné
Else
Copier sAgt, kR, kC '--- copie affectation
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sAgtOld = Target.Value
End Sub
Private Sub Effacer(sAgt As String, kR As Long, kC As Long)
With ActiveWorkbook.Worksheets(sAgt)
'--- vider les données aux mêmes places, sauf la date
.Cells(kR, kC) = "" '--- agent
.Cells(kR, kC + 1) = "" '--- heure début
.Cells(kR, kC + 2) = "" '--- heure fin
.Cells(kR, kC + 3) = "" '--- total
End With
End Sub
Private Sub Copier(sAgt As String, kR As Long, kC As Long)
With ActiveWorkbook.Worksheets(sAgt)
'--- recopie les données aux mêmes places
.Cells(kR, 1) = Cells(kR, 1).Value '--- date
.Cells(kR, kC) = Cells(kR, kC).Value '--- agent
.Cells(kR, kC + 1) = Cells(kR, kC + 1).Value '--- heure début
.Cells(kR, kC + 2) = Cells(kR, kC + 2).Value '--- heure fin
.Cells(kR, kC + 3) = Cells(kR, kC + 3).Value '--- total
End With
End Sub |
Partager