Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Génration d'une seconde barre d'outils dans workbbook open

8 réponses
Avatar
Alex
Bonjour =E0 tous,=20

Il y a quelques jours, j'avais rencontr=E9 un probl=E8me pour la g=E9n=E9ra=
tion d'une barre d'outils temporaire dans le ruban Compl=E9ment (probl=E8me=
r=E9solu), et je reviens vers vous, toujours pour le m=EAme sujet mais pou=
r la cr=E9ation d'une seconde barre d'outil mais qui serait permanante une =
fois que l'utilisateur est repondu oui =E0 la msgbox. Je pensais que la pro=
c=E9dure de generation serait la meme au niveau des lignes de commande, et =
qu'il sufirait de changer dans la d=E9claration le nom de la barre et des b=
outons pour que cela fonctionne. Mais malheureusement cela ne fonctionne pa=
s. J'ai le message suivant :

Erreur d'Ecution '5' :
Argument ou Appel de proc=E9dure incorect

Voir le 'ICI o=F9 le message apparait j'ai =E9galement ajout=E9 des comment=
aires ' )

Merci par avance de votre aide pr=E9cieuse.
Cordialement.
Alex


Ce que j'ai =E9crit :

Private Sub Workbook_Open()

Dim m_barre1 As CommandBar
Dim m_barre2 As CommandBar 'Declaration d'une nouvelle barre
Dim m_Button1 As CommandBarButton
Dim m_Button2 As CommandBarButton
Dim M_button3 As CommandBarButton 'D=E9claration d'un bouton supplementaire
Dim Q1 As Integer

On Error Resume Next
Application.CommandBars("GESTION DU TEMPS FT").Delete
Application.CommandBars("Temps").Delete

On Error GoTo 0



Set m_barre1 =3D Application.CommandBars.Add(Name:=3D"Temps", _
Position:=3DmsoBarTop, MenuBar:=3DTrue, Temporary:=3DTrue)

With m_barre1
.Visible =3D True
Set m_Button1 =3D .Controls.Add(Type:=3DmsoControlButton)
=20
With m_Button1
.FaceId =3D 14
.Caption =3D "Supprimer une ligne"
.OnAction =3D "Supp_Ligne"
End With
=20
Set m_Button2 =3D m_barre1.Controls.Add(Type:=3DmsoControlButton)
With m_Button2
.FaceId =3D 210
.Caption =3D "Trier les fiches par date"
.OnAction =3D "Tri"
End With

End With


