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