OVH Cloud OVH Cloud

ToggleButton () indicé

5 réponses
Avatar
Polus
Bonjour mes ami(e)s !
Je travaille avec VBA
J' ai 30 ToggleButton qui font tous la même chose:

Private Sub ToggleButton1_Click()
j = 1
InverseAmAv
End Sub

Private Sub ToggleButton2_Click()
j = 2
InverseAmAv
End Sub

Private Sub ToggleButton3_Click()
j = 3
InverseAmAv
End Sub

etc....
Est-il possible d' écrire une seule fois la fonction ?

Merci à l' avance

5 réponses

Avatar
anonymousA
bonjour,

Faire un module de classe et vérifer que l'venement Click est accepté
dans ce module.Si c'est le cas, le déclarer Public withEvents dans ce
module et écrire dans le _Click l'instruction InverseAmAv.
Puis dans le userform Initialize, faire une référence pour chacun des
ToggleButton au controle déclaré dans le mmodule de classe.

Et le tour est joué.

A+

Bonjour mes ami(e)s !
Je travaille avec VBA
J' ai 30 ToggleButton qui font tous la même chose:

Private Sub ToggleButton1_Click()
j = 1
InverseAmAv
End Sub

Private Sub ToggleButton2_Click()
j = 2
InverseAmAv
End Sub

Private Sub ToggleButton3_Click()
j = 3
InverseAmAv
End Sub

etc....
Est-il possible d' écrire une seule fois la fonction ?

Merci à l' avance




Avatar
Polus
Ouf !
Il semble que j' ai encore des croûtes à manger....
En supposant qu'un module de classe soit clair pour moi, comment faire
référence pour chacun des ToggleButton au controle nouvellement déclaré ?
For I=1 to 30
ToggleButton(I) référence au nouveau control ????
Next




"anonymousA" wrote:

bonjour,

Faire un module de classe et vérifer que l'venement Click est accepté
dans ce module.Si c'est le cas, le déclarer Public withEvents dans ce
module et écrire dans le _Click l'instruction InverseAmAv.
Puis dans le userform Initialize, faire une référence pour chacun des
ToggleButton au controle déclaré dans le mmodule de classe.

Et le tour est joué.

A+

Bonjour mes ami(e)s !
Je travaille avec VBA
J' ai 30 ToggleButton qui font tous la même chose:

Private Sub ToggleButton1_Click()
j = 1
InverseAmAv
End Sub

Private Sub ToggleButton2_Click()
j = 2
InverseAmAv
End Sub

Private Sub ToggleButton3_Click()
j = 3
InverseAmAv
End Sub

etc....
Est-il possible d' écrire une seule fois la fonction ?

Merci à l' avance







Avatar
anonymousA
je te donne un exemple à base de combobox mais le principe est le même
ici c'est un exemple avec 2 combobox qui se nourissent de l'ensemble
des fichiers ouverts à l'instant T et quand tu cliques sur un item d'un
combobox, le fichier correpondant s'active.
Je pense que tu pourras adapter facilement cette proc à tes souhaits.

Dans le module du userform , tu écris

Dim TABCOMB(1 To 2) As New Classe1
'on peut remplacer ce tableau par une collection mais il ne faudra
'pas oublier d'ajouter à chaque fois un memebre à la collection par la
'méthode Add de l'objet collection lorsque tu feras pointer ton combobox
'du userform vers le combobox du module de classe


Private Sub UserForm_Initialize()


For Each wbk In Workbooks
Me.ComboBox1.AddItem wbk.Name
Me.ComboBox2.AddItem wbk.Name
Next

I = 1
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.ComboBox Then
Set TABCOMB(I).comb = Ctl
I = I + 1
End If
Next Ctl


End Sub

et dans le module de classe tu écris,

Public WithEvents comb As MSForms.ComboBox

Private Sub comb_Change()

Workbooks(comb.Value).Activate

End Sub

A+


Ouf !
Il semble que j' ai encore des croûtes à manger....
En supposant qu'un module de classe soit clair pour moi, comment faire
référence pour chacun des ToggleButton au controle nouvellement déclaré ?
For I=1 to 30
ToggleButton(I) référence au nouveau control ????
Next




"anonymousA" wrote:


bonjour,

Faire un module de classe et vérifer que l'venement Click est accepté
dans ce module.Si c'est le cas, le déclarer Public withEvents dans ce
module et écrire dans le _Click l'instruction InverseAmAv.
Puis dans le userform Initialize, faire une référence pour chacun des
ToggleButton au controle déclaré dans le mmodule de classe.

Et le tour est joué.

A+


Bonjour mes ami(e)s !
Je travaille avec VBA
J' ai 30 ToggleButton qui font tous la même chose:

Private Sub ToggleButton1_Click()
j = 1
InverseAmAv
End Sub

Private Sub ToggleButton2_Click()
j = 2
InverseAmAv
End Sub

Private Sub ToggleButton3_Click()
j = 3
InverseAmAv
End Sub

etc....
Est-il possible d' écrire une seule fois la fonction ?

Merci à l' avance









