Page Accueil FAQ MPFE Liens Format de nombres Téléchargement Applications Combinaisons


* * *
  SOMMAIRE
  La FAQ
  VBAXL
  BASIC
  ASTUCES
Exemples
  Boucles
  Cellules
  Cellules 2
  Divers
  Erreurs
  Fichiers
  Feuilles
  Impression
  Médias
  Messages
  Outils
  Spéciales
  Tests
  Le Web
  Userform
  XL et Word
  XL Clipboard
  XL 2007
  XL et XML
 
  Macro :o)
  Réactions
  Livre d'Or

 

titre


Les Outils

Création d'une barre d'outils
Ancienne version

Sub Creation_barre_outil()
Application.ScreenUpdating = False
Toolbars.Add Name:="Outils NewGam"
Toolbars("Outils NewGam").Visible = True

Set BarOutil = Toolbars("Outils NewGam").ToolbarButtons
BarOutil.Add Button:=214, Before:=1, OnAction:="Action0",Enabled:=True,Pushed:=False
BarOutil(1).Name = "Interface"

Set BarOutil = Toolbars("Outils NewGam").ToolbarButtons
BarOutil.Add Button:=211, Before:=1, OnAction:="Action1", Enabled:=True,Pushed:=False
BarOutil(1).Name = "CréeTarifCatalogue"

Set BarOutil = Toolbars("Outils NewGam").ToolbarButtons
BarOutil.Add Button:=213, Before:=1, OnAction:="Action2", Enabled:=True, Pushed:=False
BarOutil(1).Name = "CreeTarifExport"

Set BarOutil = Nothing

'Positionnement de la barre d'outils

With Toolbars("Outils NewGam")
.Left = 620
.Top = 450
.Width = 120
End With
End Sub

'Execution des commandes

Sub Action0()
Range("a1").Formula = "Commande Action0"
End Sub

Sub Action1()
Range("a2").Formula = "Commande Action1"
End Sub

Sub Action2()
Range("a3").Formula = "Commande Action2"
End Sub

Sub SupprimeBarOutil()
On Error Resume Next
Toolbars("Outils NewGam").Delete
End Sub

Création d'une barre d'outils
Nouvelle version

Sub NewBar()
Application.CommandBars.Add(Name:="BarPerso").Visible = True
Application.CommandBars("BarPerso").Controls.Add Type:=msoControlButton, ID _
:=19, Before:=1
Application.CommandBars("BarPerso").Controls.Add Type:=msoControlButton, ID _
:=22, Before:=2
With CommandBars("BarPerso")
.Left = 620
.Top = 450
.Width = 120
End With
End Sub


Création d'un menu

Sub AjouteMenus()
MenuBars(xlWorksheet).Menus.Add Caption:="&MonMenu",before:=9

'(before:=9)modifié cette valeur pour placer le menu où vous voulez

MenuBars(xlWorksheet).Menus("&MonMenu").MenuItems.Add _
Caption:="&SousMenu1", before:=1, OnAction:="Nom de la macro 1"   

'Exécute la macro 1

MenuBars(xlWorksheet).Menus("&MonMenu").MenuItems.Add _
Caption:="&SousMenu2", before:=1, OnAction:="Nom de la macro 2"   

'Exécute la macro 2

End Sub

Sub SupprimeMenus()
For Each MenuName In MenuBars(xlWorksheet).Menus
If MenuName.Caption = "&MonMenu" Then
MenuName.Delete
End If
Next
End Sub

Création d'un menu contextuel (Click droit)

Sub CreationMenuContext()
With Application.CommandBars("Cell").Controls.Add(msoControlButton)
.Caption = "Avez-vous un chat?"
.BeginGroup = True
.OnAction = "Question"
End With
End Sub

Sub Question()
MsgBox ("Oui !")
End Sub

'Réinitialise le menu contextuel

Sub delMenuContext()
Application.CommandBars("Cell").Reset
End Sub

Ajoute une fonction au petit menu de la barre d'état.(en bas à droite)

Sub NouvelleFonction()
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Difference"
.OnAction = "Difference"
End With
End Sub

Sub EffaceFonction()
Application.CommandBars("AutoCalculate").Controls("Difference").Delete
End Sub

Cette fonction calcule la différence entre la valeur la plus grande et la valeur la plus petite de la sélection:

Private Sub Difference()
On Error Resume Next
valeur = Application.Max(ActiveWindow.RangeSelection) - _
Application.Min(ActiveWindow.RangeSelection)
MsgBox "Difference = " & valeur
Range("a1") = valeur
End Sub

