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és à gérer pour le passage d'EXCEL 2016 en M365


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 216
    Par défaut Compatibilités à gérer pour le passage d'EXCEL 2016 en M365
    Bonjour à tous.

    Mon entreprise va passer d'OFFICE 2016 (32b) à M365 (64b) et je me pose la question des compatibilités à gérer entre ces 2 versions.
    Je vais devoir certainement recoder des applications qui ne seront plus complétement fonctionnelles.
    Avez-vous des conseils à me donner ?

    Coté compatibilité 32b/64b : à priori, le mot clé PtrSafe permet de contourner un certain nombre de blocages (cf. lien ci-dessous)
    https://learn.microsoft.com/fr-fr/of...ions-of-office
    Je n'ai pas trouvé beaucoup de discussion autour de ce sujet : avez-vous des conseils à me donner ?

    Coté compatibilité contrôles UF : je pense que le fameux Microsoft Date Time Picker va me poser problème
    J'ai trouvé la discussion ci-dessous avec la solution proposée par patricktoulon qui me semble bien mais qui date un peu :
    https://www.developpez.net/forums/d1...excel-64-bits/
    Est-ce qu'il existe une solution plus récente ou est-ce toujours une/la solution conseillée ?

    Coté CUSTOM UI : existe t'il des points bloquants ?

    D'avance merci pour vos retours sur ces différents sujets !

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 173
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Pour la partie là :
    Coté compatibilité 32b/64b : à priori, le mot clé PtrSafe permet de contourner un certain nombre de blocages (cf. lien ci-dessous)
    https://learn.microsoft.com/fr-fr/of...ions-of-office
    Je n'ai pas trouvé beaucoup de discussion autour de ce sujet : avez-vous des conseils à me donner ?
    Juste bien comprendre qu'il ne suffit pas d'ajouter un PtrSafe mais également parfois changer le type de variables Long en LongLong ou LongPtr, et qu'il est fortement déconseillé de le faire au hasard

    Donc l'idéal est de trouver l'écriture 64bits correspondante dans des sources "fiables"
    un lien qui pourrait servir :
    https://jkp-ads.com/articles/apideclarations.aspx

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 216
    Par défaut
    Merci tototiti2008 !
    Je vais faire la liste des déclarations dans mon code et vérifier la gestion des types long à utiliser.
    J'avoue que j'étais parti pour modifier tous les types long en LongPtr comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     #If VBA7 or Win64 Then
          Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef destination As Any, ByRef source As Any, ByVal length As LongPtr)
     #Else
          Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef destination As Any, ByRef source As Any, ByVal length As Long)
     #End If

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 173
    Billets dans le blog
    2
    Par défaut
    Re,

    Surtout ne pas me demander pourquoi, je ne comprend pas grand chose au détail de tout ça, je sais juste qu'il ne faut pas faire n'importe quoi

  5. #5
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 024
    Par défaut
    Bonjour,

    Microsoft a publié une liste de 1 500 API en 64 bits.
    Fichier Texte à télécharger ici : https://www.microsoft.com/en-us/down...s.aspx?id=9970

    Cordialement.

  6. #6
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 173
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Merci
    pour info, une fois installé les fichiers se placent dans
    C:\Office 2010 Developer Resources\Documents

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 216
    Par défaut
    Bonjour,

    Merci pour cette info.

  8. #8
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 173
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Pour les autres points
    Coté CUSTOM UI : existe t'il des points bloquants ?
    Il me semble que les outils de personnalisation du ruban (si on parle bien de ça) n'ont pas beaucoup évolué dans les dernières versions d'Excel, mais je ne suis pas spécialiste, la doc que j'avais cherché récemment semblait dater de quelques années donc je pense qu'il ne devrait pas y avoir trop d'évolution entre Excel 2016 et 365

    Coté compatibilité contrôles UF : je pense que le fameux Microsoft Date Time Picker va me poser problème
    C'est la partie que je maîtrise le moins, les fameux contrôles Date qui posent tant de problème...

  9. #9
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 173
    Billets dans le blog
    2
    Par défaut
    Re

    Pour le calendrier j'avais fait ça mais certains ont fait beaucoup mieux, si ça peut donner une idée
    Fichiers attachés Fichiers attachés

  10. #10
    Membre chevronné
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 216
    Par défaut
    Bonjour tototiti2008,

    Merci pour tes retours.

    J'ai pu avoir un poste en M365 pour tester et avancer sur une version fonctionnelle.
    La reprise des déclarations solutionnent pratiquement tous les problèmes.

    Coté CUSTOM UI, pas beaucoup d'évolution effectivement pour passage en M365.
    Il n'y a que le passage en WIN11 qui semble poser problème.
    J'ai trouvé une nouvelle application "Office RibbonX Editor" qui semble compatible et que je testerai lors du passage de mon PC en W1.
    Site : https://github.com/fernandreu/office...ditor/releases
    Sinon, j'ai uniquement eu un problème avec la mémorisation du pointeur du ruban que j'enregistre à l'ouverture : l'ajout de PtrSafe a corrigé le problème dans la déclaration de CopyMemory.

    Pour le contrôle date, j'ai également trouvé une version libre (plusieurs sont disponibles) que j'ai adapté pour mon usage.
    C'est quand même abusé que ce contrôle ne soit pas maintenu ou de ne pas avoir de contrôle équivalent...

    Cordialement.

  11. #11
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 508
    Par défaut
    Bonjour à tous,
    Sinon, j'ai uniquement eu un problème avec la mémorisation du pointeur du ruban que j'enregistre à l'ouverture : l'ajout de PtrSafe a corrigé le problème dans la déclaration de CopyMemory.
    Pour ma part j'utilise ce code sous 365 Windows 10 et 11 et pas de problème.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    '@Folder "Ribbon"
    '@Description "Callbacks for ribbon management."
    Option Explicit
     
    Private mUIRibbon As Office.IRibbonUI
     
    #If VBA7 Then
        Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, _
                                                                                         ByRef Source As Any, _
                                                                                         ByVal Length As Long)
    #Else
        Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, _
                                                                                 ByRef Source As Any, _
                                                                                 ByVal Length As Long)
    #End If
     
    #If VBA7 Then
        Private Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
    #Else
        Private Function GetRibbon(ByVal lRibbonPointer As Long) As Object
    #End If
        Dim RibbonTemp As Object
        CopyMemory RibbonTemp, lRibbonPointer, LenB(lRibbonPointer)
        Set GetRibbon = RibbonTemp
        Set RibbonTemp = Nothing
    End Function
     
    '@Description "Définit la procédure VBA qui doit être déclenchée lors du chargement du ruban."
    Public Sub OnRibbonLoad(ribbon As IRibbonUI)
        Set mUIRibbon = ribbon
        mUIRibbon.ActivateTab "tab0"
        ' // Save the Ribbon Handle
        sys_Settings.Range("sysvr_RibbonHandle").Value = CStr(ObjPtr(mUIRibbon))
     
    End Sub
     
    '@Description "Recovers the ribbon if lost."
    Sub RefreshRibbon(Optional ByVal ControlID As String = vbNullString)
        If mUIRibbon Is Nothing Then
            #If VBA7 Then
                Set mUIRibbon = GetRibbon(CLngPtr(sys_Settings.Range("sysvr_RibbonHandle").Value))
            #Else
                Set mUIRibbon = GetRibbon(CLng(sys_Settings.Range("sysvr_RibbonHandle").Value))
            #End If
            If ControlID = vbNullString Then
                mUIRibbon.Invalidate
            Else
                mUIRibbon.InvalidateControl ControlID
            End If
        Else
            If ControlID = vbNullString Then
                mUIRibbon.Invalidate
            Else
                mUIRibbon.InvalidateControl ControlID
            End If
        End If
    End Sub
    Concernant la création et l’édition du ruban après plusieurs tests sur diverses applications mon choix c'est porté sur le Programme de Thierry GASPERMENT Je le trouve pratique stable et bien abbouti.
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

Discussions similaires

  1. Calendrier pour plusieurs textbox vba excel 2016 et affichage de l'heure
    Par chermoun dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/11/2017, 06h11
  2. Réponses: 9
    Dernier message: 26/08/2016, 09h13
  3. compatibilité excel 2016 64 Bits - 2010 32 Bits Méthode ADO
    Par monhermes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2016, 10h48
  4. Réponses: 2
    Dernier message: 09/05/2016, 17h57
  5. [XL-2003] Compatibilité d'une session à une autre pour une macro sous Excel
    Par lisedauban dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/09/2013, 20h03

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