Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

somme des combobox

D

denis

Guest
bonjour à tous,

Dans le doc joint, il y a un userform avec une heure de prise de poste une 1ère coupure une 2ème coupure et une fin de poste + le total.

bon ça marche mais je suis pas sur de mon coup, doit y avoir une autre soluce moin lourde.

et tite question, comment faire pour que textbox1 calcul tous seul a chaque fois qu'une combobox et remplie.

merci pour le coup de mains
@ + denis
 

Pièces jointes

  • calculcombo.zip
    12.3 KB · Affichages: 26
S

salim

Guest
Bonsoir Denis et le Forum

Denis pour la première partie de ta question où tu voulé une solution moins lourde je te propose une boucle For Each.....Next sur les ComboBox ça te feras gagner quelques lignes.

Private Sub UserForm_Initialize()

Dim Heure As Byte, Minute As Byte, ctrl As Control
For Heure = 6 To 22
For Minute = 0 To 50 Step 30
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.ComboBox Then
ctrl.AddItem Format(Heure, "00") & ":" & Format(Minute, "00")
End If
Next ctrl

Time1 = ("00:00")
Time2 = ("00:00")
Time3 = ("00:00")
Time4 = ("00:00")
Time5 = ("00:00")
Time6 = ("00:00")

Next Minute
Next Heure

End Sub

@+ Salim
 
@

@Christophe@

Guest
Bonjour,

Salim, tu peux aussi ajouter le Time....... dans ton For Each:

Private Sub UserForm_Initialize()


Dim Heure As Byte, Minute As Byte, ctrl As Control
For Heure = 6 To 22
For Minute = 0 To 50 Step 30
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.ComboBox Then
ctrl.AddItem Format(Heure, "00") & ":" & Format(Minute, "00")
ctrl.value = ("00:00")
End If
Next ctrl
Next Minute
Next Heure

End Sub


Moi j'ai plutôt crée une array avec les contrôles, exemple du code:

Private Sub UserForm_Initialize()

Dim ComboArray(6) As Control
Dim Heure As Byte, Minute As Byte, i As Byte

Set ComboArray(1) = Time1
Set ComboArray(2) = Time2
Set ComboArray(3) = Time3
Set ComboArray(4) = Time4
Set ComboArray(5) = Time5
Set ComboArray(6) = Time6

For Heure = 6 To 22
For Minute = 0 To 50 Step 30

For i = 1 To 6
With ComboArray(i)
.AddItem Format(Heure, "00") & ":" & Format(Minute, "00")
.Value = ("00:00")
End With
Next i

Next Minute
Next Heure
End Sub


Bonne journée

@Christophe@
 
@

@Christophe@

Guest
Re,

Voila ce que je ferais, je trouve pas mieux pour l'instant:

Private Sub UserForm_Initialize()
Dim ComboArray(6) As Control
Dim Heure As Byte, Minute As Byte, i As Byte

Set ComboArray(1) = Time1
Set ComboArray(2) = Time2
Set ComboArray(3) = Time3
Set ComboArray(4) = Time4
Set ComboArray(5) = Time5
Set ComboArray(6) = Time6

For i = 1 To 6
With ComboArray(i)
For Heure = 6 To 22
For Minute = 0 To 50 Step 30
.AddItem Format(Heure, "00") & ":" & Format(Minute, "00")
Next Minute
Next Heure
.Value = ("00:00")
End With
Next i
End Sub


Bonne journée

@Christophe@
 

Discussions similaires

Réponses
4
Affichages
545
Réponses
5
Affichages
326
Réponses
3
Affichages
381
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…