Compatibilité Office 2016/2021

Mistral_13200 Messages postés 636 Date d'inscription   Statut Membre Dernière intervention   -  
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour à tous,

Dernièrement j’ai acheté Office Pro 2021 en 64 bits.Hier j’ai réouvert une base Access créé, l’année dernière avec Office 2016. Dès l’ouverture je suis en défaut sur les lignes de code suivante :


'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                   "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Je suppose qu’il s’agit d’un problème de compatibilité 32/64 bits entre les deux versions.

Comment faire pour régler le problème.

Merci d’avance pour votre aide.

Mistral


Windows / Edge 130.0.0.0

A voir également:

4 réponses

Panth33ra Messages postés 21926 Date d'inscription   Statut Membre Dernière intervention   Ambassadeur 1 995
 
0
luckydu43 Messages postés 4259 Date d'inscription   Statut Membre Dernière intervention   1 057
 

Bonjour,

Vous avez bien identifié la cause, il manque le mot-clé PtrSafe une fois en VBA7.

Private Declare PtrSafe Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As LongPtr

Notez que j'ai utilisé un LongPtr.

Si ça pète plus loin dans votre code, la compatibilité doit aussi être adaptée sur les handle (marqueurs) et descripteurs en remplaçant le type par LongPtr, un exemple :

Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As LongPtr
    hInstance As LongPtr
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    Flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As LongPtr
    lpfnHook As LongPtr
    lpTemplateName As String
End Type

Tenez au jus !


0
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 

Bonjour,

Pourquoi utiliser du VBA, alors que Power Query peut très bien le faire, tout seul.

Et en plus, on peut transformer, modifier, travailler avant l'import dans Excel...

Surtout avec 2021.

Bonne journée


0
luckydu43 Messages postés 4259 Date d'inscription   Statut Membre Dernière intervention   1 057
 

Bonjour,

Question de courbe d'apprentissage, tout réapprendre demande du temps. 

Tant que le VBA reste bien exploité par la suite Office, d'autant que ce langage évolue, je ne vois moi-même pas de raison de réapprendre pour tout réécrire certainement moins bien dans l'immédiat

Et si c'est effectivement un sujet, pour garantir une bonne transition il convient de garder exécutables les précédents scripts !

0
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361 > luckydu43 Messages postés 4259 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour,

A plus de 60 ans, je n'ai pas hésité, et j'ai tout appris, le code M n'ayant rien à voir avec le VBA (que j'utilisais depuis près de 30 ans).

Je trouve (mais cela n'est qu'un avis personnel) que PQ offre plus de souplesse et surtout de robustesse, notamment pour ce type de besoin.

Mais surtout, l'utilisateur est vraiment libre de ses choix. S'il désire opter pour cette option, il trouvera toute l'aide qu'il souhaite.

Bonne soirée

0
Mistral_13200 Messages postés 636 Date d'inscription   Statut Membre Dernière intervention   4
 

Merci à tous pour vos réponses.

Je regarde ça et je reviens vers vous si besoin.

Cordialement.

Mistral

0