laurent950
XLDnaute Barbatruc
Bonsoir Le Forum.
' Etats : 2 Classeurs
: Celuis qui contient la procédure de construction "Boutons et Liste déroulante" avec Procédure VBA.."OutilsCommandBar"
: L'autres un Classeur XlSX qui ne conserve pas les procédures VBA..................................."LeClasseurDeTravail.xlsx"
J'ai une question concernant les CommandBar.
Immaginon un classeur "OutilsCreationCommandBar.xlsm" qui contient la procédure de construction d'une :
* CommandBar :
° Décliné en deux Partie
- Une Partie qui sont des bouttons
- Une Partie qui est une liste déroulante.
L'idée est la suivante :
* Immaginon un classeur Excel "LeClasseurDeTravail.xlsx" ou ont aurait besoin ponctuellement d'outils
La Question est la suivante :
* Comment créer les Outils dans le Classeur Excel "LeClasseurDeTravail.xlsx" en "Utilisant le Classeur "OutilsCommandBar" qui contient
le systéme de création de Bouttons et de Liste déroulante.
Explication :
* Le Classeur "OutilsCommandBar" contient le systéme qui permet la création de Barre d'outils "Bouttons" et "Liste Déroulante"
° Il est possible de créer ces outils dans ce même classeur et d'utiliser les deux pocédures Test VBA "sans interet ici juste pour le test"
Demande :
* Comment Utiliser les procédures VBA de construction :
° BarreCommandeBouton (Pour la création des bouttons)
° BarreCommandeMenu (Pour la construction du Menu Déroulant)
* Dans le Fichier Excel "LeClasseurDeTravail.xlsx" qui ne contient pas les procédure VBA (C'est pas un .xslm)
* Dans l'exemple du code (Ci-Dessous) la variable Barre est associer au classeur "OutilsCreationCommandBar.xlsm" qui contient le Code VBA qui tourne !
- Application.CommandBars
j'avais pensais a faire cela
Dim Wkb as Workbook
set Wkb = Workbooks("LeClasseurDeTravail.xlsx")
Puis Wkb.Application.CommandBars
Mais cela ne fonctionne pas ?
J'ai constaté que la cosntruction de la Barre "Bouttons" Ou "Liste Déroulante" se construit que sur le Classeur Actif
J'ai donc rendu le Classeur Actif
Wkb.Activate
est donc la construction de l'outils se réalise bien sur le classeur actif.
La Question :
* Comment retrouver le chemin entre application . Wkb . CommandBars
° Pour éviter de passer par Activate et rendre le classeur actif ("LeClasseurDeTravail.xlsx") est travailler
Seulement en Modéle Objet
Pour Exemple :
* BarreCommandeBouton
Le Début du Code :
Option Explicit
Sub BareCommandeButton()
' Pour Test en Bouttons
Dim Barre As CommandBar
Dim Affiche As CommandBarButton
Set Barre = Application.CommandBars.Add("BarreTest !")
Set Affiche = Barre.Controls.Add
With Affiche
[ Suite du Code ]
End Sub
Tous le Code :
Module Standard : OutilsBarreCommande (Le code associer au deux créations : Boutons et Menu Déroulant"
Module Standard : BarreCommandeBouton (Création des boutons via le Complément dans la Barre)
Module Standard : BarreCommandeMenu (Création de la liste déroulante via le Complément dans la Barre)
L'idée est de connaitre la procédure pour avoir le chemin Application.CommandBars est Variable Objet est évité de passé par l'instruction Activate pour construire ces
deux Outils "Barre Bouton Et Ou Liste Déroulante" en Modéle Objet
Et Connaitre la procédure avec l'instruction Set = Pour initialisé la variable
Si Vous avez la réponse à cette question Merci
Laurent
' Etats : 2 Classeurs
: Celuis qui contient la procédure de construction "Boutons et Liste déroulante" avec Procédure VBA.."OutilsCommandBar"
: L'autres un Classeur XlSX qui ne conserve pas les procédures VBA..................................."LeClasseurDeTravail.xlsx"
J'ai une question concernant les CommandBar.
Immaginon un classeur "OutilsCreationCommandBar.xlsm" qui contient la procédure de construction d'une :
* CommandBar :
° Décliné en deux Partie
- Une Partie qui sont des bouttons
- Une Partie qui est une liste déroulante.
L'idée est la suivante :
* Immaginon un classeur Excel "LeClasseurDeTravail.xlsx" ou ont aurait besoin ponctuellement d'outils
La Question est la suivante :
* Comment créer les Outils dans le Classeur Excel "LeClasseurDeTravail.xlsx" en "Utilisant le Classeur "OutilsCommandBar" qui contient
le systéme de création de Bouttons et de Liste déroulante.
Explication :
* Le Classeur "OutilsCommandBar" contient le systéme qui permet la création de Barre d'outils "Bouttons" et "Liste Déroulante"
° Il est possible de créer ces outils dans ce même classeur et d'utiliser les deux pocédures Test VBA "sans interet ici juste pour le test"
Demande :
* Comment Utiliser les procédures VBA de construction :
° BarreCommandeBouton (Pour la création des bouttons)
° BarreCommandeMenu (Pour la construction du Menu Déroulant)
* Dans le Fichier Excel "LeClasseurDeTravail.xlsx" qui ne contient pas les procédure VBA (C'est pas un .xslm)
* Dans l'exemple du code (Ci-Dessous) la variable Barre est associer au classeur "OutilsCreationCommandBar.xlsm" qui contient le Code VBA qui tourne !
- Application.CommandBars
j'avais pensais a faire cela
Dim Wkb as Workbook
set Wkb = Workbooks("LeClasseurDeTravail.xlsx")
Puis Wkb.Application.CommandBars
Mais cela ne fonctionne pas ?
J'ai constaté que la cosntruction de la Barre "Bouttons" Ou "Liste Déroulante" se construit que sur le Classeur Actif
J'ai donc rendu le Classeur Actif
Wkb.Activate
est donc la construction de l'outils se réalise bien sur le classeur actif.
La Question :
* Comment retrouver le chemin entre application . Wkb . CommandBars
° Pour éviter de passer par Activate et rendre le classeur actif ("LeClasseurDeTravail.xlsx") est travailler
Seulement en Modéle Objet
Pour Exemple :
* BarreCommandeBouton
Le Début du Code :
Option Explicit
Sub BareCommandeButton()
' Pour Test en Bouttons
Dim Barre As CommandBar
Dim Affiche As CommandBarButton
Set Barre = Application.CommandBars.Add("BarreTest !")
Set Affiche = Barre.Controls.Add
With Affiche
[ Suite du Code ]
End Sub
Tous le Code :
Module Standard : OutilsBarreCommande (Le code associer au deux créations : Boutons et Menu Déroulant"
VB:
Option Explicit
Sub SupEspace()
' Cela ne sert a rien juste pour le test !
Dim plage As Range
Set plage = Range("A1:A10")
plage = Application.Trim(plage)
End Sub
Sub MajPhrase()
' Cela ne sert a rien juste pour le test !
Dim plage As Range
Dim Cval As Range
Set plage = Range("A1:A10")
For Each Cval In plage
Cval.Value = UCase(Mid(Cval.Value, 1, 1)) & LCase(Mid(Cval.Value, 2, Len(Cval.Value)))
Next Cval
plage = Application.Trim(plage)
End Sub
Module Standard : BarreCommandeBouton (Création des boutons via le Complément dans la Barre)
Code:
Option Explicit
Sub BareCommandeButton()
' https://fring.developpez.com/vba/excel/faceid/
' Pour Test en Bouttons
On Error Resume Next
Application.CommandBars("BarreTest !").Delete
On Error GoTo 0
' Test pour ajouter 2 (VBA) avec Boutons associer a une Barre de Commandes
Dim Barre As CommandBar
Dim Affiche As CommandBarButton
Set Barre = Application.CommandBars.Add("BarreTest !")
' Pour ce test
' 2 Procédures VBA Simple pour Test
' Procedure de Nettoyage des Espaces Trim
' Procédure pour mettre la premiere lettre d'une phrase en Majuscule (Le reste en Minuscile)
Set Affiche = Barre.Controls.Add
With Affiche
.Caption = "SupEspace"
.State = msoButtonUp
.TooltipText = "Supprime tous les espaces du texte à l'exception des espaces simples entre les mots"
.FaceId = 576
.OnAction = "SupEspace"
End With
Set Affiche = Barre.Controls.Add
With Affiche
.Caption = "MajPhrase"
.State = msoButtonUp
.TooltipText = "Premiére Lettre d'une phrase Majuscule, les autres Minuscules"
.FaceId = 162
.OnAction = "MajPhrase"
End With
'Application.CommandBars("").Position = msoBarTop
Barre.Position = msoBarTop
Barre.Visible = True
End Sub
Module Standard : BarreCommandeMenu (Création de la liste déroulante via le Complément dans la Barre)
Code:
Sub BarreCommandeMenuDeroulant()
' https://fring.developpez.com/vba/excel/faceid/
' Pour Test En Menu Déroulant
On Error Resume Next
Application.CommandBars(1).Controls("BarreTest !").Delete
On Error GoTo 0
Dim MenuPopup As CommandBarPopup
Set MenuPopup = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, temporary:=True)
MenuPopup.Caption = "BarreTest !"
Dim MenuDeroulant As CommandBarControl
Set MenuDeroulant = MenuPopup.Controls.Add(Type:=msoControlButton)
With MenuDeroulant
.Caption = "SupEspace"
.State = msoButtonUp
.TooltipText = "Supprime tous les espaces du texte à l'exception des espaces simples entre les mots"
.FaceId = 576
.OnAction = "SupEspace"
End With
Set MenuDeroulant = MenuPopup.Controls.Add(Type:=msoControlButton)
With MenuDeroulant
.Caption = "MajPhrase"
.State = msoButtonUp
.TooltipText = "Premiére Lettre d'une phrase Majuscule, les autres Minuscules"
.FaceId = 162
.OnAction = "MajPhrase"
End With
End Sub
L'idée est de connaitre la procédure pour avoir le chemin Application.CommandBars est Variable Objet est évité de passé par l'instruction Activate pour construire ces
deux Outils "Barre Bouton Et Ou Liste Déroulante" en Modéle Objet
Et Connaitre la procédure avec l'instruction Set = Pour initialisé la variable
Si Vous avez la réponse à cette question Merci
Laurent