![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
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 | |
|
|