Salut,
Les tempvars ont la durée de vie de l'ouverture de la base il me semble, aussi tu peux tres bien gérer les valeurs avec les
TempVars.Add "Ruban", valeur
et
un bout de code récupéré par ailleurs, qui devrait te permetttre d'avancer, mais que je n'ai pas pris le temps de tester, donc à vérifier :
Côté code du ruban
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Option Explicit
Dim monRub As IRibbonUI
'Callback for customUI.onLoad
Sub ChargerRuban(ribbon As IRibbonUI)
Set monRub = ribbon
TempVars.add "Ruban", ObjPtr(ribbon) 'cette ligne peut poser probleme je pense, car ce n'est pas du vba pur, mais on doit pouvoir trouver l'équivalent
End Sub
Public Sub RefreshRibbon()
If monRub Is Nothing Then
Set monRub = GetRibbon(TempVars!Ruban)
' Else: Do nothing!
End If
On Error Resume Next
monRub.Invalidate
On Error GoTo 0
End Sub |
'partie du getribbon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#If VBA7 Then
Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
#Else
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
#End If
#If VBA7 Then
Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
#Else
Function GetRibbon(ByVal lRibbonPointer As Long) As Object
#End If
Dim objRibbon As Object
Call CopyMemory(objRibbon, lRibbonPointer, LenB(lRibbonPointer))
Set GetRibbon = objRibbon
Set objRibbon = Nothing
End Function |
Partager