PB version Excel 64 bits

Bonjour à tous,

J'ai réalisé un fichier qui fonctionne sur Excel 32 et 64 bits.

tout va bien sauf ce bout de code qui me permet de lire et d'écrire dans un fichier .ini

il fonctionne en 32 bits mais pas en 64 bits j'ai le message suivant et je ne trouve pas quoi faire.

image

voici le code :

'Les fonction pour Lire et Ecrire dans le fichier INI

Public Declare PtrSafe Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As LongPtr, ByVal lpFileName As String) As LongPtr
Public Declare PtrSafe Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As LongPtr

'pour l'aide
 Declare PtrSafe Function HtmlHelp Lib "HHCtrl.ocx" Alias "HtmlHelpA" (ByVal hwndCaller As LongPtr, ByVal pszFile As String, ByVal uCommand As LongPtr, dwData As Any) As LongPtr
Function LireINI(EnTete As String, Variable As String, Path As String) As String
    Dim Retour As String
    Dim fichier As String
    fichier = Path
    Retour = String(255, Chr(0))
    LireINI = Left$(Retour, GetPrivateProfileString(EnTete, ByVal Variable, "", Retour, Len(Retour), fichier))
    RtnLireIni = LireINI
End Function
Function EcrireINI(EnTete As String, Variable As String, Valeur As String, Path As String) As String
    Dim fichier As String
    Dim writeini
    fichier = Path
    writeini = WritePrivateProfileString(EnTete, Variable, Valeur, fichier)
End Function

quelqu'un aurait il une idée car je n'ai plus que ça à corriger.

Par avance merci pour votre aide et passez une bonne journée.

Daniel

Bonjour Danval

Remplacer les déclarations dans ton code (et supprimer HtmlHelp)

Private Declare PtrSafe Function SetPrivateProfileString Lib "kernel32.dll" _
    Alias "WritePrivateProfileStringA" (ByVal lpSection As String, _
    ByVal lpSetting As String, _
    ByVal lpValue As String, _
    ByVal lpFileName As String) As Long

Private Declare PtrSafe Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
    (ByVal lpSectName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
     ByVal lpRetString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
#Else
Private Declare Function SetPrivateProfileString Lib "kernel32.dll" _
    Alias "WritePrivateProfileStringA" (ByVal lpSection As String, _
    ByVal lpSetting As String, _
    ByVal lpValue As String, _
    ByVal lpFileName As String) As Long

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
    (ByVal lpSectName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
     ByVal lpRetString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

#End If

bon je comprend pas j'ai essayé et tjrs des erreurs.

tu as mis juste une partie du code?

il y a un else et end if et j'ai pas le if.

c'est bon j'ai trouvé

un grand merci

Bonjour,

Votre fonction GetPrivateProfileString est définie en LongPtr

La "Variable" de votre fonction LireINI est définie en String. Il y a bien incompatibilité.

Rechercher des sujets similaires à "version bits"