Vampirelo
Messages postés10Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention13 janvier 2009
-
8 déc. 2008 à 12:41
Vampirelo
Messages postés10Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention13 janvier 2009
-
9 déc. 2008 à 09:49
Bonjour à tous,
Voici mon problème :
J'ai plusieurs boutons "Bouton1", "Bouton2", ... et je veux avoir une boucle for sur leurs propriétés.
Exemple simple :
J'ai dans un module la procédure suivante :
Sub Bouton_Module(Profil, Valeur)
Dim i As Integer
For i = 1 To 6
Profil & i.Enabled = Valeur
Profil & i.Value = Valeur
Next i
End Sub
Et la procédure d'appel peut être :
Call Bouton_Module(UserForm1.Bouton , True)
J'ai essayé avec les fonctions "Evaluate" (Evaluate(Profil & i).Enabled) ou "Controls" comme j'ai pu le voir sur différents forum, mais rien ne marche.
Pourtant mon problème à l'air à priori , mais je ne trouve pas.
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 8 déc. 2008 à 21:22
Bonjour
1. vampirelo, le premier paramètre de l'instruction Call Bouton_Module(UserForm1.Bouton , True) est un objet. As-tu un objet nommé Bouton ? Apparemment non, puisque tu dis J'ai plusieurs boutons "Bouton1", "Bouton2".
Donc ton Call devrait te générer une erreur.
2. Si tu veux exécuter une instruction sur un groupe d'objets dont les noms sont préfixés par Bouton, fais :
Sub Bouton_Module(racine As String, valeur as Boolean)
Dim i As Integer
For i = 1 To 6
With UserForm1.Controls(racine & i)
.Enabled = valeur
.Value = valeur
End With
Next i
End Sub
3. Ci-dessus, tu as modifé les boutons 1 à 6 de ton UserForm1. Si tu voulais modifier tous les contrôles dont le nom commence par Bouton et quelque soit leur nombre, tu pourrais avantageusement utiliser le Sub suivant :
Sub Bouton_Module(racine As String, valeur as Boolean)
Dim c
For Each c In UserForm1.Controls
If Left(c.Name, Len(racine)) = racine Then
c.Enabled = valeur
c. Value = valeur
End If
Next
End Sub
Je n'ai pas testé les codes. Si une erreur s'y trouve, c'est à l'insu de mon plein gré.
Vampirelo
Messages postés10Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention13 janvier 2009 8 déc. 2008 à 16:24
Merci pour cette réponse nhervagault.
Ceci dit, je suis sur Excel 2007, et je n'arrive pas à créer de groupements de contrôles.
VB me retourne le message d'erreur suivant :
"Impossible de définir la propriété Name. Nom ambigu"
Du coup j'ai essayé un truc du style :
Sub Bouton_Module(Profil, Valeur)
Dim i As Integer
Dim Tableau() As New Control