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

creation de 200 boutons

13 réponses
Avatar
Olivier
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

Merci de m'aider
Olivier

10 réponses

1 2
Avatar
michdenis
Avant de faire une macro qui crée 150 boutons de commande,
pourquoi pas nous dire le rôle que ces boutons doivent remplir
dans ton application... il y a peut être moyen d'éviter autant de bouton.

Pour le décompte des objets dans excel... si tu effaces tous tes boutons
tu dois fermer ton classeur pour qu'excel reparte son compteur à zéro.



"Olivier" a écrit dans le message de groupe de discussion :
49847152$0$28671$
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

Merci de m'aider
Olivier
Avatar
LSteph
Bonjour,

voici un exemple dont l'objectif était un peu différent
mais pour ce qui est de manipuler un ensemble de boutons
avec module de classe voilà qui pourrait t'inspirer:

http://cjoint.com/?ccrwgUhL5z

--
lSteph

'thisworkbook

Option Explicit

Private Sub Workbook_Open()
Call InitCButtons
End Sub

'module de classe Classboutton


Option Explicit

Public WithEvents myButs As CommandButton


Private Sub myButs_Click()
Feuil1.Activate 'uniquement pour 97

Call Remplit(myButs.Caption, myButs.BackColor)

End Sub

'Feuil1

Option Explicit

Private Sub Worksheet_Activate()
Call InitCButtons
End Sub


'module standard Action1
Option Explicit

Dim CButtons() As ClassBouton

Sub InitCButtons()
Dim myB As OLEObject, CmdB As MSForms.CommandButton
Dim i As Integer
For Each myB In Feuil1.OLEObjects
If TypeOf myB.Object Is CommandButton Then
i = i + 1
ReDim Preserve CButtons(1 To i)
Set CButtons(i) = New ClassBouton
Set CButtons(i).myButs = myB.Object
End If
Next myB
End Sub
Sub Remplit(mytext As String, myc)
Dim C As Range, isect As Range, i As Integer
On Error GoTo fin:
Set isect = Intersect([maplage], Selection)
If Not isect Is Nothing Then
Application.ScreenUpdating = False
With isect
For Each C In .Cells
i = i + 1
C.Activate 'uniquement pour 97
C = mytext
C.Interior.Color = myc
C.Font.Color = myc

Next C
If .Columns(1).Cells.Count < 2 Then
.Cells(1).Font.ColorIndex = 1
Else
.Cells(2, CInt((.Columns.Count + 1) / 2)) _
.Font.ColorIndex = 1
End If
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.BorderAround ColorIndex:=1, Weight:=xlMedium
End With
End If
fin:
InitCButtons
End Sub
Sub Voir_QuandClic()
With Feuil1.PageSetup
.CenterHeader = "&G &18" & String(5, Chr(10)) & Chr(10) & [G8]
.LeftHeader = "&G &18" & [g11] & String(2, Chr(10)) & [e9] & Chr(10) & [G9]
.RightHeader = "&G &18" & [e10] & " " & [g10].Value

End With
ActiveSheet.PrintPreview
End Sub

'modulestandard Conception1

Option Explicit
'Option Private Module

Sub LitB()
Dim i As Integer
With [MATIERES]
For i = 1 To .Cells.Count
Feuil1.OLEObjects("CommandButton" & i).Object.Caption = .Cells(i)
Next
End With
End Sub

Sub ColorB()
Dim i As Integer
With [MATIERES]
For i = 1 To .Cells.Count
Feuil1.OLEObjects("CommandButton" & i).Object.BackColor =
.Cells(i).Interior.Color

Next
End With
End Sub


Sub Réinitialiser_QuandClic()

Call LitB
Call ColorB
[maplage].ClearContents
[maplage].Interior.ColorIndex = xlNone
[maplage].Borders(xlInsideVertical).LineStyle = xlNone
[maplage].Borders(xlInsideHorizontal).LineStyle = xlNone
Call InitCButtons
End Sub
Sub Réactiver_QuandClic()

Call InitCButtons
End Sub



Olivier a écrit :
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

Merci de m'aider
Olivier





Avatar
Olivier
Bonjour,
j'ai en Feuille 3, une tableau avec des noms de profs en colonne A, leur
email en colonne C et en colonne D,E,F,G et suivantes les différentes
classes qu'ils ont.
En Feuille 1, je veux mettre les 100 classes en boutons (j'ai la liste en
Feuill2 colonne A)
Lorsqu'on clique sur un bouton (par exemple 3eme7), la macro qui est lancé
va rechercher tout les profs qui ont la 3eme7 et créer une chaine de
caractere de la forme "email1;email2;email3;email4"
si la 3eme7 a 4 profs (en vue d'écrire ensuite à tous les profs de la
3eme7).
Je vais même plus loin : si je clique sur les boutons 3eme7, 6eme4 et 3eme2,
la macro va faire la même chose mais en évitant de mettre 2 fois l'email du
même prof qui aurait par exemple 2 de ces classes.
Tout marche impeccable.
Il ne me reste plus qu'à construire les boutons avec les classes en
feuille1. (je l'ai expérimenté avec 10 boutons créés manuellement et tout
marche).
J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
construire à une macro mais ça je n'y arrive pas...
Voila mon problème
Merci




