IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

conversion code 32 bite vers 64 bite


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut conversion code 32 bite vers 64 bite
    bonjour a tous

    SVP je veut convertir les déclarations ci-dessous 32 bite vers la version 64 bite ( ces declaration sont utilisées pour mettre un UserForm en plein écran)

    Ce matin , en installant mon appli sur un nouveau PC , j'ai reçu le message "erreur de compilation dans le module caché : UserForm1 ......"


    le code utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'declaration pour userform en plein ecran
    Private Declare Function FindWindowA& Lib "user32" (ByVal lpClassName$, ByVal lpWindowName$)
    Private Declare Function GetWindowLongA& Lib "user32" (ByVal hWnd&, ByVal nIndex&)
    Private Declare Function SetWindowLongA& Lib "user32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
    Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Private Const GWL_STYLE As Long = -16
    Private Const WS_MINIMIZEBOX = &H20000
    Private Const WS_MAXIMIZEBOX = &H10000
    Private Const WS_FULLSIZING = &H70000
    Private HANDLE
    Dim Lg As Single
    Dim Ht As Single
    Dim Fini As Boolean
    merci d'avance

  2. #2
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    Salut
    Il me semble
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Declare PtrSafe Function FindWindowA& Lib "user32" (ByVal lpClassName$, ByVal lpWindowName$)
    Private Declare PtrSafe Function GetWindowLongA& Lib "user32" (ByVal hWnd&, ByVal nIndex&)
    Private Declare PtrSafe Function SetWindowLongA& Lib "user32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
    Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    ...

  3. #3
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    bonsoir
    merci de m'avoir rependu , en faite c'est plus compliqué que je croie , donc , et afin d’éviter des surprises , l'installation de la version 32bits et la solution qui me parait sécurisante

    Encor merci

  4. #4
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    dans la foulée : As Long en 32 bits ==> As LongPtr en 64 bits , si non ça va planté

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Intéresses toi au directives de compilations

    https://docs.microsoft.com/fr-fr/off...else-directive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #If Mac Then 
     '. Place exclusively Mac statements here. 
     '. 
     '. 
    ' Otherwise, if it is a 32-bit Windows program, do this: 
    #ElseIf Win32 Then 
     '. Place exclusively 32-bit Windows statements here. 
     '. 
     '. 
    ' Otherwise, if it is neither, do this: 
    #Else 
     '. Place other platform statements here. 
     '. 
     '. 
    #End If

  6. #6
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    bonsoir

    oui merci c'est bien noté
    cdt

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    a vérifier si je me suis pas trompé
    sinon l'ensemble devrait fonctionner sur toute version Windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #If WIN64 Then
        #If VBA7 Then
            Private Declare PtrSafe Function SetWindowLongPtrA Lib "USER32"(ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Longlong) As LongPtr
            Private Declare PtrSafe Function FindWindowA Lib "USER32"  (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
            Private Declare PtrSafe Function GetWindowLongA Lib "user32"  ( ByVal hwnd As LongPtr,ByVal nIndex As Longlong) As LongPtr
            Private Declare PtrSafe Function ShowWindow Lib "user32" Alias "ShowWindow" ( ByVal hwnd As LongPtr,  ByVal nCmdShow As Longlong) As Longlong
        #Else
            Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
            Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
            Private Declare Function GetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
            Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
        #End If
    #Else
        Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
        Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
        Private Declare Function GetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
        Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    #End If
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Par défaut
    Les declarations correctes pour que ca fonctionne dans toutes les versions Windows est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Explicit
     
     
    #If VBA7 Then
        #If Win64 Then
            Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
            Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
        #Else
            Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
            Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPtr
        #End If
     
        Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
        Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long
     
    #Else
            Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
            Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
            Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
            Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    #End If
    Faut tenir en compte que, dans le code, les variables contenant des pointeurs et des handles doivent elles aussi etre codés de la meme facon (cad compilation conditionelle), sinon ca ne fonctionnera pas !! .

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    @RAFAAJ2000

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #If VBA7 Then
        #If Win64 Then
    il est plus rare de trouver vba7 dans des 32 que du vba 6 dans un system64 avec un office 32

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #If Win64 Then
    #If VBA7 Then
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [WD14] Conversion code VB6 vers Windev14
    Par antasalam dans le forum WinDev
    Réponses: 1
    Dernier message: 07/10/2011, 08h13
  2. conversion code asp vers php 5
    Par baderahmed dans le forum Langage
    Réponses: 2
    Dernier message: 19/01/2011, 15h11
  3. Conversion code VB6 vers VB.NET
    Par dakota77 dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/06/2008, 23h14
  4. [VB2005] conversion d'une ligne de code de C# > vers VB2005
    Par DonJR dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/07/2006, 23h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo