Raccourcir code

Bonjour à tous,

je vous joins mon fichier

7classement.xlsm (23.25 Ko)

, 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 si vous pouviez jeter un coup d’œil ça serait super sympas merci

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é , j avais essayé avec le case mais je metrise pas trop bien

Sinon c est parfait exactement ce que je cherchait, au moins je ne vais pas avoir 200 lignes de code juste pour une combo

merci encore

Rechercher des sujets similaires à "raccourcir code"