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
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" ThenMytå
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 SubMytå
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 WithMerci pour ton aide!
Cdt Bruno.
C'est bon j'ai trouvé une solution:
Metre des
.Valueapres les
.AdditemMerci pour votre aide.
Bruno