Affiche une série de boutons "exemples" dans une barre d'outil

Sub AfficheBoutons()
Dim NewBarreOutil As CommandBar
Dim NewBouton As CommandBarButton
Dim i As Integer, IconOn As Integer, IconOff As Integer

'Supprime la barre si elle existe déjà

On Error Resume Next
Application.CommandBars("BarBouton").Delete
On Error GoTo 0

Set NewBarreOutil = Application.CommandBars.Add _
(Name:="BarBouton", temporary:=True)
NewBarreOutil.Visible = True

'Affiche les boutons 1 à 200
Suivant la vitesse de votre ordinateur vous pouvez passer
le paramètre IconOff à 600 (Attente de 30 secondes)
Ou bien modifier le paramètre de départ IconOn = 100
et IconOff= 200 (Rapide)

IconOn = 1
IconOff = 200

For i = IconOn To IconOff
Set NewBouton = NewBarreOutil.Controls.Add _
(Type:=msoControlButton, ID:=2950)
NewBouton.FaceId = i
NewBouton.Caption = "FaceID = " & i
Next i
NewBarreOutil.Width = 700
NewBarreOutil.Left = 50
NewBarreOutil.Top = 120
End Sub

Comment supprimer la barre de menus principale ?

Sub SupMenuBar()
Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub

Et pour l'afficher:
Application.CommandBars("Worksheet Menu Bar").Enabled = True

ou bien (xl97/XP)
Sub supBA()
For Each LaBarMenu In ActiveMenuBar.Menus
LaBarMenu.Delete
Next
MsgBox "Barre de menus supprimée !"
ActiveMenuBar.Reset
MsgBox "Barre de menus rétablie !"
End Sub



Affiche la barre de menus principale (Fichier Edition Affichage etc...)

Application.CommandBars(1).Enabled = True

Masque la barre de menus principale

Application.CommandBars(1).Enabled = False



Création d'un bouton dans la barre d'outils "Perso"

Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Public Const VK_SHIFT = &H10

Sub Bt_AjoutFeuille()
On Error Resume Next
Set newBtn = Application.CommandBars("Perso").Controls.Add(Type:=msoControlButton, before:=1)
With newBtn
.Name = "Bouton Ajout de feuille"
.TooltipText = "Insère une nouvelle feuille"
.FaceId = 578
.OnAction = "AjoutFeuille"
.Visible = True
End With
End Sub


Code du bouton: Insertion de feuille dans le classeur

Sub AjoutFeuille()
Sheets.Add
If GetKeyState(VK_SHIFT) < 0 Then
ActiveSheet.Move After:=Worksheets(ActiveSheet.Index + 1)
Else
ActiveSheet.Move After:=Worksheets(Sheets.Count)
End If
End Sub

Annule la commande Edition Copier de la barre de menus

Position dans le menu Controls(2).Controls(4)

Sub EditionCopierNo()
Application.CommandBars(1).Controls(2).Controls(4).Enabled = False
End Sub

Rétablissement de la commande

Sub EditionCopierOK()
Application.CommandBars(1).Controls(2).Controls(4).Enabled = True
End Sub

Avec le nom du menu (Edit) et numéro ID (19)

Sub EditionCopierNo()
Application.CommandBars("Edit").FindControl(ID:=19).Enabled = False
End Sub

Rétablissement de la commande

Sub EditionCopierOK()
Application.CommandBars("Edit").FindControl(ID:=19).Enabled = True
End Sub

Annule la commande Outils Options de la barre de menus

Sub menuOutilsOptNo()
Application.CommandBars("Tools").FindControl(ID:=522).Enabled = False
End Sub

Rétabli la commande option du menu Outils

Sub menuOutilsOptok()
Application.CommandBars("Tools").FindControl(ID:=522).Enabled = True
End Sub

xlcommands.zip   20 ko  Liste de tous les numéros Id de la barre de menus

Liste le nom des barres d'outils

Affiche le nom et le nom local de chaque barre de menus
et de chaque barre d'outils en indiquant si elles sont visibles ou non.

Sub LstBO()
'Worksheets("LstBO").Select
For Each cbar In CommandBars
x = x + 1
[A1] = "Nom de la barre d'outils"
[A1].Offset(x, 0) = cbar.Name
[B1] = "Nom local de la barre d'outils"
[B1].Offset(x, 0) = cbar.NameLocal
[C1] = "Visible"
[C1].Offset(x, 0) = cbar.Visible
Next
End Sub

 

[top]

 

     
 ©Conception et Graphisme. Daniel Josserand . Novembre 2000