Porblème de compatibilité 64 > 32 bits

Bonjour,

J'utilise actuellement la macro suivante pour vérifier la connexion à internet :

Public Declare Function ConnexionInternetDsponible Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Long, ByVal dwReserved As Long) As Long

Public Function InternetDisponible()
' par Excel-Malin.com ( http://excel-malin.com )

On Error GoTo ErreurFonction

'la fonction principale
InternetDisponible = CBool(ConnexionInternetDsponible(0, vbNullString, 512, 0&))

Exit Function

ErreurFonction:
    InternetDisponible = CVErr(xlErrNA)
End Function

Or après avoir tester mon fichier chez un ami je m'aperçois qu'il y a un problème de compatibilité du à cette fonction !

Vers quelle solution puis je me tourner pour contourner le problème et faire en sorte que cette fonction ne ce déclare pas sur version 32 bits et comment vérifier la présence d'une connexion internet sur 32 bits ?

Je suis preneur de toute piste de recherche

Bonne fin de journée à vous !

Bonjour,

Tu peux tester la fonction suivante ...

Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
(ByRef dwflags As Long, ByVal dwReserved As Long) As Long

Public Function InternetDisponible() As Boolean
  InternetDisponible = InternetGetConnectedState(0&, 0&)
End Function

En espérant que cela t'aide ...

Merci beaucoup James j'essaye cela demain sur son ordinateur et te tiens informé

Bonjour,

Pour que l'Api fonctionne en 32/64 bits, ci-dessous les instructions de compilation nécessaires

#If VBA7 Then
    Private Declare PtrSafe Function ConnexionInternetDsponible Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (ByRef lpdwFlags As LongPtr, ByVal lpszConnectionName As String, ByVal dwNameLen As LongPtr, ByVal dwReserved As LongPtr) As LongPtr
#Else
    Public Declare Function ConnexionInternetDsponible Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Long, ByVal dwReserved As Long) As Long
#End If

Bonjour à vous deux,

ça marche au top un grand merci !!!

Savez vous si il y a beaucoup de fonction qui nécessite d'être compilé en cas de 64 ou 32 ? Histoire que je prévois en avance pour la prochaine fois

Toutes les API Windows sont d'origine en 32 bits. Pour les faire fonctionner en 64 bits, il faut ajouter "PtrSafe" et changer le type "Long" en "LongPtr".

Si l'on veut les utiliser en 32 ou 64 bits, il faut alors les instructions de compilation fournies plus haut.

Bonjour,

t'es-tu posé la question pourquoi tu as choisis la 64 bits ?

On ne l'installe que si on est obligé, pas parce que l'OS est 64 bits.

Si tu n'en as pas la nécessité je te conseille fortement de la désinstaller pour mettre la 32 bits.

eric

D'accord c'est donc moi qui suis en 32 et mon amis en 64 et non je n'ai aucune idée de pourquoi lui est comme ça, mais sachant que je veux que mon appli puisse marcher sur tout pc au moins la je suis tkl

Rechercher des sujets similaires à "porbleme compatibilite bits"