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

Macro qui crée un bouton

8 réponses
Avatar
Vince
Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos contributions!

Ma macro crée un bouton dans la feuille active avec la commande suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True _
, DisplayAsIcon:=False, Left:=700, Top:=50, Width:=128.25, Height _
:=54).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign macro"
est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince

8 réponses

Avatar
Jean-François Aubert
Salut Vince,

chez moi, cela fonctionne parfaitement,

les 2 macros Sub test() et Private Sub commandbutton1_click() sont dans le
code d'une feuille.

'***********************************************************
Option Explicit
Sub test()
ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True _
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height _
:T).Select
End Sub

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

'***********************************************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!

Ma macro crée un bouton dans la feuille active avec la commande suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True
_
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height _
:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"
est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince


Avatar
Vince
Attends, une fois que le bouton a été créé, tu cliques dessus et le mot
"test" s'affiche en L1 chez toi ?

Chez moi il ne se passe rien, je peux cliquer 20'000x sur le bouton, nada...


Salut Vince,

chez moi, cela fonctionne parfaitement,

les 2 macros Sub test() et Private Sub commandbutton1_click() sont dans le
code d'une feuille.

'***********************************************************
Option Explicit
Sub test()
ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True _
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height _
:T).Select
End Sub

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

'***********************************************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!

Ma macro crée un bouton dans la feuille active avec la commande suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True
_
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height _
:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"
est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince







Avatar
Hervé
Bonjour Vince,

Avec ce code, le bouton est créé et le code écrit dans la feuille. Teste.
Attention, coche la référence Forms 2.0 :

Sub Bouton()
'Cocher la référence Microsoft Forms 2.0 Object Library
Dim Fe As Worksheet
Dim Ctrl As OLEObject
Dim Btn As MSForms.CommandButton
Dim Code As String

Application.ScreenUpdating = False
'défini la feuille recevant le bouton
Set Fe = ActiveSheet
'création du bouton avec position et
'taille
With Fe
Set Ctrl = .OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", _
Link:úlse, _
DisplayAsIcon:úlse, _
Left:=6, _
Top:E, _
Width:8, _
Height:!)
'défini le bouton comme objet
'et le paramètre
Set Btn = Ctrl.Object
With Btn
.Name = "MonBouton"
.Caption = "Bouton pour Vince"
End With
'écrit le code dans le module de la feuille
'de calcul recevant le bouton
Code = "Private Sub MonBouton_Click()" & vbCrLf
Code = Code & " msgbox ""Salut Vince ;o)""" & vbCrLf
Code = Code & "End Sub" & vbCrLf

With ThisWorkbook.VBProject.VBComponents _
(Fe.CodeName).CodeModule
.InsertLines .CountOfLines + 1, Code
End With

End With

Application.ScreenUpdating = True

Set Fe = Nothing
Set Ctrl = Nothing
Set Btn = Nothing
End Sub


Hervé


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!


Ma macro crée un bouton dans la feuille active avec la commande suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True
_

, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height
_

:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"

est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince


Avatar
Vince
Salut Hervé

ça veut dire quoi "cocher la référence Forms 2.0" ? Je dois faire quoi ?

Le code ne fonctionne pas pour l'instant... il génère une erreur ici:

Dim Btn As MSForms.CommandButton

Merci
A+


Bonjour Vince,

Avec ce code, le bouton est créé et le code écrit dans la feuille. Teste.
Attention, coche la référence Forms 2.0 :

Sub Bouton()
'Cocher la référence Microsoft Forms 2.0 Object Library
Dim Fe As Worksheet
Dim Ctrl As OLEObject
Dim Btn As MSForms.CommandButton
Dim Code As String

Application.ScreenUpdating = False
'défini la feuille recevant le bouton
Set Fe = ActiveSheet
'création du bouton avec position et
'taille
With Fe
Set Ctrl = .OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", _
Link:úlse, _
DisplayAsIcon:úlse, _
Left:=6, _
Top:E, _
Width:8, _
Height:!)
'défini le bouton comme objet
'et le paramètre
Set Btn = Ctrl.Object
With Btn
.Name = "MonBouton"
.Caption = "Bouton pour Vince"
End With
'écrit le code dans le module de la feuille
'de calcul recevant le bouton
Code = "Private Sub MonBouton_Click()" & vbCrLf
Code = Code & " msgbox ""Salut Vince ;o)""" & vbCrLf
Code = Code & "End Sub" & vbCrLf

