VBA - Combobox a liste variable
Coucou tout le monde !
Je me fais un répertoire pour le boulot et dans ma recherche de contact j'ai un soucis.
A la base j'ai ma combobox1 pour la recherche par nom, parmi tout les contacts
With Sheets("DB").Range("S2:S500")
Set c = .Find(ComboBox1, LookIn:=xlValues)
.
.
.Jusque la tout va bien.
Je veux créer une combobox de recherche uniquement avec les contacts de travail. Les contacts sont notés avec le type 'travail', les données à trouver sont en colonne S
Je veux que ma combobox affiche une liste UNIQUEMENT les noms des personnes ayant les lignes de type 'travail' (colonne T)...
Et je bloque =/
J'ai mis une ligne simplifiée pour illustrer ma sélection
En espérant que vous puissiez m'aider
Bonne journée
Bonjour Atro, bonjour le forum,
Tu aurais pu mettre dans ton fichier l'UserForm . Ça nous aurait évité d'avoir à le créer nous même !...
En pièce jointe ton fichier modifié avec le code de l'UserForm :
Private O As Worksheet 'déclare la variable O (Onglet)
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (jncrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set O = Sheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
J = 1 'initialise la variable J
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 20) = "travail" Then 'condition : si la donnée ligne I colonne 20 (=> colonne T) est égale à "travail"
ReDim Preserve TL(1 To J) 'redimensionne le tableau des lignes TL
TL(J) = TV(I, 19) 'récupère dans le tableau de lignes TL la données ligne I , colonne 19 de TV
J = J + 1 'incrémente J
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
'si J est supérieur à 1, alimente la Combobox1 avec le tableau TL transposé
If J > 1 Then Me.ComboBox1.List = Application.Transpose(TL)
End SubClique sur le bouton Recherche...
Bonjour,
A adapter selon le besoin du code suivant :
Private Sub UserForm_Initialize()
For Each cel In Range("S1:S" & Range("S" & Rows.Count).End(xlUp).Row)
If cel.Offset(0, 1) = "travail" Then
ComboBox1.AddItem cel
End If
Next cel
End SubMerci de vos réponses rapides je regarde ça ce soir.
Je n'avais pas joint l'userform parce que je ne m'attendais pas à avoir le code je pensais juste que vous alliez me dire la procédure plutôt que tout taper =/ my bad
Merci a vous je vous tiens au courant
Au final ça ne vas pas parce que c'est dans l'initialize, mais ça doit s'adapter aux optionbuttons si sélectionnés. J'ai adapté le code de Raja à mes besoins mais ça bug, une solution?
Genre a l'initialize ça me charge toute la liste, mais si je coche un optionbutton ça me restreint la combobox.
Juste savoir ou le mettre pas la peine de réécrire un code. Quand je le place dans optionbutton1_clic ça ne marche pas.
Merci
ps: désolé pour le temps de réponse, décès dans ma famille j'avais pas la tête à ça
edit: j'ai modifié pas mal de trucs et avec repaint ça fonctionne. Merci