Bonjour à tous,
J'utilise ce code pour remplir le presse-papiers sans le comprendre (je l'ai seulement copié) :
Il fonctionne sans problème sur mon Excel 2016 32 bits - Windows 10 64 bits. J'ai un utilisateur pour lequel la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 'Handle 64-bit and 32-bit Office #If VBA7 Then Declare PtrSafe Function GlobalUnlock Lib "kernel32" (ByVal hMem As LongPtr) As Long Declare PtrSafe Function GlobalLock Lib "kernel32" (ByVal hMem As LongPtr) As Long Declare PtrSafe Function GlobalAlloc Lib "kernel32" (ByVal wFlags As LongPtr, _ ByVal dwBytes As LongPtr) As Long Declare PtrSafe Function CloseClipboard Lib "User32" () As Long Declare PtrSafe Function OpenClipboard Lib "User32" (ByVal hwnd As LongPtr) As Long Declare PtrSafe Function EmptyClipboard Lib "User32" () As Long Declare PtrSafe Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _ ByVal lpString2 As Any) As LongPtr Declare PtrSafe Function SetClipboardData Lib "User32" (ByVal wFormat _ As LongPtr, ByVal hMem As LongPtr) As Long #Else Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _ ByVal dwBytes As Long) As Long Declare Function CloseClipboard Lib "User32" () As Long Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long Declare Function EmptyClipboard Lib "User32" () As Long Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _ ByVal lpString2 As Any) As Long Declare Function SetClipboardData Lib "User32" (ByVal wFormat _ As Long, ByVal hMem As Long) As Long #End If Public Const GHND = &H42 Public Const CF_TEXT = 1 Public Const MAXSIZE = 4096 Function ClipBoard_SetData(MyString As String) 'PURPOSE: API function to copy text to clipboard 'SOURCE: www.msdn.microsoft.com/en-us/library/office/ff192913.aspx Dim hGlobalMemory As Long, lpGlobalMemory As Long Dim hClipMemory As Long, X As Long 'Allocate moveable global memory hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1) 'Lock the block to get a far pointer to this memory. lpGlobalMemory = GlobalLock(hGlobalMemory) 'Copy the string to this global memory. lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString) 'Unlock the memory. If GlobalUnlock(hGlobalMemory) <> 0 Then MsgBox "Could not unlock memory location. Copy aborted." GoTo OutOfHere2 End If 'Open the Clipboard to copy data to. If OpenClipboard(0&) = 0 Then MsgBox "Could not open the Clipboard. Copy aborted." Exit Function End If 'Clear the Clipboard. X = EmptyClipboard() 'Copy the data to the Clipboard. hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory) OutOfHere2: If CloseClipboard() = 0 Then MsgBox "Could not close Clipboard." End If End Function Sub CopyTextToClipboard() 'PURPOSE: Copy a given text to the clipboard (using Windows API) 'SOURCE: www.TheSpreadsheetGuru.com 'NOTES: Must have above API declaration and ClipBoard_SetData function in your code Dim Txt As String 'Put some text inside a string variable Txt = "This was copied to the clipboard using VBA!" 'Place text into the Clipboard ClipBoard_SetData Txt End Sub
renvoie l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)
"Erreur de compilation : Incompatibilité de type".
Merci d'avance à celui qui me dépannera.
Partager