With ThisWorkbook.VBProject.VBComponents _
(Fe.CodeName).CodeModule
.InsertLines .CountOfLines + 1, Code
End With

End With

Application.ScreenUpdating = True

Set Fe = Nothing
Set Ctrl = Nothing
Set Btn = Nothing
End Sub


Hervé


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!


Ma macro crée un bouton dans la feuille active avec la commande suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True
_

, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height
_

:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"

est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince







Avatar
jps
le "." après CommandButton est-il dans la ligne ci-dessous, bien normal?

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True

jps

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

Attends, une fois que le bouton a été créé, tu cliques dessus et le mot
"test" s'affiche en L1 chez toi ?

Chez moi il ne se passe rien, je peux cliquer 20'000x sur le bouton,
nada...


Salut Vince,

chez moi, cela fonctionne parfaitement,

les 2 macros Sub test() et Private Sub commandbutton1_click() sont dans
le
code d'une feuille.

'***********************************************************
Option Explicit
Sub test()
ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True _
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height
_
:T).Select
End Sub

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

'***********************************************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!

Ma macro crée un bouton dans la feuille active avec la commande
suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True
_
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25,
Height _
:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait
clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"
est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en
majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince









Avatar
Vince
C'est bon j'ai trouvé où cocher et ça marche nickel!

Le problème est que le cochage ne reste pas et que je dois donc à chaque
fois aller recocher le truc... c'est un peu embêtant...

T'aurais pas une idée ? peut-être une ligne de code ou un fichier .dll à
déplacer ?

Merci d'avance de ton aide.

Bon week-end

Vince




Bonjour Vince,

Avec ce code, le bouton est créé et le code écrit dans la feuille. Teste.
Attention, coche la référence Forms 2.0 :

Sub Bouton()
'Cocher la référence Microsoft Forms 2.0 Object Library
Dim Fe As Worksheet
Dim Ctrl As OLEObject
Dim Btn As MSForms.CommandButton
Dim Code As String

Application.ScreenUpdating = False
'défini la feuille recevant le bouton
Set Fe = ActiveSheet
'création du bouton avec position et
'taille
With Fe
Set Ctrl = .OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", _
Link:úlse, _
DisplayAsIcon:úlse, _
Left:=6, _
Top:E, _
Width:8, _
Height:!)
'défini le bouton comme objet
'et le paramètre
Set Btn = Ctrl.Object
With Btn
.Name = "MonBouton"
.Caption = "Bouton pour Vince"
End With
'écrit le code dans le module de la feuille
'de calcul recevant le bouton
Code = "Private Sub MonBouton_Click()" & vbCrLf
Code = Code & " msgbox ""Salut Vince ;o)""" & vbCrLf
Code = Code & "End Sub" & vbCrLf

With ThisWorkbook.VBProject.VBComponents _
(Fe.CodeName).CodeModule
.InsertLines .CountOfLines + 1, Code
End With

End With

Application.ScreenUpdating = True

Set Fe = Nothing
Set Ctrl = Nothing
Set Btn = Nothing
End Sub


Hervé


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!


Ma macro crée un bouton dans la feuille active avec la commande suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True
_

, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25, Height
_

:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"

est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince







Avatar
jps
je me réponds à moi-même : bien sûr, espèce de sinistre crétin, puisqu'ils
disent tous que ça marche...t'es pas près d'être MVP, pauvre demeuré
jps

"jps" a écrit dans le message de news:
%
le "." après CommandButton est-il dans la ligne ci-dessous, bien normal?

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1", Link:=True

jps

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

Attends, une fois que le bouton a été créé, tu cliques dessus et le mot
"test" s'affiche en L1 chez toi ?

Chez moi il ne se passe rien, je peux cliquer 20'000x sur le bouton,
nada...


