OVH Cloud OVH Cloud

Fonction Set

5 réponses
Avatar
Yvan
Bonjour,

Est-il possible d'utiliser une boucle avec la fonction Set ???

Par exemple :

For i=1 to 5
Set OptionButton(i)=UserForm1.Controls.Add("Forms.OptionButton.1",
"OptionButton" & i, True)

Je ne dois pas utiliser la bonne syntaxe car pour l'instant, je tombe
systématiquement en erreur !!!

--
Merci pour vos réponses.

5 réponses

Avatar
Patrick Penet
Je vois ce que tu veux faire, pour y arriver il faut
utiliser un module de classe.

Fais une recherche sur ce terme et tu auras des
exemples qui permettent de créer des objets
multiples de tous types.

--
Cordialement.

Patrick Penet

Enlever le point avant "net" pour répondre dans
ma boite, mais je préfère le groupe.
=============================
=============================
"Yvan" a écrit dans le message de news:
Bonjour,

Est-il possible d'utiliser une boucle avec la fonction Set ???

Par exemple :

For i=1 to 5
Set OptionButton(i)=UserForm1.Controls.Add("Forms.OptionButton.1",
"OptionButton" & i, True)

Je ne dois pas utiliser la bonne syntaxe car pour l'instant, je tombe
systématiquement en erreur !!!

--
Merci pour vos réponses.


Avatar
michdenis
Il y a ceci qui est possible

Ce code est écrit pour être exécuté dans un formulaire,
pour l'exécuter dans un module standard, remplacer
le mot Me de la procédure par Userform

Dans le haut du formulaire, déclaration d'une variable Collection
qui va contenir tous les boutons. Dans un module Standard, la
variable doit être déclaré comme Public Ob as New Collection

Dim OB As New Collection

'Pour ajouter chacun des boutons à la collection.
'----------------------------------------
Private Sub CommandButton1_Click()

Dim I As Integer, S As Integer, A As Integer

For I = 1 To 5
With Me
OB.Add .Controls.Add("Forms.OptionButton.1", _
"OptButton" & I, True)
S = S + 20
.Controls(OB(I).Name).Top = S
.Controls(OB(I).Name).Left = 20
End With
Next

For A = 1 To OB.Count
Controls(OB(A).Name).Value = 0
Next

End Sub
'----------------------------------------


"Yvan" a écrit dans le message de news:

Bonjour,

Est-il possible d'utiliser une boucle avec la fonction Set ???

Par exemple :

For i=1 to 5
Set OptionButton(i)=UserForm1.Controls.Add("Forms.OptionButton.1",
"OptionButton" & i, True)

Je ne dois pas utiliser la bonne syntaxe car pour l'instant, je tombe
systématiquement en erreur !!!

--
Merci pour vos réponses.
Avatar
michdenis
Juste un petit détail supplémentaire ...

Au lieu décrire une commande de cette façon
Controls(OB(A).Name).Value = 0

Ceci fait bien l'affaire :
OB(1).Value = 0

Tu peux remplacer ".Value" par toutes les propriétés et Méthodes
normalement associées au "OptionButton"




"michdenis" a écrit dans le message de news:
uTObcT$
Il y a ceci qui est possible

Ce code est écrit pour être exécuté dans un formulaire,
pour l'exécuter dans un module standard, remplacer
le mot Me de la procédure par Userform

Dans le haut du formulaire, déclaration d'une variable Collection
qui va contenir tous les boutons. Dans un module Standard, la
variable doit être déclaré comme Public Ob as New Collection

Dim OB As New Collection

'Pour ajouter chacun des boutons à la collection.
'----------------------------------------
Private Sub CommandButton1_Click()

Dim I As Integer, S As Integer, A As Integer

For I = 1 To 5
With Me
OB.Add .Controls.Add("Forms.OptionButton.1", _
"OptButton" & I, True)
S = S + 20
.Controls(OB(I).Name).Top = S
.Controls(OB(I).Name).Left = 20
End With
Next

For A = 1 To OB.Count
Controls(OB(A).Name).Value = 0
Next

End Sub
'----------------------------------------


"Yvan" a écrit dans le message de news:

Bonjour,

Est-il possible d'utiliser une boucle avec la fonction Set ???

Par exemple :

For i=1 to 5
Set OptionButton(i)=UserForm1.Controls.Add("Forms.OptionButton.1",
"OptionButton" & i, True)

Je ne dois pas utiliser la bonne syntaxe car pour l'instant, je tombe
systématiquement en erreur !!!

--
Merci pour vos réponses.
Avatar
Yvan
Merci pour ta réponse, c'est exactement ce que je voulais !!!

A bientôt.
--
Merci pour vos réponses.



Juste un petit détail supplémentaire ...

Au lieu décrire une commande de cette façon
Controls(OB(A).Name).Value = 0

Ceci fait bien l'affaire :
OB(1).Value = 0

Tu peux remplacer ".Value" par toutes les propriétés et Méthodes
normalement associées au "OptionButton"




"michdenis" a écrit dans le message de news:
uTObcT$
Il y a ceci qui est possible

Ce code est écrit pour être exécuté dans un formulaire,
pour l'exécuter dans un module standard, remplacer
le mot Me de la procédure par Userform

Dans le haut du formulaire, déclaration d'une variable Collection
qui va contenir tous les boutons. Dans un module Standard, la
variable doit être déclaré comme Public Ob as New Collection

Dim OB As New Collection

'Pour ajouter chacun des boutons à la collection.
'----------------------------------------
Private Sub CommandButton1_Click()

Dim I As Integer, S As Integer, A As Integer

For I = 1 To 5
With Me
OB.Add .Controls.Add("Forms.OptionButton.1", _
"OptButton" & I, True)
S = S + 20
.Controls(OB(I).Name).Top = S
.Controls(OB(I).Name).Left = 20
End With
Next

For A = 1 To OB.Count
Controls(OB(A).Name).Value = 0
Next

End Sub
'----------------------------------------


"Yvan" a écrit dans le message de news:

Bonjour,

Est-il possible d'utiliser une boucle avec la fonction Set ???

Par exemple :

For i=1 to 5
Set OptionButton(i)=UserForm1.Controls.Add("Forms.OptionButton.1",
"OptionButton" & i, True)

Je ne dois pas utiliser la bonne syntaxe car pour l'instant, je tombe
systématiquement en erreur !!!

--
Merci pour vos réponses.






Avatar
JB
Bonjour,

n
For b = 1 To n
retour = Me.Controls.Add("Forms.OptionButton.1", "Opt" & b, True)
Me("Opt" & b).Top = 60
Me("Opt" & b).Left = 50 + (b - 1) * 15
Next

Cordialement JB


Bonjour,

Est-il possible d'utiliser une boucle avec la fonction Set ???

Par exemple :

For i=1 to 5
Set OptionButton(i)=UserForm1.Controls.Add("Forms.OptionButton.1",
"OptionButton" & i, True)

Je ne dois pas utiliser la bonne syntaxe car pour l'instant, je tombe
systématiquement en erreur !!!

--
Merci pour vos réponses.