cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 2015
-
24 janv. 2008 à 14:39
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
24 janv. 2008 à 22:45
bonjour
voila ,je fais une recherche à l'aide d'un textbox
Private Sub TextBox9_Change()
Dim Plage As Range, cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Integer, N As Integer
Dim C As Range
ListBox2.Clear
N = 0
Recherche = TextBox9.Value
Range("B2").Select
Ligne = Sheets(1).Range("B" & "65536").End(xlUp).Row
Set Plage = Sheets(1).Range("b" & "1:" & "B" & Ligne)
With Plage
Set C = .Find(Recherche)
If Not C Is Nothing Then
Adresse = C.Address
Do
If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
ListBox2.AddItem C.Offset
End If
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Adresse
End If
End With
End Sub
j'ai bien les données qui s'affiche dans la listbox2,et quand je click sur une données j'ai les infos qui s'affichent dans les textboxs avec se code
Private Sub ListBox2_Click() 'MODE RETOUR VALEUR RECHERCHEE
Dim Recherche As String
Dim L As Integer
Dim Plage As Range
Dim cell As Range
Dim maille As Boolean
Recherche = ListBox2.Value
L = ThisWorkbook.Sheets("Database").Range("A65536").En d(xlUp).Row
Set Plage = ThisWorkbook.Sheets("Database").Range("A2:E" & L)
For Each cell In Plage
If cell.Value = Recherche Then
LRecherche = cell.Row
End If
Next cell
MaskEdBox1 = WsBase.Range("A" & LRecherche)
TextBox1 = WsBase.Range("B" & LRecherche)
TextBox2 = WsBase.Range("C" & LRecherche)
decl = WsBase.Range("D" & LRecherche)
TextBox5 = WsBase.Range("E" & LRecherche)
End Sub
mais j'ai un probleme quand j'ai plusieurs fois le meme nom,il n'affiche pas les infos,et je peut avoir plusieurs fois le meme nom.
voyez vous un probleme dans se code ?
merci
petchy
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 janv. 2008 à 16:48
Salut
Surement dû au fait que tu réinitialise le début de recherche en tête de feuille et pas à partir de l'emplacement actuel.
Quand ta recherche trouve une cellule, il la stocke dans LRecherche, mais il continue la recherche.
S'il en trouve d'autres, il ecrasera la première.
Il va donc falloir :
- Soit stopper la recherche sur le premier trouvé et imaginer de pouvoir reprendre ensuite la boucle
- Soit mémoriser toutes les positions trouvées
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 24 janv. 2008 à 18:19
Re
ok,mais comment memoriser les positions
sinon,si en validant les donnée vers ma feuille j'incrémente un N° automatique,est ce que ça ira mieux.
petchy
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 24 janv. 2008 à 22:45
Plutôt que
ListBox2.AddItem C.Offset
mets
ListBox2.AddItem C.Value
Aussi, quand tu écris
Set C = .Find(Recherche)
pense à utiliser les paramètres LookIn : =xlValues ou xlFormulas et LookAt:=xlWhole ou xlPart selon les besoins. J'ai remarqué que lorsqu'on utilise Ctrl-F et qu'on change les différentes options, celles-ci se répercutent sur la fonction Find. Les derniers paramètres sont conservés sauf si explicitement déterminés lors de l'appel...
Maintenant, si tu as plusieurs fois le même nom, et que tu veuilles utiliser des textbox, il te faudrait des boutons "Précédent" et "Suivant", sinon je ne vois pas comment tu pourrais y arriver... Autrement, tu pourrais utiliser une Listbox ou une grille pour afficher les données de tous les noms trouvés, ce qui serait plus simple, d'après moi.
Pour stocker les noms, si nécessaire, tu peux utiliser un tableau dynamique dans lequel tu charges les données nécessaires pour retrouver chaque nom déjà trouvés. Ce pourrait être l'index de la ligne simplement (C.Row)
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI