Modifier getenabled ruban en fonction du nom de ma feuille

Bonjour à tous,

Est il possible de modifier l'attribut enabled de contrôles ou groupe de contrôles lorsque je change de feuille ?

Par ex rendre enabled= true pour certains contrôles sur la feuil1 et qu'ils soient enabled=false sur les autres feuilles du classeur.

Merci.

Bonjour,

Pour un contrôle de formulaire :

Private Sub Worksheet_Activate()
  ActiveSheet.Shapes(1).DrawingObject.Enabled = True
End Sub

Pour un contrôle ActiveX :

Private Sub Worksheet_Activate()
  ActiveSheet.CommandButton1.Enabled = True
End Sub

Daniel

Merci Daniel pour la réponse.

Mais je me suis mal exprimé dans ma question.

En fait, je parle de contrôles du ruban dans un groupe personnalisé en utilisant la fonction de rappel getEnabled. Comment faire pour activer certains contrôles en fonction du nom de la feuille ?

Merci.

ok, alors ce n'est pas pour moi.

Daniel

Merci quand même.

Salut,

voici un exemple avec 2 boutons dans le ruban :

le customUI.xml :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonOnLoad">
  <ribbon>
    <tabs>
      <tab id="tabPerso" label="Mon onglet">
        <group id="grpActions" label="Actions">
          <button id="btnMonControle1" 
                  label="Bouton Feuil1" 
                  onAction="BtnMonControle1_Click"
                  getEnabled="GetEnabled"/>
          <button id="btnMonControle2" 
                  label="Bouton Rapport" 
                  onAction="BtnMonControle2_Click"
                  getEnabled="GetEnabled"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

Dans un module standard VBA du classeur on récupère l'objet ruban pour pouvoir l'utiliser ensuite :

' Déclaration d'une variable globale pour stocker l'objet ruban
Public gRibbon As IRibbonUI

' Callback appelé automatiquement à l'ouverture du ruban
Public Sub RibbonOnLoad(ribbon As IRibbonUI)
    ' Stocker l'objet IRibbonUI dans la variable globale
    Set gRibbon = ribbon
End Sub

Pour valider un bouton suivant la feuille active on peut faire comme cela :

' Callback pour getEnabled
Public Function GetEnabled(control As IRibbonControl) As Boolean
    Dim wsName As String
    wsName = Application.ActiveSheet.Name    
    Select Case control.Id
        Case "btnMonControle1"
            ' Activer uniquement si la feuille s'appelle "Feuil1"
            GetEnabled = (wsName = "Feuil1")

        Case "btnMonControle2"
            ' Activer uniquement si la feuille s'appelle "Rapport"
            GetEnabled = (wsName = "Rapport")

        Case Else
            ' Par défaut, activer
            GetEnabled = True
    End Select
End Function

et pour rafraichir le ruban sur changement de feuille on peut mettre ce code dans le vba workbook :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Not gRibbon Is Nothing Then
        gRibbon.Invalidate   ' Force Excel à rappeler getEnabled
    End If
End Sub

Ami calmant, J.P

Merci beaucoup, c'est exactement ça que je voulais.

Fabrice

Rechercher des sujets similaires à "modifier getenabled ruban fonction nom feuille"