XL 2016 Modification code pour compatibilité 32 64 bit VBA7

treza88

XLDnaute Occasionnel
Bonjour a tous,

J'essaie de modifier mon code pour le rendre compatible en 32 et 64 bit sous VBA7

Quand j'ai essayé d'ouvrir mon code qui fonctionne normalement en 32 bit dans un univers 64 bit, ces ligne sont passé en rouge, j'ai donc ajouté un PtrSafe sur ces lignes.

VB:
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function SetCursorPos Lib "user32" ( _
                         ByVal x As Long, ByVal y As Long) As Long

Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Any) As Long    'API pour rechercher le handle d'une fenetre
Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long    'API pour envoyer une commande a une fenetre avec son Handle
Public Const WM_CLOSE = &H10
Public ind As Integer
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Mais c'est certainement insuffisant car j'ai des erreurs de type "Projet ou bibliothèque introuvable" sur des lignes de code simple.
Du type suivant:

Sur Left apparemment et dans un autre module que celui ou j'ai ajouté les PtrSafe:

VB:
If toto = True Then
        'OK button

        ThisWorkbook.SaveAs toto
        Dim dosfinal As String
        Dim toto2 As String
        dosfinal = Dir(ActiveWorkbook.Path, vbDirectory)
        toto2 = Left(toto, Len(toto) - 4)
        dosfinal = toto2 & " " & dosfinal
        ThisWorkbook.SaveAs dosfinal
        Kill (toto)
    Else
        'Annuler
        Exit Sub
    End If

Et par exemple sur Chr dans la function suivante:

VB:
Public Function NumCol2Lettre(ByVal pNombre As Long) As String

    Dim lDiv As Long, lReste As Long
    Do
        lDiv = pNombre \ 26
        lReste = pNombre Mod 26
        ' on commence la numérotation à 1 pour A
        ' donc si 0 => Z
        If lReste = 0 Then
            lReste = 26
            lDiv = lDiv - 1
        End If
        ' ajout de la lettre qui correspond au reste de la division par 26
        NumCol2Lettre = Chr(64 + lReste) & NumCol2Lettre
        ' on continue avec le résultat de la division
        pNombre = lDiv
        ' dernière lettre
        If pNombre <= 26 Then
            If pNombre > 0 Then NumCol2Lettre = Chr(64 + pNombre) & NumCol2Lettre
            Exit Do
        End If
    Loop


End Function

Et il doit en avoir bien d'autre.

J'ai bien lu des tutos sur ce type de modification mais je suis un peu perdu surtout qu'il y a des "Long" apparemment a passer en "LongPtr" et certaines autres choses de ce type, mais là je dois bien avouer que je nage la brasse coulée et quand je dis coulée c'est bien profond.
Donc un peu d'aide ne serait pas de refus.
Merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 049
Membres
101 882
dernier inscrit
XaK_