lolpop
Messages postés211Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention18 octobre 2010
-
20 juin 2006 à 13:50
lolpop
Messages postés211Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention18 octobre 2010
-
21 juin 2006 à 16:21
Bonjour
j'ai un petit probleme de recherche, j'utilise la fonction fin() mais le probleme c'est que si ce que je recherche existe plusieur fois il ne m'en retourne qu'un,
comment faire pour avoir toues les résusltats dans un listbox?
peut-on compter les résultat valide?
merci de votre aide
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 20 juin 2006 à 14:17
Bonjour,
cette boucle ajoute dans un listbox les éléments de la colonne A jusqu'à ce qu'il n'y a plus de valeur. Rajoute une condition pour préciser ce que tu veux retrouver dans le listbox et cela devrai marcher
dim tableau as string
i = 1
Do
ReDim Preserve tableau(1 To i)
tableau(i) = Range("A" & i).Value
listbox1.AddItem tableau(i)
i = i + 1
Loop Until (Range(("A" & i)).Value) = "" Or IsEmpty(Range(("A" & i)).Value)
lolpop
Messages postés211Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention18 octobre 2010 20 juin 2006 à 22:48
oui bien sur,
alors j'ai une colonne A qui contient des prenoms, par exemple:
morgan
margaux
kevin
tibault
morgan
toto
kevin
momo
voila ensuite j'ai créé un userform1 avec un textbox et un bouton pour validé, la textbox sert a récupérer le mot rechercher, quand on clique sur le bouton ca ouvre l'userform2 avec un une list box simple( on comence doucement lol)
mais je n'arrive pas a faire la recherche, je voudrai qu'il s'affiche dans la list box les célule qui réponde au critère, par exemple si on recherche "mor" ca renvoi ligne 1 morgan et ligne 2 morgan, et si on cherche mo ca renvoir morgan,morgan,momo.
j'ai essayé de faire un code mais ca ne marche pas j'ai un message d'erreur:
Private Sub UserForm_Initialize()
chercher = UserForm1.TextBox1.Value
MsgBox chercher
Dim limit, supp, i, j As Long
limit = 10000 'on limite a 10000 lignes
'on cherche en commençant par 10000 jusqua ce que la colone ne soit plus égale a rien
While Feuil1.Cells(limit, 1) = ""
limit = limit - 1
Wend
ok = Feuil1.Columns(1).Find("" & chercher, ligne, , , xlByRows, xlNext).Value
MsgBox ok
UserForm2.ListBox1.AddItem ok
If ok <> "" Then
j = 1
While j < limit
ligne = "A" & j
'msgBox ligne
ok = Feuil1.Columns(1).FindNext(ligne)
MsgBox ok
j = j + 1
UserForm2.ListBox1.AddItem ok
Wend
End If
Do
AncienneLigne = ActiveCell.Row
Cells.FindNext(After:=ActiveCell).Activate
NouvelleLigne = ActiveCell.Row
If NouvelleLigne < AncienneLigne Or NouvelleLigne = AncienneLigne Then Exit Do
NomTemp = Selection.Value
ListBox1.AddItem NomTemp
Loop
End Sub
Voilà, tester et approuvé (par moi). Je précise que ça ne cherche pas que dans la colonne A mais dans toutes les cellules de la feuille sélectionnée.
@++
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
lolpop
Messages postés211Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention18 octobre 2010 21 juin 2006 à 07:20
merci pour ton code je vais voir ca ce matin.
mais juste 1-2 truc que je comprene :)
pour les recherche avec find on est obliger d'activer les céllules apparament non?
ensuite tu marque : NomTemp = Selection.Value
Selection.Value c'est le text de la cellule active c'est bien ca?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 21 juin 2006 à 07:38
De rien,
Effectivement la cellule qui contient le résultat est activée.
Du coup, pour récupérer la valeur (Value) de la cellule sélectionnée, on fait Selection.Value que je place dans une variable (NomTemp) pour le placement dans la ListBox.
Juste un p'tit truc, tu as déclaré dans ton code :
Dim limit, supp, i, j As Long Sache que seul 'j' est de type Long.
Voici la bonne syntaxe :
Dim limit As Long, supp As Long, i As Long, j As Long
@++ et bonne prog !
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
lolpop
Messages postés211Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention18 octobre 2010 21 juin 2006 à 16:21
j'ai essayre de faire un code un peu dans ton genre mais sans passer par les cellule active. ( je viens de php et j'ai pas l'habitude de ça)
voici mon code:
Do
vl = ligneuligneu Feuil1.Columns.FindNext(After :vl).Row
If ligneu < vl Or ligneu = vl Then Exit Do
msg = Feuil1.Cells(ligneu, 1)
UserForm1.ListBox1.AddItem msg
Loop
Mais j'ai un soucis dans ma boucle avec la fonction FindNext qui bugue et je ne sais pas pourquoi.
dites moi ou est mon erreur si vous la voyez :)