Raccourcir code
Bonjour à tous,
je vous joins mon fichier
, et je vous met le code ou j ai fait une condition sur une combobox, pour aller chercher les infos que je veux sur ma feuille ...
Private Sub ComboBox1_Change()
If ComboBox1.Value = Sheets("Acceuil").Range("A2") Then
Me.ComboBox3.RowSource = "Equipes!B2:B16"
Else
If ComboBox1.Value = Sheets("Acceuil").Range("A3") Then
Me.ComboBox3.RowSource = "Equipes!B18:B32"
Else
If ComboBox1.Value = Sheets("Acceuil").Range("A4") Then
Me.ComboBox3.RowSource = "Equipes!B34:B48"
Else
If ComboBox1.Value = Sheets("Acceuil").Range("A5") Then
Me.ComboBox3.RowSource = "Equipes!B50:B64"
End If
End If
End If
End If
End Sub
le souci étant que j ai beaucoup de condition (14 en fait...) et ce sur 9 combobox... donc je me disait qu'il existe surement un moyen de raccourcir tout cela... mais je ne m'y connait pas assez pour le faire
Bonjour,
Je n'aurais pas le temps d'aller voir dans ton fichier, vu tout ce que tu annonces. Un petit exemple pour raccourcir le code cité dans ton post, et là le rendre un tout petit peu plus efficace.
NB- Raccourcir ne rendra pas forcément plus rapide ou plus efficace, mais ça peut selon le cas...
Tu utilises des instructions If imbriquées, or avant Else tu peux incorporer autant de ElseIf que tu veux qui constitueront autant de conditions alternatives dans le cadre de la même instruction If.
Et Select Case peut aussi s'avérer plus efficace.
Tu fais appel à des valeurs de cellules pour tes conditions, qui constituent une plage d'un seul tenant. En affectant la plage (soit ses valeurs) à une variable de type Variant, tu obtient un tableau facile à utiliser et tu réduis les accès à la feuille de 4 à 1 (là c'est nécessairement plus rapide).
De même l'adresse de la plage à affecter à la Combo 3, si tu la recueille dans une variable, tu n'as qu'une affectation à écrire à la fin.
Private Sub ComboBox1_Change()
Dim v, plg$
v = Sheets("Acceuil").Range("A2:A5").Value
Select Case ComboBox1.Value
Case v(1, 1): plg = "B2:B16"
Case v(2, 1): plg = "B18:B32"
Case v(3, 1): plg = "B34:B38"
Case v(4, 1): plg = "B50:B64"
Case Else: Exit Sub
End Select
plg = "Equipes!" & plg
ComboBox3.RowSource = plg
End Sub
Voilà pour inspirer ta réflexion.
Cordialement.
Merci mille fois pour ta rapidité
Sinon c est parfait
merci encore