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.
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:
Et par exemple sur Chr dans la function suivante:
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
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