Filtre sur une ComboBox avec case cochée

Bonjour le Forum,

J’arrive à faire 2 ou 3 trucs mais la je bloque et j’ai vraiment besoin de votre aide s’il vous plaie.

Lorsque je clic sur le bouton Verification s’ouvre : UserFormVerficacion2 dans laquelle je viens de rajouter un bouton : E-Mail qui ouvre lui-même UserFormEmail.

Dans UserFormEmail, il existe une ComboBox1 dans laquelle, j’arrive à charger les noms qui se trouvent colonne BF sur ma feuille Excel. Les TextBox correspondant aux prénoms et E-mails se chargent aussi (respectivement colonne BG et BH).

Dans la colonne BI, je renseigne le type de contact.

Dans l’UserFormVerificacion2, il y a des Checkbox qui correspondent au type de client.

Dans un premier temps,

Je souhaiterai ajouter la condition à l’« Intitialization » de la Combobox1 (dans UserFormEmail) pour n’afficher que les Clients qui correspondent au type coché.

Exemple : je clique sur le bouton « Verification », je coche « Order entry Form », je clique sur le bouton « E-Mail » il ne doit apparaitre dans la ComboBox que : « Dupont » et « Raza »

Plus tard, je souhaiterai que lorsque je clique sur le bouton Envoyer un E-mail s’adressant a la personne sélectionnée s’ouvre directement. Mais chaque chose en son temps.

Merci d’avance pour vos réponses. Si je n’ai pas été assez clair posez moi des questions.

Bruno

PJ: fichier de travail

100envoi-mail-001.xlsm (51.87 Ko)

Salut le forum

Tu dois rajouter une condition qui se rapporte au choix dans le Userform.

En remplacant le "Order Entry Form" par le choix de ton Userform.Frame.Checkbox,Caption (a adapter)

If Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = "Order Entry Form" Then

Mytå

Merci Myta de m'aider

J'ai essayé avec le code:

"

Private Sub UserForm_Initialize()

'Charger liste deroulante

Dim J As Long

Dim Ws As Worksheet

ComboBox1.Clear

Set Ws = Sheets("OEP CONTROL")

With Me.ComboBox1

.ColumnCount = 2

.ColumnWidths = "-1;0"

For J = Ws.Range("BF" & Rows.Count).End(xlUp).Row To 11 Step -1

If Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = UserFormVerificacion2.Frame1.CheckBox1."order entry form" Then

.AddItem Ws.Range("BF" & J)

.List(.ListCount - 1, 1) = J

End If

Next J

End With

End Sub

"

Mais il me renvoie une erreur.

Je suis débutant en VBA et je pense que je n'adapte pas correctement l'expression.

De plus je ne vois pas à quel moment dans ce code, je lui donne la condition que la CheckBox "Order Entry Form" de mon UserformVerivication2 est cochée

As-tu une solution?

Cdt, Bruno

Salut le forum

Cette macro devrait faire le travail

Private Sub UserForm_Initialize()
'Charger liste deroulante

Dim J As Long
Dim Ws As Worksheet
ComboBox1.Clear

  Set Ws = Sheets("OEP CONTROL")

  With Me.ComboBox1
    .ColumnCount = 2
    .ColumnWidths = "-1;0"
  End With

    For J = Ws.Range("BF" & Rows.Count).End(xlUp).Row To 11 Step -1
      With UserFormVerificacion2
        If Ws.Range("BF" & J) <> "" Then
          If .CheckBox1 And UCase(Ws.Range("BI" & J)) = UCase(.CheckBox1.Caption) Then ComboBox1.AddItem Ws.Range("BF" & J)
          If .CheckBox2 And UCase(Ws.Range("BI" & J)) = UCase(.CheckBox2.Caption) Then ComboBox1.AddItem Ws.Range("BF" & J)
          If .CheckBox3 And UCase(Ws.Range("BI" & J)) = UCase(.CheckBox3.Caption) Then ComboBox1.AddItem Ws.Range("BF" & J)
        End If
      End With
    Next J

End Sub

Mytå

Bonjour, je viens de voir ta rèponse.

J'ai trouvè une autre solution qui marche et qui je crois revient à peu près au même:

For J = Ws.Range("BF" & Rows.Count).End(xlUp).Row To 11 Step -1

            If Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = "Oferta Comercial Otros" And UserFormVerificacion2.CheckBox28 = True _
           Or Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = "Ingeniería Ready" And UserFormVerificacion2.CheckBox29 = True _
           Or Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = "OTF en Red" And UserFormVerificacion2.CheckBox30 = True _
           Or Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = "Fecha OTF Ready" And UserFormVerificacion2.CheckBox31 = True _
           Or Ws.Range("BF" & J) <> "" And Ws.Range("BI" & J) = "Order Entry Process" And UserFormVerificacion2.CheckBox33 = True Then

          .AddItem Ws.Range("BF" & J)
          .List(.ListCount - 1, 1) = J

    End If
    Next J
  End With

Merci pour ton aide!

Cdt Bruno.

C'est bon j'ai trouvé une solution:

Metre des

.Value

apres les

.Additem

Merci pour votre aide.

Bruno

Rechercher des sujets similaires à "filtre combobox case cochee"