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 48 49 50
| Option Explicit
'nécessite d'activer référence : "Microsoft Forms 2.0 Object Library"
Dim Copie As Boolean
Dim rngCopie As Range
Dim objData As DataObject
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'ici ton code de copié/collé d'image
If Copie And Not rngCopie Is Nothing Then rngCopie.Copy
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim C As String, i As Long
'intercepte l'action "Coller"
With Application.CommandBars("Standard")
i = .FindControl(ID:=128).Index
C = .Controls(i).List(1)
End With
If C = "Coller" Then ClearPressPapier
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'détecte s'il y a eu un copié de fait
Dim strPP As String
GetPressPapier strPP
If strPP <> "" Then SaveRangeCopie Sh, Selection
End Sub
Private Sub SaveRangeCopie(Wsh As Object, rng As Range)
'enregistre le Range copié
Copie = True
Set rngCopie = Sheets(Wsh.Name).Range(rng.Address)
End Sub
Private Sub GetPressPapier(strPP As String)
'get le contenu du presse-papier
Copie = False
Set objData = New DataObject
objData.GetFromClipboard
strPP = objData.GetText
End Sub
Private Sub ClearPressPapier()
'vide le presse-papier
Set objData = New DataObject
objData.SetText ""
objData.PutInClipboard
End Sub |
Partager