Faire cohabiter du code VBA 32 bits et 64 bits

Ces articles pourraient également vous intéresser...

5 réponses

  1. Philippe dit :

    Bonjour,
    je suis d’accord avec les solutions que vous proposez.
    Cependant, cela ne fonctionne pas avec Gdiplus.dll
    Auriez vous une idée ?

    Par avance, merci de vos réponses.

  2. Didier Granier dit :

    Bonjour Monsieur Inisan,
    Effectivement ce sera mieux

  3. Hervé Inisan dit :

    Didier Granier > Effectivement, ça marche comme ça. Mais je mettrais plutôt toute la procédure ShellExec entière dans le #If / #End If. Le fait de déplacer uniquement la variable dans ce bloc la transforme en variable globale, ce qui n’est pas utile ici.

    Ouala !

  4. Didier Granier dit :

    Merci pour cet article

    Je viens de faire le test et il faut rajouter la déclaration de la variable lngRes dans les déclaration des API Windows pour que cela fonctionne avec la Procédure Function ShellExec(…).
    Il faut également supprimer la ligne
    Dim lngRes as Long
    dans la Procédure Function ShellExec(…).

    ‘ — DECLARATION API WINDOWS
    #If VBA7 Then
    Private Declare PtrSafe Function ShellExecute _
    Lib “shell32.dll” _
    Alias “ShellExecuteA” ( _
    ByVal hwnd As LongPtr, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) _
    As LongPtr

    Dim lngRes As LongPtr

    #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

    Dim lngRes As Long

    #End If

    ‘ —
    ‘ OUVRIR/IMPRIMER UN DOCUMENT A PARTIR DE SON CHEMIN
    ‘ —
    ‘ Entrée : strFichier <- Nom du fichier à ouvrir/imprimer.
    ‘ strOperation <- Opération sur le fichier.
    ‘ explore, find, open, print
    ‘ strParametres <- Paramètres à transmettre au programme,
    ‘ lorsque strFichier est un .exe.
    ‘ strDossier <- Dossier d’exécution par défaut (pour un .exe).
    ‘ awsAffichage <- Mode d’affichage de la fenêtre.

    Public Function ShellExec( _
    ByVal STRfichier As String, _
    Optional ByVal strOperation As String = “Open”, _
    Optional ByVal awsAffichage As VbAppWinStyle = VbAppWinStyle.vbNormalFocus, _
    Optional ByVal strParametres As String = “”, _
    Optional ByVal STRdossier As String = “”) _
    As Boolean

    ‘ Dim lngRes As Long
    lngRes = ShellExecute(Access.hWndAccessApp, strOperation, _
    STRfichier, strParametres, STRdossier, awsAffichage)

    ShellExec = (lngRes < 0) Or (lngRes > 32)
    End Function

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">