Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1470 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Excel: boucle pour plusieurs commandbutton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Excel: boucle pour plusieurs commandbutton

n°1907489
Corranh9
Posté le 22-07-2009 à 08:41:04  profilanswer
 

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  

mood
Publicité
Posté le 22-07-2009 à 08:41:04  profilanswer
 

n°1907494
Deamon
Posté le 22-07-2009 à 09:12:31  profilanswer
 

Tu mets tous tes boutons dans un tableau/collection et tu le parcours ensuite.

n°1907530
Corranh9
Posté le 22-07-2009 à 10:33:11  profilanswer
 

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

n°1907531
Deamon
Posté le 22-07-2009 à 10:34:33  profilanswer
 

Oui voilà c'est ça.

n°1907564
SuppotDeSa​Tante
Aka dje69r
Posté le 22-07-2009 à 11:30:05  profilanswer
 

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 :
  1. On error resume next
  2. For i = 1 to 38
  3.     ActiveSheet.OLEObjects("CommandButton" & x).Object.Caption = "toto" & x
  4. Next


---------------
Soyez malin, louez entre voisins !
n°2156439
el_mout
Posté le 12-09-2012 à 09:38:08  profilanswer
 

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,

n°2156448
vave
Nice to meet me
Posté le 12-09-2012 à 10:34:04  profilanswer
 

Bonjour,
 
Tu peux parcourir les contrôles de ton userform grâce à la collection Controls :
 

Code :
  1. Dim Ctrl As Control
  2.  
  3.    For Each Ctrl In UserForm2.Controls
  4.       If TypeName(Ctrl) = "CommandButton" Then
  5.          Ctrl.width = 100
  6.       End If
  7.    Next


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2156586
el_mout
Posté le 13-09-2012 à 10:36:14  profilanswer
 

Ca marche, excellent ! Merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Excel: boucle pour plusieurs commandbutton

 

Sujets relatifs
problème de filtre vba macro ExcelExtraire un formaulaire dans un tableau sur Excel
Un article reparti en plusieurs pagesImporter plusieurs csv sous access avec fichier .ini
Lancement de plusieurs commandes avec FOR les unes après les autresCreation de fichier composé de plusieurs autres
gros fichier excel copier et inserer des lignesProbème : "workbook saveas" error excel version -- Object COM ?
[VBA Excel 2007] erreur Nombre d'arguments incorrects [RESOLU][Excel] renommer bouton de commande + l'affecter à ttes les feuilles
Plus de sujets relatifs à : Excel: boucle pour plusieurs commandbutton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR