OVH Cloud OVH Cloud

Marco ouverture de classeur !

2 réponses
Avatar
Sim
Bonjour a tous,

Dans mon Workbook_open() j'ai la macro suivante :
*****************************************************
Private Sub Workbook_Open()
Call CreateBO
'Nom de la barre où est le bouton
With Application.CommandBars("bidon")
'Nom du bouton
With .Controls("pas content")
.OnAction = "Module1.pascontent"
End With
End With
End sub


Public Const nomBO = "bidon"
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
deleteBO 'en cas de plantage Excel
Set bo = Application.CommandBars.Add(nomBO)

With bo.Controls.Add(msoControlButton)
.Caption = "Pas Content"

ThisWorkbook.Worksheets("IconeMacro").Shapes("Image 2").Copy
' colle l'icone personnalisé
.PasteFace
.OnAction = "Module1!PasContent"
End With


Sub deleteBO()
On Error Resume Next
Application.CommandBars(nomBO).Delete
End Sub
********************************************************
Mon probleme est le suivant ... si j'ouvre un autre classeur excel en meme
temps que le premier et bien les bouton du premier classeur trouver ce
retrouve avec le chemins du classeur que je viens d'ouvrir exemple :

avant ouvertude du deuxieme classeur : '24248-C07B.xls'!Module1.pascontent

apres ouverture du deuxieme classeur : '26125.xls'!Module1.pascontent

et ce pour le meme bouton du premier classeur !

quelqu'un aurait une solution alternative !

Merci de votre aide !

2 réponses

Avatar
MichDenis
Ta question n'est pas très claire... je te donne un exemple comment
ajouter un bouton à la barre d'outils standard et de lui affecter
une macro particulière ....

Si le classeur où est la macro est fermé, tu auras un message d'erreur
car la macro ne sera pas disponible...Tu dois alors utiliser les événement
"Activate" et "Desactivate" dans le ThisWorkbook pour gérer la présence
ou non de ton bouton selon que le fichier est ouvert ou fermé.

Si tu as d'autres problèmes, il faudra que tu précises la difficulté que tu rencontres.

'-----------------------------------------
Sub test()

Dim X As CommandBar

Set X = Application.CommandBars("Standard")
With X
With .Controls.Add
.Caption = "toto"
.Style = 2
.OnAction = ThisWorkbook.Name & "!Module1.MaMacro"
End With
End With

End Sub

'-----------------------------------------
Sub MaMacro()

If ActiveWorkbook.Name = ThisWorkbook.Name Then
MsgBox "Bonjour"
'Tu places ton code ici....
Else
MsgBox "Ce bouton est actif seulement pour" & _
"le claseur " & ThisWorkbook.Name
End If

End Sub
'-----------------------------------------




"Sim" a écrit dans le message de news:
Bonjour a tous,

Dans mon Workbook_open() j'ai la macro suivante :
*****************************************************
Private Sub Workbook_Open()
Call CreateBO
'Nom de la barre où est le bouton
With Application.CommandBars("bidon")
'Nom du bouton
With .Controls("pas content")
.OnAction = "Module1.pascontent"
End With
End With
End sub


Public Const nomBO = "bidon"
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
deleteBO 'en cas de plantage Excel
Set bo = Application.CommandBars.Add(nomBO)

With bo.Controls.Add(msoControlButton)
.Caption = "Pas Content"

ThisWorkbook.Worksheets("IconeMacro").Shapes("Image 2").Copy
' colle l'icone personnalisé
.PasteFace
.OnAction = "Module1!PasContent"
End With


Sub deleteBO()
On Error Resume Next
Application.CommandBars(nomBO).Delete
End Sub
********************************************************
Mon probleme est le suivant ... si j'ouvre un autre classeur excel en meme
temps que le premier et bien les bouton du premier classeur trouver ce
retrouve avec le chemins du classeur que je viens d'ouvrir exemple :

avant ouvertude du deuxieme classeur : '24248-C07B.xls'!Module1.pascontent

apres ouverture du deuxieme classeur : '26125.xls'!Module1.pascontent

et ce pour le meme bouton du premier classeur !

quelqu'un aurait une solution alternative !

Merci de votre aide !
Avatar
Sim
Bonjour MichDenis,

Désoler si ma question n'était pas clair :(
Cepandant tu ma fais allumer sur quelque chose. Au lieu de placer mon code
dans mon
Workbook_Open() je le place dans Workbook_Activate() comme tu la dis
et sa fonctionne super bien :)

Merci a toi pour ton aide !

"MichDenis" a écrit dans le message de news:
eK$V$
Ta question n'est pas très claire... je te donne un exemple comment
ajouter un bouton à la barre d'outils standard et de lui affecter
une macro particulière ....

Si le classeur où est la macro est fermé, tu auras un message d'erreur
car la macro ne sera pas disponible...Tu dois alors utiliser les événement
"Activate" et "Desactivate" dans le ThisWorkbook pour gérer la présence
ou non de ton bouton selon que le fichier est ouvert ou fermé.

Si tu as d'autres problèmes, il faudra que tu précises la difficulté que
tu rencontres.

'-----------------------------------------
Sub test()

Dim X As CommandBar

Set X = Application.CommandBars("Standard")
With X
With .Controls.Add
.Caption = "toto"
.Style = 2
.OnAction = ThisWorkbook.Name & "!Module1.MaMacro"
End With
End With

End Sub

'-----------------------------------------
Sub MaMacro()

If ActiveWorkbook.Name = ThisWorkbook.Name Then
MsgBox "Bonjour"
'Tu places ton code ici....
Else
MsgBox "Ce bouton est actif seulement pour" & _
"le claseur " & ThisWorkbook.Name
End If

End Sub
'-----------------------------------------




"Sim" a écrit dans le message de news:

Bonjour a tous,

Dans mon Workbook_open() j'ai la macro suivante :
*****************************************************
Private Sub Workbook_Open()
Call CreateBO
'Nom de la barre où est le bouton
With Application.CommandBars("bidon")
'Nom du bouton
With .Controls("pas content")
.OnAction = "Module1.pascontent"
End With
End With
End sub


Public Const nomBO = "bidon"
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
deleteBO 'en cas de plantage Excel
Set bo = Application.CommandBars.Add(nomBO)

With bo.Controls.Add(msoControlButton)
.Caption = "Pas Content"

ThisWorkbook.Worksheets("IconeMacro").Shapes("Image 2").Copy
' colle l'icone personnalisé
.PasteFace
.OnAction = "Module1!PasContent"
End With


Sub deleteBO()
On Error Resume Next
Application.CommandBars(nomBO).Delete
End Sub
********************************************************
Mon probleme est le suivant ... si j'ouvre un autre classeur excel en meme
temps que le premier et bien les bouton du premier classeur trouver ce
retrouve avec le chemins du classeur que je viens d'ouvrir exemple :

avant ouvertude du deuxieme classeur : '24248-C07B.xls'!Module1.pascontent

apres ouverture du deuxieme classeur : '26125.xls'!Module1.pascontent

et ce pour le meme bouton du premier classeur !

quelqu'un aurait une solution alternative !

Merci de votre aide !