Salut Vince,

chez moi, cela fonctionne parfaitement,

les 2 macros Sub test() et Private Sub commandbutton1_click() sont dans
le
code d'une feuille.

'***********************************************************
Option Explicit
Sub test()
ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True _
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25,
Height _
:T).Select
End Sub

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

'***********************************************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


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

Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!

Ma macro crée un bouton dans la feuille active avec la commande
suivante:

ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True
_
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25,
Height _
:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait
clique
droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"
est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en
majuscules...

Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince












Avatar
Hervé
Salut Vince,
Normalement, une fois la référence cochée elle doit le rester surtout si un
objet y fait référence ???
Tu peut toujours la charger à partir de Workbook_Open en exécutant le code
ci-dessous :

Private Sub Workbook_Open()
AjouterReference
End Sub

Sub AjouterReference()
'Microsoft Visual Basic 6.0 Extensibility
'évite l'erreur si elle est déjà ajoutée
On Error Resume Next
Application.VBE.ActiveVBProject.References _
.AddFromFile "C:WindowsSystem32FM20.DLL"
End Sub

Hervé.


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

C'est bon j'ai trouvé où cocher et ça marche nickel!

Le problème est que le cochage ne reste pas et que je dois donc à chaque
fois aller recocher le truc... c'est un peu embêtant...

T'aurais pas une idée ? peut-être une ligne de code ou un fichier .dll à
déplacer ?

Merci d'avance de ton aide.

Bon week-end

Vince




Bonjour Vince,

Avec ce code, le bouton est créé et le code écrit dans la feuille.
Teste.


Attention, coche la référence Forms 2.0 :

Sub Bouton()
'Cocher la référence Microsoft Forms 2.0 Object Library
Dim Fe As Worksheet
Dim Ctrl As OLEObject
Dim Btn As MSForms.CommandButton
Dim Code As String

Application.ScreenUpdating = False
'défini la feuille recevant le bouton
Set Fe = ActiveSheet
'création du bouton avec position et
'taille
With Fe
Set Ctrl = .OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", _
Link:úlse, _
DisplayAsIcon:úlse, _
Left:=6, _
Top:E, _
Width:8, _
Height:!)
'défini le bouton comme objet
'et le paramètre
Set Btn = Ctrl.Object
With Btn
.Name = "MonBouton"
.Caption = "Bouton pour Vince"
End With
'écrit le code dans le module de la feuille
'de calcul recevant le bouton
Code = "Private Sub MonBouton_Click()" & vbCrLf
Code = Code & " msgbox ""Salut Vince ;o)""" & vbCrLf
Code = Code & "End Sub" & vbCrLf

With ThisWorkbook.VBProject.VBComponents _
(Fe.CodeName).CodeModule
.InsertLines .CountOfLines + 1, Code
End With

End With

Application.ScreenUpdating = True

Set Fe = Nothing
Set Ctrl = Nothing
Set Btn = Nothing
End Sub


Hervé


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



Bonjour

C'est encore moi (4e post en 2 jours...:)). Merci à tous de vos
contributions!


Ma macro crée un bouton dans la feuille active avec la commande
suivante:




ActiveSheet.OLEObjects.Add(Classtype:="Forms.CommandButton.1",
Link:=True



_
, DisplayAsIcon:úlse, Left:p0, Top:P, Width:8.25,
Height



_
:T).Select

Cela fonctionne bien, le bouton se crée au bon endroit.

Le problème est que lorsqu'on clique dessus, rien ne se passe...

Private Sub commandbutton1_click()
Range("L1").Select
ActiveCell.FormulaR1C1 = "Test"
End Sub

Il me semble que le bouton est créé bizarrement car quand on fait
clique



droit dessus, le menu "View Code" n'apparaît pas et la ligne "assign
macro"

est grisée...

De plus il n'a pas l'air d'être reconnu car la ligne Private Sub
commandbutton1_click() ne s'est pas mise automatiquement en
majuscules...




Est-ce quelqu'un peut me dire si j'ai oublié des arguments ?

merci à tous et bon week-end

Vince