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 :

Compatibilité Excel 2010 Win32 et Excel 2021 Win64


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Compatibilité Excel 2010 Win32 et Excel 2021 Win64
    Pour rendre mon fichier Excel 2010 en 32 bits compatible avec Excel 64 bits, on me dit de faire ce qui suit :

    En tête de mon module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #If Win64 Then
      Declare ptrSafe sub MaProcédure Lib "User" ()
    #End If
    Dans mon module, il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaProcédure ()
      Mon code...
    End sub
    Je reçois alors le message d'erreur suivant :
    Nom ambigü
    et le pointeur VBE se positionne sur MaProcédure.

    Comment dois-je écrire mon code de déclaration (Declare) pour éviter cette erreur ?

    Merci de m'aider

    VBAFan

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Hello,

    !Heu c'est bizarre parce que ta procédure MaProcédure se trouvent dans tes macros et pas dans la Dll User. Où as-tu vu qu'il fallait faire cela ?

    Les Lignes avec Declare servent quand on utilise des fonctions dans des dll externes.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Declare et PtrSafe
    Bonjour jurrassic pork,

    D'abord, merci de me répondre.
    J'ai développé une application (plus de 10 000 lignes de codes VBA et un poids de 3,85 Mo) avec Excel 2010 installé en 32 bits (c'était la recommandation de Microsoft à l'époque).
    Plusieurs de mes clients sont passés à la version 64 bits d'Excel et mon application fonctionne extrêmement lentement avec cette version, si elle est utilisée sans modification. En 32 bits, elle fonctionne normalement et rapidement.
    J'en ai donc déduit que la solution à ce problème en était une de plateforme (32 et 64 bits).
    L'info que je puise chez Microsoft me dit de déclarer mes procédures PtrSafe (c'est ce que j'en comprends).
    Voici la source :
    https://docs.microsoft.com/en-us/off...tions-overview

    J'ai peut-être mal interprété cette info, ou j'ai mal introduit mon code.
    Je n'utilise pas de variable Long. J'utilise des « Integer » des « Double », des « Single », etc.
    J'ai compris aussi que si je devais utiliser des variables de type Long, il faudrait les transformer en LongPtr, pour qu'elles puissent être retransformées en LongLong dans un environnement 64 bits, mais ce n’est pas le cas.

    Alors, comment dois-je procéder pour que mon application fonctionne à la fois en 32 et en 64 bits ?
    Je vous serais reconnaissant de me donner des exemples précis, car je ne suis pas familier, comme vous l'avez constaté, avec la manipulation de DLL externes.

    Merci de garder de l'intérêt à cette discussion.

    VBA Fan

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Heu c'est bizarre parce que ta procédure MaProcédure se trouvent dans tes macros et pas dans la Dll User
    Je suis du même avis que J.P.

    Je vous conseille la lecture de ce tutoriel Développer avec Office 64 bits
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Declare PtrSafe
    Merci de votre aide.

    Je vais suivre votre conseil.

    Bonne journée !

    VBA Fan

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,

    Citation Envoyé par VBA Fan Voir le message
    Plusieurs de mes clients sont passés à la version 64 bits d'Excel et mon application fonctionne extrêmement lentement avec cette version, si elle est utilisée sans modification. En 32 bits, elle fonctionne normalement et rapidement.
    Si l'appli compile et fonctionne en 64bits, il n'est alors pas question de déclaration externe.
    Seule les instructions de type "declare" sont à adapter pour un passage en 64bits.

    Qu'est-ce qui est lent ?
    Lancement, Affichage, Calculs....? Sur un formulaire particulier ?

Discussions similaires

  1. Compatibilité excel 2003 / 2010
    Par artheos dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/11/2012, 11h34
  2. [XL-2010] Problème compatibilité excel 2003-2010
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2012, 16h32
  3. Compatibilité Excel 2003 - outlook 2010
    Par fleur57 dans le forum Outlook
    Réponses: 1
    Dernier message: 29/08/2012, 23h05
  4. [XL-2010] Compatibilité excel 2010-2003
    Par benben1801 dans le forum Excel
    Réponses: 5
    Dernier message: 15/03/2012, 14h44
  5. [XL-2010] Problème de compatibilité Excel 2010 lu sous 2007
    Par Sibuxian dans le forum Excel
    Réponses: 0
    Dernier message: 18/09/2011, 01h34

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