Avatar
anonymousA
Il faut bien sur que le module de classe soit appelé Classe1 dans
l'exemple en question.

je te donne un exemple à base de combobox mais le principe est le même
ici c'est un exemple avec 2 combobox qui se nourissent de l'ensemble
des fichiers ouverts à l'instant T et quand tu cliques sur un item d'un
combobox, le fichier correpondant s'active.
Je pense que tu pourras adapter facilement cette proc à tes souhaits.

Dans le module du userform , tu écris

Dim TABCOMB(1 To 2) As New Classe1
'on peut remplacer ce tableau par une collection mais il ne faudra
'pas oublier d'ajouter à chaque fois un memebre à la collection par la
'méthode Add de l'objet collection lorsque tu feras pointer ton combobox
'du userform vers le combobox du module de classe


Private Sub UserForm_Initialize()


For Each wbk In Workbooks
Me.ComboBox1.AddItem wbk.Name
Me.ComboBox2.AddItem wbk.Name
Next

I = 1
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.ComboBox Then
Set TABCOMB(I).comb = Ctl
I = I + 1
End If
Next Ctl


End Sub

et dans le module de classe tu écris,

Public WithEvents comb As MSForms.ComboBox

Private Sub comb_Change()

Workbooks(comb.Value).Activate

End Sub

A+



Ouf !
Il semble que j' ai encore des croûtes à manger....
En supposant qu'un module de classe soit clair pour moi, comment faire
référence pour chacun des ToggleButton au controle nouvellement déclaré ?
For I=1 to 30
ToggleButton(I) référence au nouveau control ????
Next




"anonymousA" wrote:


bonjour,

Faire un module de classe et vérifer que l'venement Click est accepté
dans ce module.Si c'est le cas, le déclarer Public withEvents dans ce
module et écrire dans le _Click l'instruction InverseAmAv.
Puis dans le userform Initialize, faire une référence pour chacun des
ToggleButton au controle déclaré dans le mmodule de classe.

Et le tour est joué.

A+


Bonjour mes ami(e)s !
Je travaille avec VBA
J' ai 30 ToggleButton qui font tous la même chose:

Private Sub ToggleButton1_Click()
j = 1
InverseAmAv
End Sub

Private Sub ToggleButton2_Click()
j = 2
InverseAmAv
End Sub

Private Sub ToggleButton3_Click()
j = 3
InverseAmAv
End Sub

etc....
Est-il possible d' écrire une seule fois la fonction ?

Merci à l' avance











Avatar
Polus
MERCI BEAUCOUP !

"anonymousA" wrote:

Il faut bien sur que le module de classe soit appelé Classe1 dans
l'exemple en question.

je te donne un exemple à base de combobox mais le principe est le même
ici c'est un exemple avec 2 combobox qui se nourissent de l'ensemble
des fichiers ouverts à l'instant T et quand tu cliques sur un item d'un
combobox, le fichier correpondant s'active.
Je pense que tu pourras adapter facilement cette proc à tes souhaits.

Dans le module du userform , tu écris

Dim TABCOMB(1 To 2) As New Classe1
'on peut remplacer ce tableau par une collection mais il ne faudra
'pas oublier d'ajouter à chaque fois un memebre à la collection par la
'méthode Add de l'objet collection lorsque tu feras pointer ton combobox
'du userform vers le combobox du module de classe


Private Sub UserForm_Initialize()


For Each wbk In Workbooks
Me.ComboBox1.AddItem wbk.Name
Me.ComboBox2.AddItem wbk.Name
Next

I = 1
For Each Ctl In Me.Controls
If TypeOf Ctl Is MSForms.ComboBox Then
Set TABCOMB(I).comb = Ctl
I = I + 1
End If
Next Ctl


End Sub

et dans le module de classe tu écris,

Public WithEvents comb As MSForms.ComboBox

Private Sub comb_Change()

Workbooks(comb.Value).Activate

End Sub

A+



Ouf !
Il semble que j' ai encore des croûtes à manger....
En supposant qu'un module de classe soit clair pour moi, comment faire
référence pour chacun des ToggleButton au controle nouvellement déclaré ?
For I=1 to 30
ToggleButton(I) référence au nouveau control ????
Next




"anonymousA" wrote:


bonjour,

Faire un module de classe et vérifer que l'venement Click est accepté
dans ce module.Si c'est le cas, le déclarer Public withEvents dans ce
module et écrire dans le _Click l'instruction InverseAmAv.
Puis dans le userform Initialize, faire une référence pour chacun des
ToggleButton au controle déclaré dans le mmodule de classe.

Et le tour est joué.

A+


Bonjour mes ami(e)s !
Je travaille avec VBA
J' ai 30 ToggleButton qui font tous la même chose:

Private Sub ToggleButton1_Click()
j = 1
InverseAmAv
End Sub

Private Sub ToggleButton2_Click()
j = 2
InverseAmAv
End Sub

Private Sub ToggleButton3_Click()
j = 3
InverseAmAv
End Sub

etc....
Est-il possible d' écrire une seule fois la fonction ?

Merci à l' avance