Champ de recherche accès direct
Bonjour à tous,
(J'ai vue sur le blog excel que quelqu'un posait exactement la question que je me pose à l'heure actuelle, mais n'y connaissant pas grand chose à Excel, je n'ai pas trouvé le bon intitulé dans la barre de recherche du forum pour trouver ma réponse, d'où mon doublon je pense)
Je suis actuellement stagiaire dans un magasin qui m'a donné un fichier excel avec tous les prix d'achat et vente des 16304 articles référencés avec pour but de "simplifier" la recherche d'une référence et avoir directement les prix d'achat et de vente. Armé de courage depuis 10h30 je tente de comprendre les macros (jamais entendu avant aujourd'hui) et alleluia à 15h02 j'ai ENFIN réussi à avoir exactement la même chose que sur l'exemple "Créer un champ de recherche VBA" !!!!
Malheureusement comme je l'ai dit, il y a plus de 16 000 lignes, donc quand je tape la référence grâce à mon bouton de recherche, je suis obligée de faire défiler le tableur afin de trouver mes cellules colorées en vert. Comment puis-je faire pour que quand je tape ma référence dans la zone de liste, la ligne s'affiche directement sans que j'ai besoin de la chercher dans tout mon tableur??
Je vous remercie d'avance pour votre aide
Une stagiaire désespérée
Bonjour Lucie,
il y a certainement des fonctions qui te trouveront cela un une ligne mais je ne les connais pas encore, ayant débuter Excel il y a un mois.
Néanmoins, pour un cas similaire, j'ai écris ce petit code pour retrouver le nom d'une personne dans une liste depuis une TextBox.
Il te suffirait de l'adapter à ton cas avnt qu'un as du forum te donne une vraie réponse de pro!
'
sFlag = ChercherPatient.Text
iFlag = Range("A" & [65000]).End(xlUp).Row
For Lig = 3 To iFlag Step 2
If LCase$(sFlag) = LCase$(Left$(Range("A" & Lig).Value, Len(sFlag))) Then
Call EteindreLignes
Call AllumerLignes
ActiveWindow.ActivePane.ScrollRow = Lig
If Len(sFlag) = Len(Range("A" & Lig).Value) Then Range("G" & Lig).Activate
Exit For
End If
Next
'Quand la boucle LIG trouve le bonhomme, la ligne ACTIVEWINDOWS.ACTIVEPANE.SCROLLROW=Lig m'affiche la recherche en haut de mon écran.
Evidemment, sur 16.000, je n'ai pas testé le temps nécéssaire...
A+
Bonjour,
Dans le même sens, j'opère à partir d'un ComboBox en 1re ligne :
Private Sub ComboBox1_Change()
Dim s%
On Error GoTo erreur
If ComboBox1.Visible Then
If ComboBox1.ListIndex > -1 Then
s = [dossiers].Find(ComboBox1.Value, , , xlWhole).Row
If s > 2 Then
ActiveWindow.ScrollRow = s - 1
Else
ActiveWindow.ScrollRow = 2
End If
End If
End If
erreur:
End SubLa procédure fait remonter l'élément détecté au fur et à mesure à la ligne3 (ça c'est ma préférence, mais tu peux faire remonter à la 2). Tu peux aussi supprimer la condition If... Visible (j'ai effectivement une procédure qui le masque et une autre qui le démasque selon mes déplacements.
Pareil, je ne dépasse pas encore 2000 lignes, alors difficile d'inférer le comportement pour 16000. Mais cela mérite d'être testé.
Cordialement.