Bonjour à tous

Je viens de m'appercevoir d'un truc que je n'arrive pas a comprendre

J'ai une sub qui recupere le pointeur d'un arraystring et qui le copie dans un arraystring

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Public Sub PtrUnicodeEnTabloString(PtrUnicode As Long, ByRef TabloARemplir() As String)
 CopyMemory TabloARemplir(), PtrUnicode, 4
End Sub
Cette fonction marche tres bien quand elle est dans la form principale :

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
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination() As String, ByRef source As Long, ByVal Length As Long)
Private Declare Function CreationTabloUnicodeSafeArray Lib "DllPb.dll" () As Long
 
Public Sub PtrUnicodeEnTabloString(PtrUnicode As Long, ByRef TabloARemplir() As String)
 CopyMemory TabloARemplir(), PtrUnicode, 4
End Sub
 
Public Sub Form_Load()
 
 Dim Tablo() As String, PtrSafeArrayDll As Long
 ChDir App.Path
 
 PtrSafeArrayDll = CreationTabloUnicodeSafeArray()
 PtrUnicodeEnTabloString PtrSafeArrayDll, Tablo()
 
 For i = 1 To UBound(Tablo())
  phrase = phrase + StrConv(Tablo(i), vbFromUnicode) + Chr(13)
 Next
 
 MsgBox phrase, vbOKOnly, "Appel VB"
 
End Sub
Mais pas dans un module, quelqu'un sait il pourquoi ????

Je vous remercie et vous souhaite une bonne journée