Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche en VBA dans une seule colonne

Byfranck

XLDnaute Occasionnel
Bonjour à tous,

je bosse depuis quelques semaines sur une base de données clients.
C'est un tableau Excel de Plus de 6000 ligne. et 250 colonnes.
J'utlise des Usf comme interface, l'un deux est un Listview avec les noms de clients en 1ere colonne.
Un doubleclick ouvre la fiche du client.

Mon pb est que j'utilise un fonction recherche péchée sur le forum. Au début super, maintenant avec 6000 clinets (6000 ligne) le pb est que la recherche se faisant sur l'intégralité du tableau si le nom du client est court: AMA
je dois passer en revue de plus en plus de fiches pour trouver la bonne (il me sort l'une après l'autre toutes les fiche qui contiennent quelques part ces 3 lettres AMA par exemple)

Ci dessous le code d'origine dans un module:


Code:
       Cells.Find(What:=Range("A1"), After:=ActiveCell, LookIn:=xlFormulas, _
       LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False).Activate



j'ai tout essayé: remplacer xlByColumns par xlByRows
remplacer Cells par Range ("A8:A65000") (le tableau commence en ligne 8)
mais aussi:
Code:
With Worksheets("Feuil1").Range("A8:A65000")
       Cells.Find(What:=Range("A1"), After:=ActiveCell, LookIn:=xlFormulas, _
'       LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
  End With

ou


Code:
        Columns("A").Find(What:=Range("A1"), After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate

et d'autres encore !!!

Rien n'y fait la recherche se fait sur l'intégralité du tableau (limiter la recherche à la colonne A devient impératif aujourd'hui))

En fait j'ai bien besoin d'aide:
peut être aussi le moyen de lancer une recherche sur l'expression exacte (ce qui éviterait d'afficher les fiches des client BAMA, AMATO et autres!)

merci d'avance pour toute suggestion!
Cordialement
 

MECEQI

XLDnaute Nouveau
Re : Recherche en VBA dans une seule colonne

Salut, pressé
Je na'ai pas bien eu le temps de regarder mais plutôt : Columns("A:A").
Autrement plus souple :

Sub blabla()
Dim MaPlage As Range
Dim MaCellule As Variant
On Error Resume Next
For i = 1 To 10
Set MaPlage = Range(Cells(i, x), Cells(i, y))
MaCellule = Cells(z,w)
reponse = Application.WorksheetFunction.Match(MaCellule, MaPlage, 0)
If Err <> 0 Then
MsgBox "Rien trouvé."
Else
MsgBox "reponse" 'ou on fait autre chose
End If
Next
end sub
 

Byfranck

XLDnaute Occasionnel
Re : Recherche en VBA dans une seule colonne

Bonsoir Mecequi et Skoobi,

Rien faire; j'ai mis un xlXhole et ça continue de m'ouvrir les fiches qui contiennent l'expression (AMAT m'ouvre aussi AMATO ou BAMAT).

j'ai essayé aussi :
Code:
        Range("A8:A65000").Find(What:=Range("A1"), After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
dans lespoir que la recherche se limite à la colonne A ... ben c'est raté!

en deux mots un doubleclick sur une ligne de mon ListView charge la valeur de la 1ere colonne du listview en A1 de mon tableau.
ensuite il faut rechercher la valeur de A1 dans la colonne A entre A8 et A65000. et activer la celulle.
ensuitre un Usf s'ouvrira avec la fiche du client (ça c'est bon ça roule)


Si vous avez une autre idée ..

Merci d'avance
 

Discussions similaires

Réponses
12
Affichages
737
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…