boucle sur combo

jeromeN95

XLDnaute Impliqué
Bonjour,
je viens vers vous afin de comprendre la dynamique des boucles aux travers d'un besoin.

J'ai un Userform Horaire où l'utilisateur renseigner jusqu'a 4 combo * 5
CAD / Lundi L1 L2 L3 L4
Mardi M1 M2 M3 M4
...
Vendredi V1 V2 V3 V4

J'ai donc fait ce code :
Private Sub CmbValider_Click()
Dim Str_H As String

If Me.L1 <> "" Then
Str_H = "Lundi: " & Me.L1 & "h à " & Me.L2 & "h et " & Me.L3 & "h à " & Me.L4 & "h" & " / "
End If
If Me.M1 <> "" Then
Str_H = (Str_H & "Mardi: " & Me.M1 & "h à " & Me.M2 & "h et " & Me.M3 & "h à " & Me.M4 & "h" & " / ")
End If
If Me.Me1 <> "" Then
Str_H = (Str_H & "Mercredi: " & Me.Me1 & "h à " & Me.Me2 & "h et " & Me.Me3 & "h à " & Me.Me4 & "h" & " / ")
End If
If Me.J1 <> "" Then
Str_H = (Str_H & "Jeudi: " & Me.J1 & "h à " & Me.J2 & "h et " & Me.J3 & "h à " & Me.J4 & "h" & " / ")
End If
If Me.V1 <> "" Then
Str_H = (Str_H & "Vendredi: " & Me.V1 & "h à " & Me.V2 & "h et " & Me.V3 & "h à " & Me.V4 & "h")
End If
ActiveSheet.Range("$E$1:$H$1") = Str_H

Unload Me
End Sub



Mais si l'utilisateur ne renseigne pas au moin la premiere combo, les heures ne s'affichent pas.
Je souhaiterai donc faire une boucle pour :
reduire ce code et etre sur d'avoir les renseignement.

Peut etre avec For Each c In Me.Controls
Str_H = "Lundi: " & Me.L1 & "h à " & Me.L2 & "h et " & Me.L3 & "h à " & Me.L4 & "h" & " / "

Next

mais je n'en suis pas sur.

Pourriez vous m'aider SVP?
 

kjin

XLDnaute Barbatruc
Re : boucle sur combo

Bonsoir,
Boule.gif
A+
kjin
 

jeromeN95

XLDnaute Impliqué
Re : boucle sur combo

Salut et merci
mais qu'est ce que 'Tag' ?

Je me permet de te mettre le fichier 'uitile' en PJ.
 

Pièces jointes

  • boucle.xls
    55.5 KB · Affichages: 64
  • boucle.xls
    55.5 KB · Affichages: 63
  • boucle.xls
    55.5 KB · Affichages: 64

kjin

XLDnaute Barbatruc
Re : boucle sur combo

Re,
D'abord je ne vois aucune combobox mais plutôt des textbox...
Ensuite un brin d'explication eut été bienvenu dans la mesure où tu as 5 jours qui renseignent la même cellule ! comment choisir ?
Bref, je m'en retourne à ma boule...
A+
kjin
 

jeromeN95

XLDnaute Impliqué
Re : boucle sur combo

En faite lorsque tu execute la macro qui lance l'USF Horaire, l'utilisateur rentre les heures du matin et/ou de l'aprés midi.

Lorsqu'il clique sur Valider les informations sont retranscrite dans la cellule jaune fusionner du tableau dans l'onglet Buanderie.

Le probleme et que si l'utilisateur ne renseigne QUE les heures de l'aprés midi cela ne fonctionne pas.
Puisque j'ai commencer mon code par : If Me.L1 <> "" Then


Où L1 est le nom que j'ai donner à la textbox corespondant à la premiere heure de matin (plage).


Je souhaiterai :
Si l'utilisateur rentre une valeur (soit L1, soit L2, soit L3, soit L4) alors il execute le reste.

A la place de : If Me.L1 <> "" Then

Merci
 

kjin

XLDnaute Barbatruc
Re : boucle sur combo

Re,
Je crois qu'il est temps que j'aille me coucher...
Pourquoi diable mettre 5 lignes de textbox alors qu'il suffirait d'une seule ligne avec une combobox avec les jours de la semaine (lundi, mardi...) dans laquelle l'utilisateur fait sont choix avant de remplir 4 textbox pour l'horaire;où alors qq chose m'échappe !

Edit : bonsoir le requin :) ! Y a de quoi non !
A+
kjin
 

jeromeN95

XLDnaute Impliqué
Re : boucle sur combo

Je ne te comprend pas Kjin. explique toi stp.
par contre l'idée de carcharodon-carcharias me parait tres bien.

Et si je pige ca donne :

Dim Matin As Byte, PM As Byte, HM As Byte, HPM As Byte

For Matin = 1 To 10
With Me.Controls("ComboBox" & Matin)
For HM = 8 To 12 ' heures d'intervention standart
.AddItem HM
Next HM
Next Matin

For Apresmidi= 1 To 10
With Me.Controls("ComboBox" & Apresmidi)
For HPM = 13 To 17 ' heures d'intervention standart
.AddItem HPM
Next HPM
Next Apresmidi

