combobox avec conditions

alex67800

XLDnaute Impliqué
Bonjour j'ai un usf avec plusieurs combo(s).
Actuellement mes combo(s) font références à une collone d'une feuiille donnée, avec le code suivant dans mon userform_initialize que j'ai trouvé sur le forum et adapté à mes besoins:

Private Sub UserForm_Initialize()
DateBox1.Value = Format(Now(), "dd/mmm/yyyy") 'met sous format français la date du jour dans le textbox date.

With UserForm1
.startUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With

ComboBox1.Clear 'conducteur
lgderlig = Worksheets("civil").Range("d" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox1.RowSource = "civil!d1:d" & lgderlig
End If
ComboBox2.Clear 'opérateur
lgderlig = Worksheets("civil").Range("d" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox2.RowSource = "civil!d1:d" & lgderlig
End If
ComboBox3.Clear 'ligne
lgderlig = Worksheets("item").Range("a" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox3.RowSource = "item!a1:a" & lgderlig
End If
ComboBox4.Clear 'arrêt
lgderlig = Worksheets("item").Range("c" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox4.RowSource = "item!c1:c" & lgderlig
End If
ComboBox5.Clear 'causes
lgderlig = Worksheets("item").Range("d" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox5.RowSource = "item!d1:d" & lgderlig
End If
ComboBox6.Clear 'nature
lgderlig = Worksheets("item").Range("e" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox6.RowSource = "item!e1:e" & lgderlig
End If
ComboBox7.Clear 'durée
lgderlig = Worksheets("item").Range("b" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox7.RowSource = "item!b1:b" & lgderlig
End If
ComboBox8.Clear 'Agent de Maintenance
lgderlig = Worksheets("item2").Range("c" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox8.RowSource = "item2!c1:c" & lgderlig
End If
ComboBox9.Clear 'Type de Panne
lgderlig = Worksheets("item2").Range("e" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox9.RowSource = "item2!e2:e" & lgderlig
End If
ComboBox12.Clear 'Durée panne
lgderlig = Worksheets("item").Range("b" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox12.RowSource = "item!b1:b" & lgderlig
End If
ComboBox10.Clear 'Cause
lgderlig = Worksheets("item2").Range("F" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox10.RowSource = "item2!f2:f" & lgderlig
End If


End Sub

Jusque la tout va bien. Etant de nature à vouloir toujours parfaire le travail et simplifier la tâche aux futurs utilisateurs je souhaiterai qu'en fonction du choix fait sur la combobox3 et 4, les combobox, 5, 6 aient des values défférentes.

J'ai bien vu plusieurs pistes sur des sujets analogue mais j'ai du mal à le transcrire.


Un code dans l'initialize du genre:
If combobox3.value= "ligne 1" And Combobox4.value= "Pannes" Then
ComboBox5.Clear 'causes
lgderlig = Worksheets("item3").Range("c" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox5.RowSource = "item3!c3:c62" & lgderlig
Else If
If combobox3.value= "ligne 2" And Combobox4.value= "Pannes" Then
ComboBox5.Clear 'causes
lgderlig = Worksheets("item3").Range("d" & Cells.Rows.Count).End(xlUp).Row
If lgderlig > 1 Then
ComboBox5.RowSource = "item3!d3:d62" & lgderlig
Else If ' et ainsi de suite pour toute les "Lignes" Il y en a 8

De même qu'il y a 4 choix différents faisant référence à des range précises pour combobox4.
Si je ne suis pas assez clair:
combobox3 détermine la colonne des données (il y en a 8 possible)
combobox4 déterminie la plage des lignes de cette colonne (il y en a 4 possible)

Et pour bien compliquer certaine cellules sont vides dans certaines colonnes. donc ne devrait pas apparaitre dans les combobox5 et 6.

Ni a-t-il pas un code plus simple que de reprendre toutes les possibilité une à une et faire un code interminable? Du genre "Or".

Je vous joint le tableau des données que je voudrais dans mes combo.

Merci d'avance pour vos conseils et pistes de travail.
 

Pièces jointes

  • copie arret ligne cdt.xls
    29.5 KB · Affichages: 178
  • copie arret ligne cdt.xls
    29.5 KB · Affichages: 178
  • copie arret ligne cdt.xls
    29.5 KB · Affichages: 176
Dernière édition:

alex67800

XLDnaute Impliqué
Re : combobox avec conditions

Bonjour bqtr, Pierrot93, Boisgontier,

Je vais de ce pas tester ce code sur la version 97 au boulot, je reviendrais vers vous.
Je vous tiendrais au courant, et vous remercie tous les 3 de m'avoir consacrer du temps.
Je suis encore très loin d'avoir votre maîtrise de la macro. bravo.

Bonne journée.
 

alex67800

XLDnaute Impliqué
Re : combobox avec conditions

Bonjour bqtr, Pierrot93, Boisgontier, le forum,

Pris par le travail je n'ai pas encore eu la possibilité de tester ce dernier code avec excel97, par contre aucun bug avec 2003.

Promis je vous tiendrai informé, dès que j'aurais le temps au boulot.

Bonne soirée.
 

alex67800

XLDnaute Impliqué
Re : combobox avec conditions

Bonjour bqtr, Pierrot93, Boisgontier, le forum,
J'ai enfin eu le temps de tester le code.
UN mot: RESPECT

Fidèle à vous même, d'excelent conseil et dépanneur.
Très bonne continuation à tous.

Un grand merci

Bon wekk-end
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR