Erreur de compilation "incompatibilité de type"

Bonjour à tous,

voilà mon problème, j'ai téléchargé un fichier excel (caisse enregistreuse) en open source. Ce dernier n'étant pas récent (version 32Bits) , j'ai effectué un certain changement (passage en version 64bits), ce qui m'a permis d'avancer un peu.

Mais malheureusement (pour moi) j'ai un problème au lancement, il m'indique une erreur de compilation "incompatibilité de type" voir ci-dessous.

Public Sub StartTimer()
If Val(Application.Version) >= 10 Then
hwndA = Application.hWnd
Else
hwndA = FindWindowA("XLMAIN", Application.Caption)
End If

SetTimer hwndA, TimerID, 1000, AddressOf MonTimer
' hWnd = Le handle de la fenêtre appelante
' TimerID = Contiendra l'ID(identificateur) du Timer
' 1000: intervalle du timer en ms
' AddressOf TimerProc = Envoie l'adresse de la procédure MonTimer

J'ai bien chercher à trouver, mais je n'y arrive pas.

Je vous met en fichier joint le fichier complet.

Je pense qu'il y aura d'autres erreurs

Par avance, merci à tous ceux qui pourrons m'aider.

18copie-de-caisse-1.zip (218.20 Ko)

Bonjour,

Votre passage au 64 bits est incomplet pour les API 32 bits. Les variables de type Long dépassant les 32 bits doivent être déclarées en type LongPtr. C'est le cas pour toutes les variables d'adressage. Ci-dessous les modifications déjà à apporter:

Public Declare PtrSafe Function SetTimer Lib "user32" _
    (ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr

Public Declare PtrSafe Function KillTimer Lib "user32" _
    (ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr) As Long

Private Declare PtrSafe Function FindWindowA Lib "user32" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public TimerID  As LongPtr

Public hwndA As LongPtr

merci, je regarde etvte tiens au courant

Rechercher des sujets similaires à "erreur compilation incompatibilite type"