=20
Sheets("FICHES").Activate
If Range("XEP1").Value =3D "" Then
Q1 =3D MsgBox("Voulez vous installer l'icone d'ouverture automatique de=
votre outils de saisie TEMPS PASSEE ?", vbYesNo, "Demande d'information")
If Q1 =3D vbYes Then
=20
'ICI APPARAIT LE MESSAGE Erreur d'Excution '5'=20
'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=20
'J'ai egalement modifier Temporary en False ci-dessous=20
'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D =20
=20
Set m_barre2 =3D Application.CommandBars.Add(Name:=3D"Ouverture", _
Position:=3DmsoBarTop, MenuBar:=3DTrue, Temporary:=3DFalse)

=20
=20
With m_barre2
.Visible =3D True
Set M_button3 =3D m_barre2.Controls.Add(Type:=3DmsoControlButto=
n)
=20
With M_button3
.FaceId =3D 99
.Caption =3D "Ouverture de votre outils Temps"
.OnAction =3D "Ouverture"
End With
=20
ActiveSheet.Unprotect
Range("FICHES!XEP1").Value =3D "ok"
Range("FICHES!A2").Select
ActiveSheet.Protect
End With
End If
=20
End If




End Sub=20

8 réponses

Avatar
MichD
Bonjour,

D'après le type d'erreur que tu as, cette ligne de code doit
essayer de créer une seconde barre de commandes ayant
portant le nom d'une barre déjà existante.

Le nom de la barre de commande est "Ouverture" et en début de macro,
tu supprimes 2 barres :
****************
Application.CommandBars("GESTION DU TEMPS FT").Delete
Application.CommandBars("Temps").Delete
****************
Tu devrais ajouter au moins cette ligne de code :

Application.CommandBars("Ouverture").Delete

'----------------------------------
Set m_barre2 = Application.CommandBars.Add(Name:="Ouverture", _
Position:=msoBarTop, MenuBar:=True, Temporary:úlse)
'----------------------------------


Essaie comme ceci :
'===========================================
Private Sub Workbook_Open()

Dim m_barre1 As CommandBar
Dim m_barre2 As CommandBar 'Declaration d'une nouvelle barre
Dim m_Button1 As CommandBarButton
Dim m_Button2 As CommandBarButton
Dim M_button3 As CommandBarButton 'Déclaration d'un bouton supplementaire
Dim Q1 As Integer

On Error Resume Next
Application.CommandBars("GESTION DU TEMPS FT").Delete
Application.CommandBars("Temps").Delete
Application.CommandBars("Ouverture").Delete

On Error GoTo 0

Set m_barre1 = Application.CommandBars.Add(Name:="Temps", _
Position:=msoBarTop, MenuBar:=True, Temporary:=True)

With m_barre1
.Visible = True
Set m_Button1 = .Controls.Add(Type:=msoControlButton)

With m_Button1
.FaceId = 14
.Caption = "Supprimer une ligne"
.OnAction = "Supp_Ligne"
End With

Set m_Button2 = m_barre1.Controls.Add(Type:=msoControlButton)
With m_Button2
.FaceId = 210
.Caption = "Trier les fiches par date"
.OnAction = "Tri"
End With

End With

Sheets("FICHES").Activate
If Range("XEP1").Value = "" Then
Q1 = MsgBox("Voulez vous installer l'icone d'ouverture automatique de
votre outils de saisie TEMPS PASSEE ?", vbYesNo, "Demande d'information")
If Q1 = vbYes Then

'ICI APPARAIT LE MESSAGE Erreur d'Excution '5'
'============================================= 'J'ai egalement modifier Temporary en False ci-dessous
'====================================================
Set m_barre2 = Application.CommandBars.Add(Name:="Ouverture", _
Position:=msoBarTop, MenuBar:úlse, Temporary:=True)

With m_barre2
.Visible = True
Set M_button3 = m_barre2.Controls.Add(Type:=msoControlButton)

With M_button3
.FaceId = 99
.Caption = "Ouverture de votre outils Temps"
.OnAction = "Ouverture"
End With

ActiveSheet.Unprotect
Range("FICHES!XEP1").Value = "ok"
Range("FICHES!A2").Select
ActiveSheet.Protect
End With
End If

End If
End Sub
'===============================================
Avatar
Alex
Bonjour,

Merci pour votre réponse.

En fait, ma ligne de commande Application.commandBars("Gestion du Temps FT" ).delete est pour supprimer une barre d'outils qui avait été crée à l'origine sous Excel 2003. Bien que j'avais supprimé les lignes d'affich age de celle-ci dans "workbook open" celle ci s'affichait malgré tout. Sa ns doute que la conversion du fichier de 2003 en 2010 générait automati quement cette ouverture. Cette ligne me permet donc de la supprimer.

Chose étrange, ce matin, lors de l'ouverture de ce fichier, j'ai pu const ater que la macro c'est dérouler sans beug et sans message d'erreur, mais j'ai pu constaté, que dans premier temps, il me générait ma premiere barre avec mes deux boutons. Puis lorsqu'il arrive a la génération de la seconde barre d'outil, il me supprime la premiere avec mes deux boutons.

Peut etre n'est il pas possible de générer deux barres ?

Merci encore pour votre aide.
Bien cordialement.
Alex
Avatar
Alex
Re bonjour,

De plus je voulais préciser que la seconde barre d'outils que je génè re a pour but de ne pas disparaitre lors de la fermeture du fichier, car le bouton créer sert à ouvrir le fichier en automatique. C'est pourquoi j e ne l'avais pas ajouté dans le delete.

Cordialement
Alex
Avatar
MichD
Est-ce que tu as fait un copier-coller de la procédure que je t'ai envoyé
à la fin de mon dernier message?

Je te rappelle que la deuxième barre est créée seulement si cette
condition est remplie :
If Range("XEP1").Value = "" Then

Je viens de tester la procédure ce matin et elle fonctionne correctement!

'===========================================
Private Sub Workbook_Open()

Dim m_barre1 As CommandBar
Dim m_barre2 As CommandBar 'Declaration d'une nouvelle barre
Dim m_Button1 As CommandBarButton
Dim m_Button2 As CommandBarButton
Dim M_button3 As CommandBarButton 'Déclaration d'un bouton supplementaire
Dim Q1 As Integer

On Error Resume Next
Application.CommandBars("GESTION DU TEMPS FT").Delete
Application.CommandBars("Temps").Delete
Application.CommandBars("Ouverture").Delete

On Error GoTo 0

Set m_barre1 = Application.CommandBars.Add(Name:="Temps", _
Position:=msoBarTop, MenuBar:=True, Temporary:=True)

With m_barre1
.Visible = True
Set m_Button1 = .Controls.Add(Type:=msoControlButton)

With m_Button1
.FaceId = 14
.Caption = "Supprimer une ligne"
.OnAction = "Supp_Ligne"
End With

Set m_Button2 = m_barre1.Controls.Add(Type:=msoControlButton)
With m_Button2
.FaceId = 210
.Caption = "Trier les fiches par date"
.OnAction = "Tri"
End With

End With

Sheets("FICHES").Activate
If Range("XEP1").Value = "" Then
Q1 = MsgBox("Voulez vous installer l'icone d'ouverture automatique de" &
_
"votre outils de saisie TEMPS PASSEE ?", vbYesNo, "Demande
d'information")
If Q1 = vbYes Then

'ICI APPARAIT LE MESSAGE Erreur d'Excution '5'
'============================================= 'J'ai egalement modifier Temporary en False ci-dessous
'====================================================
Set m_barre2 = Application.CommandBars.Add(Name:="Ouverture", _
Position:=msoBarTop, MenuBar:úlse, Temporary:=True)

With m_barre2
.Visible = True
Set M_button3 = m_barre2.Controls.Add(Type:=msoControlButton)

With M_button3
.FaceId = 99
.Caption = "Ouverture de votre outils Temps"
.OnAction = "Ouverture"
End With

ActiveSheet.Unprotect
Range("FICHES!XEP1").Value = "ok"
Range("FICHES!A2").Select
ActiveSheet.Protect
End With
End If

End If
End Sub
'===============================================
Avatar
Alex
Bonjour à tous,

Je reviens vers vous pour savoir si quelqu'un serait comment faire pour que la barre d'icones personnalisée generée à l'ouverture d'un fichier r este toujours dans le ruban "complément", même après fermeture d'exce l, voir fermuture du PC, en sachant que dans ma procédure de fermture du fichier, je ne demande pas la fermeture de la barre d'outils du ruban "comp lément".
Bien entendu, je souhaiterais que cela puisse se faire depuis le fichier, sans avoir à la généré depuis chaque poste en tant que modèle.
Je reste à votre disposition si ma demande n'est pas suffisement explé cite.

Merci par avance de votre aide.

Bien cordialement.
Alex
Avatar
MichD
Bonjour,

Au lieu de mettre la procédure dans le thisWorkbook de ton classeur,
si tu utilises un fichier de macros personnelles (personal.xlsb), place
cette macro dans le thisworkbook de ce classeur.

L'autre alternative est d'utiliser un fichier de macros complémentaires.

Dans un tout nouveau fichier, tu copies la macro dans le ThisWorkbook de ce
dernier.
Tu enregistres le fichier en choisissant comme type de fichier "Macros
complémentaires xlam"
dans la liste "type de fichier" de la fenêtre "enregistrer sous".

Tu devrais avoir une copie de ton fichier dans ce répertoire :
C:Userston profilAppDataRoamingMicrosoftAddIns

Maintenant, dans les options Excel / compléments / Bas de la fenêtre, dans
la liste déroulante :
"Compléments Excel" , un clic sur le bouton "Atteindre..."
et dans la fenêtre ouvrante, tu utilises le bouton "parcourir" jusqu'au
fichier de macros complémentaires
que tu viens de créer.
Avant de fermer la fenêtre, assure-toi qu'il est maintenant dans la liste et
coché.

Voilà!




"Alex" a écrit dans le message de groupe de discussion :


Bonjour à tous,

Je reviens vers vous pour savoir si quelqu'un serait comment faire pour que
la barre d'icones personnalisée generée à l'ouverture d'un fichier reste
toujours dans le ruban "complément", même après fermeture d'excel, voir
fermuture du PC, en sachant que dans ma procédure de fermture du fichier, je
ne demande pas la fermeture de la barre d'outils du ruban "complément".
Bien entendu, je souhaiterais que cela puisse se faire depuis le fichier,
sans avoir à la généré depuis chaque poste en tant que modèle.
Je reste à votre disposition si ma demande n'est pas suffisement explécite.

Merci par avance de votre aide.

Bien cordialement.
Alex
Avatar
Alex
Merci pour cette réponse claire.
J'ai testé cela fonctionne très bien.
Me reste plus qu'à tester si je peux générer un fichier "type" xlam e t le faire coller directement dans le répertoire en question, et de faire faire au utilisateur juste le "cochage" du fichier dans options compléme nts, afin de simplifier le déploiement ;)
Merci beaucoup.
Bonne soirée.
Alex
Avatar
MichD
Place ce fichier .xlam dans le répertoire de ton choix
disponible sur le réseau et chaque usager peut ajouter ce
fichier de macros complémentaires en utilisant le bouton
"Parcourir" de leur application Excel pour l'ajouter!