End With





Dim Matin As Byte, PM As Byte, HM As Byte, HPM As Byte

A quoi il sert le PM As Byte dedans?

Mais pour la récuperation dans la cellule alors?
 
Dernière édition:

jeromeN95

XLDnaute Impliqué
Re : boucle sur combo

J'ai un chouchi !!!



Private Sub CmbValider_Click()



Dim Matin As Byte, HM As Byte, HPM As Byte

For Matin = 1 To 12
With Me.Controls("ComboBox" & Matin)
For HM = 8 To 12 ' heures d'intervention standart
.AddItem HM
Next HM
'Next Matin

End With

For Apresmidi = 1 To 12
With Me.Controls("ComboBox" & Apresmidi)
For HPM = 13 To 17 ' heures d'intervention standart
.AddItem HPM
Next HPM
'Next Apresmidi

End With
End sub



Il me dit For sans next
et aprés il me dit next sans for !!!

lol

par contre vous pourriez m'aider par une PJ SVP??
Ca serait cool ça.
 

jeromeN95

XLDnaute Impliqué
Re : boucle sur combo

Ah ok il manquer le End With.
Merci.
Par contre ca ne resou pas mon probleme du début.

Pour le rapatriement des info dans la cellule????

Comment faire la boucle svp?

J'ai modifier le code pour le moment mais c'est trop lourd...

Private Sub CmbValider_Click()
Dim Str_H As String

If Me.ComboBox1 <> "" Then
Str_H = "Lundi: " & Me.ComboBox1 & "h à " & Me.ComboBox2 & "h et " & Me.ComboBox11 & "h à " & Me.ComboBox12 & "h" & " / "
End If
If Me.ComboBox3 <> "" Then
Str_H = (Str_H & "Mardi: " & Me.ComboBox3 & "h à " & Me.ComboBox4 & "h et " & Me.ComboBox13 & "h à " & Me.ComboBox14 & "h" & " / ")
End If
If Me.ComboBox5 <> "" Then
Str_H = (Str_H & "Mercredi: " & Me.ComboBox5 & "h à " & Me.ComboBox6 & "h et " & Me.ComboBox15 & "h à " & Me.ComboBox16 & "h" & " / ")
End If
If Me.ComboBox7 <> "" Then
Str_H = (Str_H & "Jeudi: " & Me.ComboBox7 & "h à " & Me.ComboBox8 & "h et " & Me.ComboBox17 & "h à " & Me.ComboBox18 & "h" & " / ")
End If
If Me.ComboBox9 <> "" Then
Str_H = (Str_H & "Vendredi: " & Me.ComboBox9 & "h à " & Me.ComboBox10 & "h et " & Me.ComboBox19 & "h à " & Me.ComboBox20 & "h")
End If

ActiveSheet.Range("$F$1:$J$1") = Str_H

Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim Matin As Byte, PM As Byte, HM As Byte, HPM As Byte

For Matin = 1 To 10
With Me.Controls("ComboBox" & Matin)
For HM = 8 To 12
.AddItem HM
Next HM
End With
Next Matin

For Apresmidi = 11 To 20
With Me.Controls("ComboBox" & Apresmidi)
For HPM = 13 To 17
.AddItem HPM
Next HPM
End With
Next Apresmidi

End Sub
 
Dernière édition:

jeromeN95

XLDnaute Impliqué
Re : boucle sur combo

Par exemple, les horaires sont :

Lundi de 8h à 12 et de 14h à 17h
Mardi de 8h à 11h
Pas le mercredi
Jeudi de 9h à 12h
Vendredi de 14h à 21h

Le resultat doit etre : Lundi: 8h à 12h et 14h à 17h / Mardi: 8h à 11h / Jeudi: 9h à 12h / Vendredi: 14h à 21h

Aprés un autre exemple
Du lundi au Vendredi de 7h à 11h sauf le mercredi
Le resultat doit etre : Lundi: 7h à 11h / Mardi: 7h à 11h / Mercredi: 7h à 11h / Jeudi: 7h à 11h / Vendredi: 7h à 11h


Autre exemple :
Lundi de 6h à 12h
Mardi de 6h à 12h
Jeudi de 6h à 10h
Vendredi de 7h à 12h et 14h à 15h
Le resultat doit etre : Lundi: 6h à 12h / Mardi: 6h à 12h / Mercredi: 6h à 12h / Jeudi: 6h à 10h / Vendredi: 7h à 12h et de 14h à 15h



Là j'ai pour le moment :
Lundi: 9h à 10h et h à h / Mardi: 9h à 10h et 14h à 16h /
Le format me convient mais j'ai des " et h à h" qui traine partout où je n'ai pas renseigner.
De plus, je n'ai pas les heures du mardi aprés midi (par exemple) tant que je n'ai pas renseigner les heures du matin.
Or, la lingere peut tres bien travailler que de l'aprés midi...


En tout cas merci de te pencher sur ce problème.

Bonne nuit.
 
Dernière édition:

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 186
dernier inscrit
Eliyass