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 :

Problème d'adaptation de code pour Excel 64 bits


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 675
    Points : 952
    Points
    952
    Par défaut Problème d'adaptation de code pour Excel 64 bits
    Bonsoir à tous

    J'ai télécharger une mini application qui me permettait de fusionner des fichiers excel : http://excel.developpez.com/telechar...t-d-un-dossier.

    Cette application marche sur mon poste (Excel 32 bits).

    J'ai voulu l’essayer sur un autre poste et je me suis rendu compte que c'est excel une version de 64 bit.
    et j'ai une erreur qui est indiquée au niveau de ce code : (malheureusement j'ai pas pu copier le code erreur, la machine a été déplacé !)

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    Private Declare Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
    Private Declare Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _(ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long

    Je me demandais (novice en VBA !) si il n'y avait pas un moyen de l'adapter en fonction de la version d'excel ?

    Merci à tous

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Regarde celui-là (du même auteur)

    Tu devrais retrouver la modification pour 64 bits avec la constante de compilation qui va avec.

    Si tu veux garder la compatibilité des deux versions, remplace la section des déclarations d'API de ton classeur téléchargé par celle-ci.

    Sinon, tu fais juste ajouter les PTRSAFE à la bonne place.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if VBA7 then '64 bits/32 bits
       Declare PtrSafe Sub MessageBeep Lib "User32" (ByVal N AS Long)
    #else
       Declare Sub MessageBeep Lib "User32" (ByVal N AS Long)
    #end if

  4. #4
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 675
    Points : 952
    Points
    952
    Par défaut
    Merci beaucoup pour toutes ces informations. Je vais essayer avec mon petit bagage en VBA et vous revenir bientôt

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à lire : Développer avec Office 64 bits

    D'autant plus que même Microsoft déconseille l'installation d'une version 64 bits d'Office.

    Office 32 bits est recommandé pour la plupart des utilisateurs
    Nous recommandons la version 32 bits d’Office pour la plupart des utilisateurs, car elle offre une plus grande compatibilité avec la plupart des autres applications, en particulier les compléments tiers. C’est la raison pour laquelle la version 32 bits d’Office 2013 est installée par défaut, même sur les systèmes d’exploitation Windows 64 bits. Sur ces systèmes, le client Office 32 bits est pris en charge en tant qu’installation Windows-32-on-Windows-64 (WOW64). WOW64 est l’émulateur x86 qui permet l’exécution de façon transparente des applications Windows 32 bits sur les systèmes Windows 64 bits. Cela permet aux utilisateurs de continuer à utiliser les contrôles ActiveX et les compléments COM Microsoft avec la version 32 bits d’Office.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 675
    Points : 952
    Points
    952
    Par défaut
    Bonjour a tous

    Voici les changements que j'ai fait dans le code (je sais pas trop si c'est bon, je cherche une machine avec la version 64 bits pour le tester !). en tout cas en 32 bit ça marche.

    Code vba : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Option Explicit
     
    #If Win64 Then
          Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
          Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
        Public Declare PtrSafe Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
        Public Declare PtrSafe Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean
    #Else
          Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
          Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
          Public Declare Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
          Public Declare Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean
    #End If
     
    **///////////////////////////////**
     
    Option Explicit
     
    #If Win64 Then
        Public Declare PtrSafe Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
        Public Declare PtrSafe Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean
        Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
            (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
    #Else
        Public Declare Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
        Public Declare Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean
        Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
            (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
    #End If

    Merci de m'indiquer s'il y a des corrections à faire.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/06/2015, 12h55
  2. Réponses: 2
    Dernier message: 28/05/2015, 16h15
  3. [XL-2007] Modification code pour Excel en Plein Ecran
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/12/2013, 10h39
  4. Réponses: 7
    Dernier message: 07/03/2011, 15h37
  5. Adaptation de code pour ouverture de formulaire
    Par Homer091 dans le forum IHM
    Réponses: 4
    Dernier message: 25/04/2008, 12h08

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