Excel: boucle pour plusieurs commandbutton - VB/VBA/VBS - Programmation
Marsh Posté le 22-07-2009 à 09:12:31
Tu mets tous tes boutons dans un tableau/collection et tu le parcours ensuite.
Marsh Posté le 22-07-2009 à 10:33:11
Merci Deamon pour ta réponse
Si j'ai bien compris, il faut créer une variable du style :
Dim BoutonVar(38) as String
Puis donner une valeur à chaque collection
BoutonVar(1)=CommandButton1
...
...
...
BoutonVar(38)=CommandButton38
Et l'utiliser dans la boucle avec par exemple
For i = 1 to 38
BoutonVar(i).caption=cells(8+i*3,54)
Next
Est-ce bien ca? Désolé mais je n'ai jamais utilisé de collection.
Merci encore.
Bonne journée
Corranh9
Marsh Posté le 22-07-2009 à 11:30:05
Bonjour
je dirais que la méthode de Deamon est la plus propre, mais ce que tu as fait fonctionne parfaitement.
J'ai fait ce test, aucun souci, si ce n'est que forcement, si tu as un trou dans tes CommandButton (genre tu passes de CommandButton1 à CommandButton3) ca pose souci, surement ce que tu as.
Code :
|
Marsh Posté le 12-09-2012 à 09:38:08
Bonjour,
J'ai des notions de VB sous excel, mais je ne maîtrise pas du tout les collections, group, et autres oleobjects.
J'ai essayé vos deux solutions, mais elle ne marchent pas, est-ce parce que je travaille dans une userform? (c'est la que sont mes boutons).
il dit: "Membre de méthode ou de donnée introuvable"
en indiquant l'erreur là ou c'est en gras:
For i = 6 To 10
UserForm2.OLEObjects("CommandButton" & i).Object.Size = 20
Next
Est-ce que j'ai mal compris quelque chose?
Merci d'avance,
Marsh Posté le 12-09-2012 à 10:34:04
Bonjour,
Tu peux parcourir les contrôles de ton userform grâce à la collection Controls :
Code :
|
Marsh Posté le 22-07-2009 à 08:41:04
Bonjour à tous,
Je suis débutant pour les macros excel et j'aurai besoin de votre aide.
J'ai créé un classeur et y est incorporé 38 boutons dont le nom et les couleurs sont modifiables via des cellules.
Il existe bien la possibilité de créer une fonction pour chacun des boutons, mais vu le nombre, cela augmenterait la possibilité d'erreur et ralentirait sans aucun doute mon programme.
J'aimerai donc créer une boucle qui me permettrait de simplifier mon programme. Cette boucle serait du style:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 1 To 38
If Cells((8 + i * 3), 54).Value = "" Then
ActiveSheet.Shapes("CommandButton" & i).Visible = False
Else
ActiveSheet.Shapes("CommandButton" & i).Visible = True
"CommandButton" & i.Caption = Cells(8 + i * 3, 54)
"CommandButton" & i.ForeColor = RGB(Cells(8 + i * 3, 60), Cells(8 + i * 3, 61), Cells(8 + i * 3, 62))
"CommandButton" & i.BackColor = RGB(Cells(8 + i * 3, 57).Value, Cells(8 + i * 3, 58).Value, Cells(8 + i * 3, 59).Value)
End If
Next
End Sub
Malheureusement, cela ne marche pas, j'ai mis en gras l'erreur que me signale vba sous le code "erreur de compilation, erreur de syntaxe".
Comment faire pour créer un "bouton variable"...
Merci d'avance pour vos réponses
Bonne journée à tous