Bouton Recherche VBA
bonjour team.
j'ai un souci avec mon code VBA pour faire une recherche.
une briève description, jai mon fichier excel, avec 1 pages, jai creer un code vba avec bouton recherche pour qu'il affiche les resultants d'un elements demandés. lorsque j'ouvre l'application et je tape le code a rechercher sur la liste deroulante j'ai les informations en appuyant sur le boutant pour qu'il affiche les resultats rien ne s'affiche. aider moi s'il vous plait. j'ai l'imprssion que le bouton reste enfoncé.
Private Sub Image1_Click()
End Sub
Private Sub ComboBox1_Change()
End Sub
Private Sub ComboBox1_Click()
End Sub
Private Sub CommandButton1_Click()
Dim no_ligne As Integer
no_ligne = ComboBox1.ListIndex + 3
TextBox1.Value = Cells(no_ligne, 8).Value
TextBox2.Value = Cells(no_ligne, 5).Value
TextBox3.Value = Cells(no_ligne, 19).Value
TextBox4.Value = Cells(no_ligne, 21).Value
TextBox5.Value = Cells(no_ligne, 22).Value
End Sub
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
End Sub
Private Sub Label2_Click()
End SubBonjour,
Voici une proposition avec un code se déclenchant à chaque changement sur la combobox1 :
Private Sub ComboBox1_Change()
dim nl, i&, tCol
tCol = array(8, 5, 19, 21, 22)
with sheets("nomfeuille") '<<< ADAPTER '!!! ou range("nomtableau") à adapter également
nl = application.match(combobox1.value, .columns(1), 0) '<<< adapter n° colonne
if iserror(nl) then nl = 0
for i = lbound(tCol) to ubound(tCol)
me.controls("TextBox" & i + 1).value = iif(nl = 0, "", .cells(nl, tCol(i)).text)
next i
end with
End SubIl faut :
- adapter le nom de la feuille (la préciser est important voire primordial)
- que les valeurs de la combobox se trouvent en colonne 1 de cette feuille. Le cas échéant, sur la ligne d'affectation de nl, il faudra remplacer .columns(1) par .columns(X) où X est le numéro de la colonne alimentant la combobox.
L'idéal serait d'avoir un tableau structuré. Il faudrait alors remplacer sheets("nomfeuille") par range("nomtableau"). L'aliemntation de la combobox se ferait ainsi :
private sub Userform_initialize()
'autres instructions
me.combobox1.list = range("nomtableau").columns(1).value
end subCdlt,
j'y arrive pas,
la combox est bien alimenté, j'ai bien mes valeurs, mais lorsque j'appuie sur le bouton de recherche les résulats de s'affichent pas.
désolé comme je suis dessus, j'ai un peut hachuré les données.
la seconde capture j'ai selectionner un numero, et j'ai appuyé sur le bouton recherche, cependant j'ai aucun resultat en faite rien ne s'affiche sur mes textbox
Avec ce code, le bouton devient inutile, les textbox se mettent automatiquement à jour.
Seulement, la combobox contient des valeurs numériques (mais pas seulement car je vois une valeur dotée d'un espace >>> avec celle-ci, vous devriez obtenir un résultat).
Alors voici une nouvelle proposition :
Private Sub ComboBox1_Change()
dim nl, i&, tCol
tCol = array(8, 5, 19, 21, 22)
with sheets("nomfeuille") '<<< ADAPTER '!!! ou range("nomtableau") à adapter également
nl = match(combobox1.value, .columns(1).value) '<<< adapter n° colonne
for i = lbound(tCol) to ubound(tCol)
me.controls("TextBox" & i + 1).value = iif(nl = 0, "", .cells(nl, tCol(i)).text)
next i
end with
End Sub
function MATCH(vcherchee as string, Vector) as long
for i = lbound(Vector) to ubound(Vector)
if cstr(Vector(i, 1)) = vcherchee then MATCH = i: exit function
next i
end functionCdlt,
PS : Si ça ne marchait toujours pas, cela signifierait probablement une mauvaise adaptation des références (nom de feuille ou de tableau structuré et n° de colonne ciblée)