Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives

Advertisement

 
 
LinkBack Outils de la discussion
Vieux 25/06/2004, 16h11   #1 (permalink)
Thaloc
Guest
 
Messages: n/a
Par défaut Boutons génériquement dynamique

Bien le bonjour a tous, Grands dieux du VBA. Aujourd'hui on va tester vos connaissances. t1cable:

Voila ce que je veux faire :
dans un MODULE (pas de prog dans la feuille xls), je veux creer une boucle qui me fait 10 boutons. Ces dix boutons se placent sur une FEUILLE excel (pas un userform), les uns derriere les autres.

Ces boutons, ils sont bien jolis, mais pour le moment ils servent pas a grand chose. Donc je voudrais leur mettre un lien quand on clique dessus
Du coup je crée une fonction qui colorie une case de ma feuille.
Mais bon, comme je suis un vrai dieu de la prog, je voudrais bien, que, selon le bouton sur lequel on appuie, ca ne colorie pas de la meme couleur.
Attention, je veux faire ca de facon générique (c'est bien sur facile de coder en dur les actions différentes. Non moi je voudrais etre malin, et que ma fonction lancé au clic de bouton, ait des arguments, ou pas le meme lancement d'action.

Comment faire ? Apres 1 semaine de galere, je suis tout perdu et j'ai graneement besoin d'aide avant de tuer mon PC a coups de barreaux de chaises.

----------------------
Pour mieux comprendre, je met un bout de code de mon super programme (qui en vrai est bien plus compliquer, mais la c'est un exemple simple)
----------------------
Public s As Shape

Sub procédure()

For i = 2 to 11

'crée le bouton
Cells(i,2).Select
Set s = Worsheets(1).Shapes.AddFormControl(xlButtonControl , Selection.Left, Selection.Top, Selection.Width, Selection.Height)
s.textFrame.Charaters.Caption = "bouton " & i
s.OnAction = "Clic" '<== MON PROBLEME !

Next

End Sub

Function Clic()

'detecte le nom du bouton
'la je sais pas faire

'execute ces actions selon le bouton
ActiveCell.select
Selection.Interior.ColorIndex = 30 'ca c'est du rouge pas bo !
Cells(1,1).Value = s.Name

End Function

-------------------

Voila pour le code. Je reprécise bien qu'il s'agit de boutons créés dans un module.
En gros je voudrais faire un : OnAction = "Clic(nunméroBouton)"

Voila, si vous connaissez d'autres moyens de faire la meme chose, alors je suis preneur, et je ferais meme une danse de la victoire pour mon sauveur !

Amicalement a tous,


Thaloc
 
ANNONCES
Vieux 26/06/2004, 08h21   #2 (permalink)
michel
Guest
 
Messages: n/a
Par défaut Re: Boutons génériquement dynamique

bonjour Thaloc

j'espere que l'adaptation ci joint pourra t'aider


Option Explicit
Public Btn As String

Sub Procedure()
Dim i As Byte
Dim NextLine As Integer
Dim Code As String
Dim s As Shape

For i = 2 To 11

'création des boutons
Set s = Worksheets(1).Shapes.AddFormControl(xlButtonContro l, Cells(i, 2).Left, Cells(i, 2).Top, Cells(i, 2).Width, Cells(i, 2).Height)
s.TextFrame.Characters.Caption = "bouton " & i
s.OnAction = "MacroBouton" & i

Code = "Sub MacroBouton" & i & vbCrLf 'creation d'une macro pour chaque nouveau bouton
Code = Code & "Btn=""bouton" & i & "" & vbCrLf
Code = Code & "Clic" & vbCrLf
Code = Code & "End Sub"

'insertion des macros dans le **Module1** adapter le nom du module si nécessaire
With ThisWorkbook.VBProject.VBComponents("Module1").Cod eModule
NextLine = .CountOfLines + 1
.InsertLines NextLine, Code
End With

Next

End Sub

Sub Clic() 'exemple de macro associée au clic sur le bouton
With Range("A1")
.Interior.ColorIndex = 7
.Value = Btn
End With
End Sub



bon week end
MichelXld
 
Vieux 28/06/2004, 11h20   #3 (permalink)
Thaloc
Guest
 
Messages: n/a
Par défaut Re: Boutons génériquement dynamique

Merci bien, je pense que ca peut m'aider. J'avais déjà essayé un exemple de ce type, mais ton code me parait plus approprié a mon probleme.

Maintenant reste un petit soucis technique.
A l'execution de ton programme, il me met : "Le programme n'est pas fiable", concernant l'ouverture du VBProject.VBComponents

Sans doute un probleme de reference ? ou autre chose ?
Merci d'avance.


Thaloc
 
Vieux 28/06/2004, 18h46   #4 (permalink)
michel
Guest
 
Messages: n/a
Par défaut Re: Boutons génériquement dynamique

bonjour Thaloc

tu vas dans le menu Outils
Options
onglet sécurité
bouton "Sécurité des macros"
onglet sources fiables
coches l'option "faire confiance au projet visual basic"

j'espere que cela pourra t'aider


bonne soiree
MichelXld
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 21h09.


(C) 2006 Excel Downloads