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

boucle sur combo

  • Initiateur de la discussion Initiateur de la discussion jeromeN95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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?
 
Re : boucle sur combo

Re,
Non, j'essaie en vain de lire dans la boule...🙄
Si tu tiens vraiment à mettre un nom à tes contrôles, utilises alors leur propriété Tag
A+
kjin
 
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
 
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
 
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
 
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:
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.
 
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:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
645
D
Réponses
2
Affichages
947
D
Réponses
7
Affichages
916
Réponses
12
Affichages
1 K
D
Réponses
4
Affichages
747
D
C
Réponses
2
Affichages
1 K
C
S
Réponses
4
Affichages
1 K
Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…