iwonder
08-09-2023, 01:48 AM
Bonjour,
Le projet qui m'amène ici est un modèle .dotm qui sera chargé par l'utilisateur en tant que modèle global
C'est un customUI contenant :
- 10 boutons de macros
- 1 bouton, ouvrant "MonFormulaire" (défini par onAction dans le xml), qui déclecnche "Sub Code1_OuvreFormulaire(control As IRibbonControl)"
Le formulaire contient :
- 10 CheckBox (1 à 10), chacun devant permettre à l'utilisateur de choisir les boutons de macros qu'il souhaite afficher (un souci ultérieur sera de mémoriser ses choix, mais je n'en suis pas là...)
- 1 bouton OKButton_Click pour valider les choix, et fermer le formulaire.
Comme je ne suis pas développeur, j'ai fait appel à... j'ai un peu honte de le dire... ChatGPT version gratuite.
Voici les derniers codes, si ça intéresse quelqu'un :
' MonFormulaire
Public Sub OKButton_Click()
Dim i As Integer
For i = 1 To 10
Module1.buttonVisibility(i) = Me.Controls("CheckBox" & Format(i, "00")).Value
Next i
Module1.Code3_UpdateButtonVisibility
Me.Hide
End Sub
' Module1 du TemplateProject
Option Explicit
Public myForm As Object ' Vous pouvez déclarer le formulaire en tant qu'objet générique
' mon "conseiller" a voulu déclarer le formulaire en Objet, après les échecs d'autres méthodes
Public buttonVisibility(1 To 10) As Boolean
Public myRibbonUI As IRibbonUI
Sub Code1_OuvreFormulaire(control As IRibbonControl)
' Vérifier si le formulaire n'est pas déjà ouvert
If myForm Is Nothing Then
' Créer une nouvelle instance du formulaire
Set myForm = New MonFormulaire
' Afficher le formulaire
myForm.Show
Else
' Le formulaire est déjà ouvert, le mettre au premier plan
myForm.Show
End If
End Sub
Sub Code3_UpdateButtonVisibility()
Dim i As Integer
' Mettez à jour les états de visibilité des boutons en fonction des valeurs dans le tableau buttonVisibility
On Error Resume Next
For i = 1 To 10
myRibbonUI.InvalidateControl "button" & Format(i, "00")
Next i
On Error GoTo 0
End Sub
Sub ToggleButtonVisibility(control As Office.IRibbonControl)
Dim buttonIndex As Integer
buttonIndex = CInt(Right(control.ID, 2))
If buttonIndex >= 1 And buttonIndex <= 10 Then
buttonVisibility(buttonIndex) = Not buttonVisibility(buttonIndex)
Code3_UpdateButtonVisibility
End If
End Sub
Sub MacroButton(control As Office.IRibbonControl)
Select Case control.ID
Case "button01"
Call Message01
Case "button02"
Call Message02
Case "button03"
Call Message03
'ETC.
EndSub
Voilà !
Si ça fait Tilt à une âme charitable, ce sera avec joie que je suivrai ses instructions ; sinon je posterai dans le forum English, la semaine prochaine.
Merci !
Le projet qui m'amène ici est un modèle .dotm qui sera chargé par l'utilisateur en tant que modèle global
C'est un customUI contenant :
- 10 boutons de macros
- 1 bouton, ouvrant "MonFormulaire" (défini par onAction dans le xml), qui déclecnche "Sub Code1_OuvreFormulaire(control As IRibbonControl)"
Le formulaire contient :
- 10 CheckBox (1 à 10), chacun devant permettre à l'utilisateur de choisir les boutons de macros qu'il souhaite afficher (un souci ultérieur sera de mémoriser ses choix, mais je n'en suis pas là...)
- 1 bouton OKButton_Click pour valider les choix, et fermer le formulaire.
Comme je ne suis pas développeur, j'ai fait appel à... j'ai un peu honte de le dire... ChatGPT version gratuite.
Voici les derniers codes, si ça intéresse quelqu'un :
' MonFormulaire
Public Sub OKButton_Click()
Dim i As Integer
For i = 1 To 10
Module1.buttonVisibility(i) = Me.Controls("CheckBox" & Format(i, "00")).Value
Next i
Module1.Code3_UpdateButtonVisibility
Me.Hide
End Sub
' Module1 du TemplateProject
Option Explicit
Public myForm As Object ' Vous pouvez déclarer le formulaire en tant qu'objet générique
' mon "conseiller" a voulu déclarer le formulaire en Objet, après les échecs d'autres méthodes
Public buttonVisibility(1 To 10) As Boolean
Public myRibbonUI As IRibbonUI
Sub Code1_OuvreFormulaire(control As IRibbonControl)
' Vérifier si le formulaire n'est pas déjà ouvert
If myForm Is Nothing Then
' Créer une nouvelle instance du formulaire
Set myForm = New MonFormulaire
' Afficher le formulaire
myForm.Show
Else
' Le formulaire est déjà ouvert, le mettre au premier plan
myForm.Show
End If
End Sub
Sub Code3_UpdateButtonVisibility()
Dim i As Integer
' Mettez à jour les états de visibilité des boutons en fonction des valeurs dans le tableau buttonVisibility
On Error Resume Next
For i = 1 To 10
myRibbonUI.InvalidateControl "button" & Format(i, "00")
Next i
On Error GoTo 0
End Sub
Sub ToggleButtonVisibility(control As Office.IRibbonControl)
Dim buttonIndex As Integer
buttonIndex = CInt(Right(control.ID, 2))
If buttonIndex >= 1 And buttonIndex <= 10 Then
buttonVisibility(buttonIndex) = Not buttonVisibility(buttonIndex)
Code3_UpdateButtonVisibility
End If
End Sub
Sub MacroButton(control As Office.IRibbonControl)
Select Case control.ID
Case "button01"
Call Message01
Case "button02"
Call Message02
Case "button03"
Call Message03
'ETC.
EndSub
Voilà !
Si ça fait Tilt à une âme charitable, ce sera avec joie que je suivrai ses instructions ; sinon je posterai dans le forum English, la semaine prochaine.
Merci !