declarer plusieurs SpinButton

daumal

XLDnaute Nouveau
Bonjour a tous
Fidele lecteur du forum, je n'arrive pas a trouver une astuce permettant de declarer plusieurs SpinButtons (par une boucle ?) sous excel 2003

Je m'explique:

Devant declarer de nombreux SpinButton (40) , associés chacun à un textbox
je voudrais savoir comment indexer ces SpinButtons.

Pour les textBoxs, je peux les indexer par la commande Controls("textbox" & I).Value = xxxxxx dans une boucle For I = 1 to 40 par exemple

Peut on faire de meme avec les SpinButtons ?

Par exemple comment rationnaliser ces lignes ci dessous ?


Private Sub SpinButton1_Change()
Me.TextBox2 = Me.SpinButton1.Value
End Sub
Private Sub SpinButton2_Change()
Me.TextBox3 = Me.SpinButton2.Value
End Sub
Private Sub SpinButton3_Change()
Me.TextBox4 = Me.SpinButton3.Value
End Sub
Private Sub SpinButton4_Change()
Me.TextBox5 = Me.SpinButton4.Value
...
etc....

Je vous remercie par avance, car je desire optimiser mes codes.
 
Dernière édition:

daumal

XLDnaute Nouveau
Re : declarer plusieurs SpinButton

Merci de ta celerité Banzai64
L'idée parait bonne mais comment appliquer le Private Sub SpinButton1_Change() afin que cela fonctionne ?

L'ideal serait peut etre une fonction ?

Dans ce contexte étant donné que je n'ai pas le Private Sub SpinButton(x)_change de déclaré pour chaque SpinButton de la boucle for I, cela ne fonctionne pas.

For I = 1 To 40
Controls("textbox" & I).Value = Controls("SpinButton" & I).Value
Next I
 

Pierrot93

XLDnaute Barbatruc
Re : declarer plusieurs SpinButton

Bonjour Daumal, Banzai

autre solution, utilisation d'un module de classe, nécessite l'utilisation de la propriété "Tag" des "SpinButton" et "TextBox", doit avoir la même valeur pour un même couple. Regarde le fichier joint, exemple avec 3 couples.

bonne fin d'après midi
@+
 

Pièces jointes

  • classeur2.xls
    22.5 KB · Affichages: 178
  • classeur2.xls
    22.5 KB · Affichages: 171
  • classeur2.xls
    22.5 KB · Affichages: 198

daumal

XLDnaute Nouveau
Re : declarer plusieurs SpinButton

Pierrot,
Suite à la compréhension du fichier joint, mon probleme est que mes couples ne sont pas identiques.
Private Sub SpinButton1_Change()
Me.TextBox2 = Me.SpinButton1.Value
End Sub
Private Sub SpinButton2_Change()
Me.TextBox3 = Me.SpinButton2.Value
End Sub

Comme tu peux le constater, mon TEXTBOX2 est associé au SPINBUTTON1 et ainsi de suite pour les autres.
Malheureusement, je ne puis redefinir les textbox(x) et SpinButton(x) car l'ordre est donné par mon cahier des charges (pour travailler en reseau) et ce decalage entre les couples TEXTBOX et SPINBOX est défini depuis l'origine des scripts (macros).
Je cherche une solution ou adaptation à ton fichier.
En attente, grand merci a tous et surtout à votre rapidité d'intervention.
 

daumal

XLDnaute Nouveau
Re : declarer plusieurs SpinButton

OK avec toi wilfried_42 ils sont décaler dans ma boucle.
for I= 1 to 40
controls("textbox" & i+1) = controls("spinbutton" & i)
next
Jusqu'à là pas de probleme mais comment affecter l'option du Private Sub SpinButton1_Change() afin que cela fonctionne ?

Pour une declaration unique je fais:
Private Sub SpinButton1_Change()
Me.TextBox2 = Me.SpinButton1.Value
End Sub


mais dans une boucle tel que:
for I= 1 to 40
controls("textbox" & i+1) = controls("spinbutton" & i)
next

comment appliquer le Private Sub SpinButton1_Change() pour tous les Spin et TextBox , puisque dans ce cas je declare que le SpinButton1_Change()
Afin d'etre plus compréhensible, si je ne declare pas le SpinButtonX_change pour chacun, cela ne fonctionne pas.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : declarer plusieurs SpinButton

Re

as tu vu mon post de 17h40, il faut jouer avec la propriété "Tag"...

pour l'incrémenter automatiquement, ajoute le code ci dessous lors de l'initialisation de l'USF...

Code:
i = 1
For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.SpinButton Then
        ctrl.Tag = "G" & i
        i = i + 1
    End If
Next ctrl
i = 0
For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.TextBox Then
        ctrl.Tag = "G" & i
        i = i + 1
    End If
Next ctrl

@+
 
Dernière édition:

daumal

XLDnaute Nouveau
Re : declarer plusieurs SpinButton

OK, GENIAL !!!
Encore merci a tous et j'espère que ce petit probleme aidera bien d'autres comme moi.
Cela fonctionne outre un petit débogage pour ma part.
Et oui, merci à l'option TAG que je ne maitrisais pas et que je n'utilisais pas non plus.
On en apprend tous les jours... sur ce forum
Amicalement à tous et merci de votre aide et réactivité.
 

Bebere

XLDnaute Barbatruc
Re : declarer plusieurs SpinButton

salut le fil
le code pour le module de classe,spinbutton1 et texbox1 ,spinbutton2 et texbox2,etc...
Private Sub msp_Change()
Dim C As Byte

C = Right(msp.Name, Len(msp.Name) - 10)
UserForm1.Controls("TextBox" & C).Value = msp.Value

End Sub
 

Discussions similaires

Réponses
17
Affichages
422
Réponses
4
Affichages
543

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji