Bonjour,
j'ai en feuille2 en colonne A une liste de 150 mots.
Mon but est de faire une macro qui me crée sur la feuille1, 150 boutons de
formulaires portant le nom de ces mots.
Tous les boutons permettent d'ouvrir la même macro (et de faire passer le
mot qui est sur bouton en paramètre).
La macro pourrait être par exemple (en faite, elle fait beaucoup plus de
trucs)
Sub macro1
msgbox
Worksheets("Feuil1").Shapes(Application.Caller).OLEFormat.Object.Caption
End sub
Si quelqu'un peut m'aider...
PS : Je veux des boutons de formulaires car j'ai remarqué qu'il était facile
d'affecter la même macro à tous les boutons. Je ne sais pas faire avec des
boutons de commandes.
PS2 : De plus, je galère beaucoup (mais ca fera peut être l'objet d'un autre
fil) sur le numéro des boutons qui ne reviennent pas à 0.
Par exemple, j'ai effacé tous les boutons qu'il y a sur ma feuille mais
lorsque j'en crée un nouveau, il porte le numéro Bouton 75 (j'ai fait avant
plusieurs essais). Si je l'efface et que j'en crée un autre, il portera le
n° 76. Du coup je ne peux pas faire quelque chose du style :
ActiveSheet.Shapes(numero_du_bouton).Characters.Text =
Worksheets("Feuil2").cells(numero_du_bouton,1).value
Super, c'est exactement ce que je voulais. Ca m'a permis de bien avancer dans mon projet. Je voudrais le peaufiner un peu mais j'ai du mal. Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la cellule (de la colonne A) d'une certaine couleur et je voudrais que le bouton créé ait cette couleur. J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par .Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex la couleur change effectivement en fonction de la couleur de la cellule mais ce n'est pas la même. L'aide de Excel sur la fonction SchemeColor est très légère et une recherche sur le net m'apprends que "Schemecolor est la propriété qui permet de faire appel aux index de couleur de colorindex. En d'autres termes, c'est les mêmes index." Je ne comprends donc pas pourquoi ce n'est pas la même couleur. J'ai bien essayé de remplacer SchemeColor par IndexColor et vice-versa mais sans succès. As-tu une idée ? Merci
Olivier
"michdenis" a écrit dans le message de news:
Juste pour le plaisir ;-)
Voici une autre version (syntaxe) des boutons(très beau en passant)
J'ai supposé que tu avais tes données en colonne A:A et que tu voulais tes boutons en B:B '------------------------------ Sub test() Dim C As Range With Feuil3 'Nom de la feuille à adapter 'C'est la propriété Name de la feuille et non le nom de l'onglet With .Range("B1:B" & .Range("A65536").End(xlUp).Row) Application.ScreenUpdating = False For Each C In .Cells With .Parent.Shapes.AddShape(msoShapeBevel, C.Left, C.Top, C.Width, C.Height) .Fill.ForeColor.SchemeColor = 22 .Fill.BackColor.SchemeColor = 55 .Fill.Transparency = 0# .Fill.TwoColorGradient msoGradientFromCenter, 1 .Fill.ForeColor.SchemeColor = 22 .OLEFormat.Object.Caption = C.Offset(, -1) .OLEFormat.Object.OnAction = "Bouton_Click" End With Next End With End With End Sub '------------------------------
"Modeste" a écrit dans le message de groupe de discussion : eSLXrM$ Bonsour® Olivier
j'ai en feuille2 en colonne A une liste de 150 mots. Mon but est de faire une macro qui me crée sur la feuille1, 150 boutons de formulaires portant le nom de ces mots. Tous les boutons permettent d'ouvrir la même macro (et de faire passer le mot qui est sur bouton en paramètre).
Sub creeBouton() Dim cell As Range ' For Each cell In Selection With cell ActiveSheet.Shapes.AddShape(msoShapeBevel, .Left, .Top, .Width, .Height).Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 22 Selection.ShapeRange.Fill.BackColor.SchemeColor = 55 Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Fill.TwoColorGradient msoGradientFromCenter, 1 Selection.ShapeRange.Line.ForeColor.SchemeColor = 22 Selection.Characters.Text = cell.Text Selection.Name = "Button_" & cell.Text Selection.OnAction = "Bouton_Click" DoEvents End With Next End Sub '------------------ Sub Bouton_click() MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address, vbInformation, Application.Caller End Sub
Super, c'est exactement ce que je voulais. Ca m'a permis de bien avancer
dans mon projet. Je voudrais le peaufiner un peu mais j'ai du mal.
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la
cellule (de la colonne A) d'une certaine couleur et je voudrais que le
bouton créé ait cette couleur.
J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par
.Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex
la couleur change effectivement en fonction de la couleur de la cellule mais
ce n'est pas la même.
L'aide de Excel sur la fonction SchemeColor est très légère et une recherche
sur le net m'apprends que "Schemecolor est la propriété qui permet de faire
appel aux index de couleur de colorindex. En d'autres termes, c'est les
mêmes index."
Je ne comprends donc pas pourquoi ce n'est pas la même couleur. J'ai bien
essayé de remplacer SchemeColor par IndexColor et vice-versa mais sans
succès.
As-tu une idée ?
Merci
Olivier
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
5563E5F9-94C2-45F5-83B7-96FEB3EEB81E@microsoft.com...
Juste pour le plaisir ;-)
Voici une autre version (syntaxe) des boutons(très beau en passant)
J'ai supposé que tu avais tes données en colonne A:A
et que tu voulais tes boutons en B:B
'------------------------------
Sub test()
Dim C As Range
With Feuil3 'Nom de la feuille à adapter
'C'est la propriété Name de la feuille et non le nom de l'onglet
With .Range("B1:B" & .Range("A65536").End(xlUp).Row)
Application.ScreenUpdating = False
For Each C In .Cells
With .Parent.Shapes.AddShape(msoShapeBevel, C.Left, C.Top, C.Width,
C.Height)
.Fill.ForeColor.SchemeColor = 22
.Fill.BackColor.SchemeColor = 55
.Fill.Transparency = 0#
.Fill.TwoColorGradient msoGradientFromCenter, 1
.Fill.ForeColor.SchemeColor = 22
.OLEFormat.Object.Caption = C.Offset(, -1)
.OLEFormat.Object.OnAction = "Bouton_Click"
End With
Next
End With
End With
End Sub
'------------------------------
"Modeste" <GD@libre.fr> a écrit dans le message de groupe de discussion :
eSLXrM$gJHA.4220@TK2MSFTNGP06.phx.gbl...
Bonsour® Olivier
j'ai en feuille2 en colonne A une liste de 150 mots.
Mon but est de faire une macro qui me crée sur la feuille1, 150
boutons de formulaires portant le nom de ces mots.
Tous les boutons permettent d'ouvrir la même macro (et de faire
passer le mot qui est sur bouton en paramètre).
Sub creeBouton()
Dim cell As Range '
For Each cell In Selection
With cell
ActiveSheet.Shapes.AddShape(msoShapeBevel, .Left, .Top, .Width,
.Height).Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 22
Selection.ShapeRange.Fill.BackColor.SchemeColor = 55
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Fill.TwoColorGradient msoGradientFromCenter, 1
Selection.ShapeRange.Line.ForeColor.SchemeColor = 22
Selection.Characters.Text = cell.Text
Selection.Name = "Button_" & cell.Text
Selection.OnAction = "Bouton_Click"
DoEvents
End With
Next
End Sub
'------------------
Sub Bouton_click()
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address,
vbInformation,
Application.Caller
End Sub
Super, c'est exactement ce que je voulais. Ca m'a permis de bien avancer dans mon projet. Je voudrais le peaufiner un peu mais j'ai du mal. Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la cellule (de la colonne A) d'une certaine couleur et je voudrais que le bouton créé ait cette couleur. J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par .Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex la couleur change effectivement en fonction de la couleur de la cellule mais ce n'est pas la même. L'aide de Excel sur la fonction SchemeColor est très légère et une recherche sur le net m'apprends que "Schemecolor est la propriété qui permet de faire appel aux index de couleur de colorindex. En d'autres termes, c'est les mêmes index." Je ne comprends donc pas pourquoi ce n'est pas la même couleur. J'ai bien essayé de remplacer SchemeColor par IndexColor et vice-versa mais sans succès. As-tu une idée ? Merci
Olivier
"michdenis" a écrit dans le message de news:
Juste pour le plaisir ;-)
Voici une autre version (syntaxe) des boutons(très beau en passant)
J'ai supposé que tu avais tes données en colonne A:A et que tu voulais tes boutons en B:B '------------------------------ Sub test() Dim C As Range With Feuil3 'Nom de la feuille à adapter 'C'est la propriété Name de la feuille et non le nom de l'onglet With .Range("B1:B" & .Range("A65536").End(xlUp).Row) Application.ScreenUpdating = False For Each C In .Cells With .Parent.Shapes.AddShape(msoShapeBevel, C.Left, C.Top, C.Width, C.Height) .Fill.ForeColor.SchemeColor = 22 .Fill.BackColor.SchemeColor = 55 .Fill.Transparency = 0# .Fill.TwoColorGradient msoGradientFromCenter, 1 .Fill.ForeColor.SchemeColor = 22 .OLEFormat.Object.Caption = C.Offset(, -1) .OLEFormat.Object.OnAction = "Bouton_Click" End With Next End With End With End Sub '------------------------------
"Modeste" a écrit dans le message de groupe de discussion : eSLXrM$ Bonsour® Olivier
j'ai en feuille2 en colonne A une liste de 150 mots. Mon but est de faire une macro qui me crée sur la feuille1, 150 boutons de formulaires portant le nom de ces mots. Tous les boutons permettent d'ouvrir la même macro (et de faire passer le mot qui est sur bouton en paramètre).
Sub creeBouton() Dim cell As Range ' For Each cell In Selection With cell ActiveSheet.Shapes.AddShape(msoShapeBevel, .Left, .Top, .Width, .Height).Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 22 Selection.ShapeRange.Fill.BackColor.SchemeColor = 55 Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Fill.TwoColorGradient msoGradientFromCenter, 1 Selection.ShapeRange.Line.ForeColor.SchemeColor = 22 Selection.Characters.Text = cell.Text Selection.Name = "Button_" & cell.Text Selection.OnAction = "Bouton_Click" DoEvents End With Next End Sub '------------------ Sub Bouton_click() MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address, vbInformation, Application.Caller End Sub
Modeste
Bonsour® Olivier
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la cellule (de la colonne A) d'une certaine couleur et je voudrais que le bouton créé ait cette couleur. J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par .Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex la couleur change effectivement en fonction de la couleur de la cellule mais ce n'est pas la même.
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la
cellule (de la colonne A) d'une certaine couleur et je voudrais que le
bouton créé ait cette couleur.
J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par
.Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex
la couleur change effectivement en fonction de la couleur de la
cellule mais ce n'est pas la même.
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la cellule (de la colonne A) d'une certaine couleur et je voudrais que le bouton créé ait cette couleur. J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par .Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex la couleur change effectivement en fonction de la couleur de la cellule mais ce n'est pas la même.
Merci ! C'est pas facile à trouver tout seul ! Ce serait plus simple si il n'y avait pas ce décalage de 7. Olivier
"Modeste" a écrit dans le message de news:
Bonsour® Olivier
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la cellule (de la colonne A) d'une certaine couleur et je voudrais que le bouton créé ait cette couleur. J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par .Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex la couleur change effectivement en fonction de la couleur de la cellule mais ce n'est pas la même.
Merci !
C'est pas facile à trouver tout seul ! Ce serait plus simple si il n'y avait
pas ce décalage de 7.
Olivier
"Modeste" <GD@libre.fr> a écrit dans le message de news:
e4JFOjXhJHA.2516@TK2MSFTNGP05.phx.gbl...
Bonsour® Olivier
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la
cellule (de la colonne A) d'une certaine couleur et je voudrais que le
bouton créé ait cette couleur.
J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par
.Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex
la couleur change effectivement en fonction de la couleur de la
cellule mais ce n'est pas la même.
Merci ! C'est pas facile à trouver tout seul ! Ce serait plus simple si il n'y avait pas ce décalage de 7. Olivier
"Modeste" a écrit dans le message de news:
Bonsour® Olivier
Je mets, en plus du nom que je veux voir apparaitre sur le bouton, la cellule (de la colonne A) d'une certaine couleur et je voudrais que le bouton créé ait cette couleur. J'ai remplacé ta ligne
.Fill.ForeColor.SchemeColor = 22
par .Fill.ForeColor.SchemeColor = C.Offset(, -1).Interior.ColorIndex la couleur change effectivement en fonction de la couleur de la cellule mais ce n'est pas la même.