fait un tableau
"michdenis" a écrit dans le message de news:

Avant de faire une macro qui crée 150 boutons de commande,
pourquoi pas nous dire le rôle que ces boutons doivent remplir
dans ton application... il y a peut être moyen d'éviter autant de bouton.

Pour le décompte des objets dans excel... si tu effaces tous tes boutons
tu dois fermer ton classeur pour qu'excel reparte son compteur à zéro.



"Olivier" a écrit dans le message de groupe
de discussion :
49847152$0$28671$
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

Merci de m'aider
Olivier



Avatar
Modeste
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
Avatar
LSteph
ça n'a plus rien à voir avec ta demande initiale et tu te contentes de
te justifier du fait que tu utilises 200 boutons , ainsi réagir à une
démarche peu constructive en apparence mais pourtant elle est de bon
sens. Il a raison Md qu'est ce que tu vas faire avec deux cent boutons 1
combo suffit.

En+ si les autres réponses ne t'intéressent pas ... tu pourrais au moins
faire comme si!

> J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
> construire à une macro

Et en plus c'est dedans, le plus simple t'as qu'a essayer , lire..

Y en a marre de donner de la confiture aux cochons!

Si ça continue je vais rejoindre la clan des bannis.

--
lSteph


Olivier a écrit :
Bonjour,
j'ai en Feuille 3, une tableau avec des noms de profs en colonne A, leur
email en colonne C et en colonne D,E,F,G et suivantes les différentes
classes qu'ils ont.
En Feuille 1, je veux mettre les 100 classes en boutons (j'ai la liste en
Feuill2 colonne A)
Lorsqu'on clique sur un bouton (par exemple 3eme7), la macro i est lancé
va rechercher tout les profs qui ont la 3eme7 et créer une chaine de
caractere de la forme "email1;email2;email3;email4"
si la 3eme7 a 4 profs (en vue d'écrire ensuite à tous les profs de la
3eme7).
Je vais même plus loin : si je clique sur les boutons 3eme7, 6eme4 et 3eme2,
la macro va faire la même chose mais en évitant de mettre 2 fois l'email du
même prof qui aurait par exemple 2 de ces classes.
Tout marche impeccable.
Il ne me reste plus qu'à construire les boutons avec les classes en
feuille1. (je l'ai expérimenté avec 10 boutons créés manuellement et tout
marche).
J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
construire à une macro mais ça je n'y arrive pas...
Voila mon problème
Merci




fait un tableau
"michdenis" a écrit dans le message de news:

Avant de faire une macro qui crée 150 boutons de commande,
pourquoi pas nous dire le rôle que ces boutons doivent remplir
dans ton application... il y a peut être moyen d'éviter autant de bouton.

Pour le décompte des objets dans excel... si tu effaces tous tes boutons
tu dois fermer ton classeur pour qu'excel reparte son compteur à zéro.



"Olivier" a écrit dans le message de groupe
de discussion :
49847152$0$28671$
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

Merci de m'aider
Olivier







