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 :

récupération de l'object ribbon en cas de bug dans les macros


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 58
    Points : 95
    Points
    95
    Par défaut récupération de l'object ribbon en cas de bug dans les macros
    Bonjour à tous
    j'ai un petit soucis avec un code de récupération de l'object ruban
    le code me fait planter excel
    je joins un fichier excel exemple au cas ou
    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
    Option Explicit
     
    #If Mac Then
        Private Declare PtrSafe Function CopyMemory_byVar Lib "libc.dylib" Alias "memmove" (ByRef dest As Any, ByRef src As Any, ByVal size As Long) As LongPtr
        Dim lRibbonPointer As LongPtr
    #Else
        #If VBA7 Then
            Public Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef dest As Any, ByVal src As LongPtr, ByVal size As LongPtr)
            Dim lRibbonPointer As LongPtr
        #Else
            Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef dest As Any, ByVal src As Long, ByVal size As Long)
            Dim lRibbonPointer As Long
        #End If
    #End If
     
    #If VBA7 Then
    Function GetRibbon(ByVal lRibbonPointer As LongPtr) As IRibbonUI
    #Else
    Function GetRibbon(ByVal lRibbonPointer As Long) As IRibbonUI
    #End If
        Dim objRibbon As IRibbonUI
        If lRibbonPointer <> 0 Then
            #If Mac Then
                CopyMemory_byVar objRibbon, lRibbonPointer, LenB(lRibbonPointer)
            #Else
                CopyMemory objRibbon, lRibbonPointer, LenB(lRibbonPointer)
            #End If
        End If
        Set GetRibbon = objRibbon
    End Function
     
     
    Sub SafeRibbon()
        On Error GoTo ErrorHandler
        MsgBox "Tentative de récupération du ruban"
        lRibbonPointer = ThisWorkbook.Sheets(1).Range("a2").Value
        Set myRibbon = GetRibbon(lRibbonPointer)
        If Not myRibbon Is Nothing Then
            myRibbon.Invalidate
        Else
            MsgBox "Erreur : impossible de récupérer l'objet Ribbon."
        End If
        Exit Sub
     
    ErrorHandler:
        MsgBox "Erreur : " & Err.Description
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/02/2007, 22h38
  2. Inclusion d'un diagramme de cas d'utilisation dans un document LaTeX
    Par noussaENSI dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 14
    Dernier message: 15/08/2006, 22h03
  3. [vb.net] fermer l'application en cas de bug
    Par arnolem dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/06/2005, 15h48

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