rendre actif , par code, un bouton d'une barre personnalisée

A

amibe

Guest
Bonsoir,

Est-il possible de rendre actif, par code, un bouton non selectionné dans une barre de commande non personnalisée?
En effet, il semble que ceci:

dim barre as commandbar
msgbox barre.controls.count

ne donne que le nombre de boutons actifs de barre, si barre est une barre de commande non personnalisée et non pas le nombre total de boutons de la barre.

Merci à tous ceux qui pourraient m'apporter leur aide.
 
A

amibe

Guest
Bonjour,
merci de ta réponse. Ce que tu me proposes fonctionne avec une barre personnalisée. Il se trouve que cela ne marche pas sur une barre d'outils déjà fournie par le logiciel.
Essaie de "décocher" dans une barre par exemple "formatting" quelques "boutons". Le compteur de boutons ne compte plus ceux qui viennent d'être désactivés. Mon pb est alors d'essayer de les réactiver par code.
application.commanbars("Formatting").controls.count ne fournit que le nombre de boutons effectivement actifs.
Par contre cela marche bien sur une barre personnalisée. Que le bouton soit actif ou pas, le compte de boutons est toujours correct.

As-tu une idée pour résoudre ce problème?
merci
 
V

vincent

Guest
Re

Pour moi ça fonctionne quelque soit le type de barre personnelle ou application il faut juste trouvé le nom ou l'index de la barre qui t'interresse et ensuite pour remettre la barre à 'zéro' utilse

application.CommandBars(1).Reset

dis moi si cela repond à ta question

Voilà

@+Vincent

pour info xl 97 et windows xp
 
A

amibe

Guest
Bonjour,

Merci de votre patience et de votre réponse.
Effectivement, le fait de revenir à la "configuration de sortie d'usine" permet de résoudre le problème sauf s'il y a quelques boutons "perso" dans la barre en question( lesquels sont irrémédiablement éliminés sauf en cas de copie dans une barre d'outils).
Compte tenu de ce que vous me dites, je vois le processus suivant:
1°) creation d'une barre perso
2°) recopie des boutons perso de la barre "officielle" sur la barre perso
3°) remise à zéro de la barre officielle
4°) recopie des boutons perso dans la barre "officielle"
5°) destruction de la barre perso

merci encore de votre aide
 
V

vincent

Guest
Re le fil

une autre solution

Option Explicit
Sub test()
Dim ctrl As Object
Dim cdbs As Object
For Each cdbs In Application.CommandBars
For Each ctrl In cdbs.Controls
On Error Resume Next
ctrl.Enabled = True
Err.Clear
Next
Next
End Sub

cette macro rend tous les controles (perso ou systeme) actifs de toutes les barres (perso ou systeme) tester sous 97 et xp

@+Vincent
 

Discussions similaires

Réponses
3
Affichages
146
Réponses
2
Affichages
762