Adapter macro "Declare PtrSafe"

Bonjour,

Je voudrais adapter une "vieille" macro créée en Excel 2006 vers excel 2021.

J'ai un message d'erreur auquel je ne comprends rien :

C'est dans une macro :

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
capture d ecran 2025 02 07 171046

Merci de vos lumières

bonjour,

ajoute PtrSafe entre "Declare" et "Function". Je pense que pour cette fonction, il n'y a pas eu de changement de paramètres.

Bonjour à tous,

Exactement ce qu'indique H2so4, et pour garder la rétrocompatibilité, tu peux utiliser la déclaration suivante (s'adapte automatiquement à 32/64 bits)

#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Merci pour vos promptes réponses.

J'avais mal cherché dans mon DD, j'ai retrouvé les macros déjà adaptés à 64bits, avec PtrSafe comme recommandé par H2so4

Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Désolé pour le bruit.

Rechercher des sujets similaires à "adapter macro declare ptrsafe"