Action generique pour combobox

Bonjour à toutes et à tous,

voila je travail sur une macro Excel pour la conciliation médicamenteuse et j'ai un ensemble de liste déroulante pour lesquelles j'aimerai mettre les mêmes actions.

Plutôt que de faire à la main le code suivant pour l'ensemble des combobox de 51 à 139 (avec un pas de 4) qui lorsque je vais faire un change sur les ComboBox ,la combobox qui suit dans l'ordre numérique soit la 52,56,60 ...140 change de valeur, je souhaiterai faire quelque chose de plus simple.

Private Sub ComboBox51_Change()
If ComboBox51.Value <> "" And ComboBox51.Value <> "Poursuivi" Then
    ComboBox52.Value = "Divergente"
Else
    ComboBox52.Value = "Validée"
End If

Pour résumer ma demande je cherche comment en écrivant quelque ligne de code je puisse avoir la même action qui affecte différente combobox. J'ai pensé à créer une fonction qui prend comme valeur le numéro de la combobox et qui change celle qui suit mais je dois copier coller 23 fois ces lignes de code et je souhaiterai faire quelque chose de plus simple

Private Sub ComboBoxX_Change()
mafonction(X)
End If

Merci d'avance de votre réponse

Bonjour

Le mieux serait d'avoir un fichier. Sinon sur base de votre problème, peut être avec ce code ?

Dim ctrl
For Each ctrl In Me.Controls
  If Left(ctrl.Name, 8) = "ComboBox" Then
  Select Case ctrl.Value
    Case Is <> "", "Poursuivi"
        ctrl.Value = "Divergente"
    End Select
End If
Next ctrl

Cordialement

merci beaucoup, du coup pour moi la ligne de code va s'activer une seule fois et non pas quand je vais changer la valeur d'une des ComboBox non ?

Je vois pas l’événement Change en faite, du coup je suis obliger d'attendre que l'utilisateur ait tout saisie, alors que ce que je souhaite c'est creer une action et la relie à chaqu'une des combobox.

Bonjour

Du coup en changeant le Me par le nom de mon Userform j'ai résolue le soucis.

Du coup mon code dans la classe c'est devenu

If Left(GrpCombo.Name, 8) = "ComboBox" And Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) > 50 And Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) < 140 Then
   If ((Right(GrpCombo.Name, Len(GrpCombo.Name) - 8)) - 51) = 0 Or ((Right(GrpCombo.Name, Len(GrpCombo.Name) - 8)) - 51) Mod 4 = 0 Then
        If GrpCombo.Text <> "Poursuivi" Then
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 1).Value = "Divergente"
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 2).Visible = True
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 3).Visible = True
            nume_TextBox = (Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) - 51) / 4
            Patient_lec.Controls("TextBox" & ((3 * nume_TextBox) + 118)).Visible = True
        Else
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 1).Value = "Validée"
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 2).Visible = False
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 2).Value = ""
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 3).Visible = False
            Patient_lec.Controls("Combobox" & Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) + 3).Value = ""
            nume_TextBox = (Right(GrpCombo.Name, Len(GrpCombo.Name) - 8) - 51) / 4
            Patient_lec.Controls("TextBox" & ((3 * nume_TextBox) + 118)).Visible = False
            Patient_lec.Controls("TextBox" & ((3 * nume_TextBox) + 118)).Value = ""
        End If
   End If
End If

Merci pour votre aide

Rechercher des sujets similaires à "action generique combobox"