Avatar
Olivier
Oh là ! On se calme !
J'essaye tant bien que mal de me débrouiller seul avec tous mes problèmes et
mes idées ! Je suis loin d'être expert dans l'utilisation d'Excel ! Je
cherche surtout à apprendre en même temps que je progresse, c'est pour cette
raison que je ne donne pas tout ce que mon classeur doit faire (je ne veux
pas que qqu'un fasse tout à ma place). J'ai d'ailleurs comme dit
précédemment tout fait à part la mise en place de mes boutons. Je peux le
faire à la main mais ce sera plus long donc je voulais un raccourci. J'ai
vraiment du mal avec ces Shapes...
J'ai bien vu ton message avec l'exemple mais je suis en train de l'étudier
car je ne comprends pas tout ce qui se passe. Il me semble intéressant comme
tout ce qui se trouve dans ce forum d'ailleurs. Mais je ne veux pas faire du
copier-coller, je veux comprendre ce qui se passe à chaque ligne.
Par contre, c'est vrai que je n'avais pas penser à des cases à cocher. C'est
peut être plus simple. Je vais chercher pour voir si je peux automatiser la
création de ceci.
Quand à tes 3 dernières phrases, j'ai rien compris...
Bon je vais me coucher
Olivier


"LSteph" a écrit dans le message de news:
u044th$
ça n'a plus rien à voir avec ta demande initiale et tu te contentes de te
justifier du fait que tu utilises 200 boutons , ainsi réagir à une
démarche peu constructive en apparence mais pourtant elle est de bon sens.
Il a raison Md qu'est ce que tu vas faire avec deux cent boutons 1 combo
suffit.

En+ si les autres réponses ne t'intéressent pas ... tu pourrais au moins
faire comme si!

> J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
> construire à une macro

Et en plus c'est dedans, le plus simple t'as qu'a essayer , lire..

Y en a marre de donner de la confiture aux cochons!

Si ça continue je vais rejoindre la clan des bannis.

--
lSteph


Olivier a écrit :
Bonjour,
j'ai en Feuille 3, une tableau avec des noms de profs en colonne A, leur
email en colonne C et en colonne D,E,F,G et suivantes les différentes
classes qu'ils ont.
En Feuille 1, je veux mettre les 100 classes en boutons (j'ai la liste en
Feuill2 colonne A)
Lorsqu'on clique sur un bouton (par exemple 3eme7), la macro i est lancé
va rechercher tout les profs qui ont la 3eme7 et créer une chaine de
caractere de la forme "email1;email2;email3;email4"
si la 3eme7 a 4 profs (en vue d'écrire ensuite à tous les profs de la
3eme7).
Je vais même plus loin : si je clique sur les boutons 3eme7, 6eme4 et
3eme2, la macro va faire la même chose mais en évitant de mettre 2 fois
l'email du même prof qui aurait par exemple 2 de ces classes.
Tout marche impeccable.
Il ne me reste plus qu'à construire les boutons avec les classes en
feuille1. (je l'ai expérimenté avec 10 boutons créés manuellement et tout
marche).
J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
construire à une macro mais ça je n'y arrive pas...
Voila mon problème
Merci




fait un tableau
"michdenis" a écrit dans le message de news:

Avant de faire une macro qui crée 150 boutons de commande,
pourquoi pas nous dire le rôle que ces boutons doivent remplir
dans ton application... il y a peut être moyen d'éviter autant de
bouton.

Pour le décompte des objets dans excel... si tu effaces tous tes boutons
tu dois fermer ton classeur pour qu'excel reparte son compteur à zéro.



"Olivier" a écrit dans le message de
groupe de discussion :
49847152$0$28671$
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

Merci de m'aider
Olivier








Avatar
michdenis
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
Avatar
Jacquouille
Stéphane, retournez vous asseoir à votre place. Et en vitesse!
As-tu vu le Nouvel An, en Arago ?

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"LSteph" a écrit dans le message de news:
u044th$
ça n'a plus rien à voir avec ta demande initiale et tu te contentes de te
justifier du fait que tu utilises 200 boutons , ainsi réagir à une
démarche peu constructive en apparence mais pourtant elle est de bon sens.
Il a raison Md qu'est ce que tu vas faire avec deux cent boutons 1 combo
suffit.

En+ si les autres réponses ne t'intéressent pas ... tu pourrais au moins
faire comme si!

> J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
> construire à une macro

Et en plus c'est dedans, le plus simple t'as qu'a essayer , lire..

Y en a marre de donner de la confiture aux cochons!

Si ça continue je vais rejoindre la clan des bannis.

--
lSteph


Olivier a écrit :
Bonjour,
j'ai en Feuille 3, une tableau avec des noms de profs en colonne A, leur
email en colonne C et en colonne D,E,F,G et suivantes les différentes
classes qu'ils ont.
En Feuille 1, je veux mettre les 100 classes en boutons (j'ai la liste en
Feuill2 colonne A)
Lorsqu'on clique sur un bouton (par exemple 3eme7), la macro i est lancé
va rechercher tout les profs qui ont la 3eme7 et créer une chaine de
caractere de la forme "email1;email2;email3;email4"
si la 3eme7 a 4 profs (en vue d'écrire ensuite à tous les profs de la
3eme7).
Je vais même plus loin : si je clique sur les boutons 3eme7, 6eme4 et
3eme2, la macro va faire la même chose mais en évitant de mettre 2 fois
l'email du même prof qui aurait par exemple 2 de ces classes.
Tout marche impeccable.
Il ne me reste plus qu'à construire les boutons avec les classes en
feuille1. (je l'ai expérimenté avec 10 boutons créés manuellement et tout
marche).
J'ai la flemme de construire les 100 boutons d'où mon idée de le faire
construire à une macro mais ça je n'y arrive pas...
Voila mon problème
Merci




fait un tableau
"michdenis" a écrit dans le message de news:

Avant de faire une macro qui crée 150 boutons de commande,
pourquoi pas nous dire le rôle que ces boutons doivent remplir
dans ton application... il y a peut être moyen d'éviter autant de
bouton.

Pour le décompte des objets dans excel... si tu effaces tous tes boutons
tu dois fermer ton classeur pour qu'excel reparte son compteur à zéro.



"Olivier" a écrit dans le message de
groupe de discussion :
49847152$0$28671$
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

Merci de m'aider
Olivier








Avatar
Jacquouille
Tu trouves que 200 boutons c'est joli?
Demandes un peu à un ado ? -)

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"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



Avatar
LSteph
Bonsoir,

Merci mon bon berger et désolé pour ce mouvement d'humeur mais sur le
coup ça m'a fait du bien.
Au fait! C'est quoi: le Nouvel An, en Arago ?
Tu parles du Nouvel An chinois, c'est l'année du buffle, mais pour la
fête c'est passé je crois.

--
lSteph



Jacquouille a écrit :
Stéphane, retournez vous asseoir à votre place. Et en vitesse!
As-tu vu le Nouvel An, en Arago ?



1 2