Recherche sous VBA

Messages postés
3
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
4 septembre 2006
-
Messages postés
50
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
23 janvier 2008
-
Bonjour à tous,



<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
<v:stroke joinstyle="miter">
</v:stroke>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0">
</v:f>
<v:f eqn="sum @0 1 0">
</v:f>
<v:f eqn="sum 0 0 @1">
</v:f>
<v:f eqn="prod @2 1 2">
</v:f>
<v:f eqn="prod @3 21600 pixelWidth">
</v:f>
<v:f eqn="prod @3 21600 pixelHeight">
</v:f>
<v:f eqn="sum @0 0 1">
</v:f>
<v:f eqn="prod @6 1 2">
</v:f>
<v:f eqn="prod @7 21600 pixelWidth">
</v:f>
<v:f eqn="sum @8 21600 0">
</v:f>
<v:f eqn="prod @7 21600 pixelHeight">
</v:f>
<v:f eqn="sum @10 21600 0">
</v:f>
</v:formulas>
<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
</v:path>
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
<o:lock aspectratio="t" v:ext="edit">
</o:lock>
</v:shapetype>
<v:shape id="_x0000_i1025" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75">
<v:imagedata o:href="/imgs2/smile_big.gif" src="file:///D:\profiles\AE40034\LOCALS~1\Temp\msohtml1\01\clip_image001.gif">
</v:imagedata>
</v:shape>
<v:shape id="_x0000_i1026" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75">
<v:imagedata o:href="/imgs2/smile_big.gif" src="file:///D:\profiles\AE40034\LOCALS~1\Temp\msohtml1\01\clip_image001.gif">
</v:imagedata>
</v:shape>
<v:shape id="_x0000_i1027" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75">
<v:imagedata o:href="/imgs2/smile_big.gif" src="file:///D:\profiles\AE40034\LOCALS~1\Temp\msohtml1\01\clip_image001.gif">
</v:imagedata>
</v:shape>




alors je m'y prend super super tard...!!!!!


voilà mon problème:


j'ai crée une base de données et maintenant je voudrai créer un petit moteur de recherche sous VBA pour accelérer la recherche d'un élément sur ma base!


en fait je voudrais que la personne qui va s'en servir , ait juste à entrer le nom quel veut et que ça se positionne automatiquement dessus!


je sais pas si c'est faisable mais si qq un pouvait m'aider  au plus vite ça serait  sympa car je dois faire ça pour le rendre dans qq jours!!


merci d'avance




bises!
<v:shape id="_x0000_i1028" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75">
<v:imagedata o:href="/imgs2/smile_blush.gif" src="file:///D:\profiles\AE40034\LOCALS~1\Temp\msohtml1\01\clip_image002.gif">
</v:imagedata>
</v:shape>

5 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

VBA Excel ? (donc précise tes colonnes, onglets et les données)
VBA Access ? (donc précise tes champs, tables et les données)

++
Messages postés
3
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
4 septembre 2006

salut,

il s'agit de  VBA Excel
en fait je pense qu'il suffit de créer une zone de liste c'est à peu prés pareil mais je ne sais pas trop comment déclarer les noms dans cette zone!!

merci bien !

Bonjour à tous,

alors je m'y prend super super tard...!!!!!
voilà mon problème:
j'ai crée une base de données et maintenant je vo
Messages postés
50
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
23 janvier 2008

Salut,

Tu crees simplement un petit userform avec juste une textbox et un boutton

ou alors tu mets une textbox dans ta feuille avec un bouton dans ce cas enleve le Userform1 dans "Mysearch"

Sub SpeedSearch()


Mysearch= UserForm1.TextBox1.Value  'Defini la valeur de ta recherce
Worksheets("MySheet").Select
Range("A1").Select    's'assure que la feuille est active, change A1 pour la premiere cellule de ta base de donnees
    Cells.Find(What:=Mysearch, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
       xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) _
        .Activate
End sub

attention si MatchCase=true ca recherche les valeurs excates.

Penses que tu peux afficher les valeurs correspondantes a ta recherche ds le user form, cest plus joli.

good luck

carvals

PS: t'as vu je me suis meme arrache pour mettre les couleurs....
Messages postés
3
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
4 septembre 2006

hello Carvals,


merci pour ton aide, en fait il s'agit de noms et non de valeurs alors du coup je ne sais même pas si ça change qq chose (oui oui je sais je suis plus que débutante....!!!!)


et puis je ne sais pas comment faire pour qu'il reconnaisse toutes mes données .


Dans ma base de données, ya qu'une colonne qui m'interesse en fait


au fait merci pour les couleurs ça c classe

PS: il faut faire quoi quand ça dit "Impossible de compiler en mode arrêt" ?!!!!

Bonjour à tous,

alors je m'y prend super super tard...!!!!!
voilà mon problème:
j'ai crée une base de données et maintenant je vo
Messages postés
50
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
23 janvier 2008

Salut,

Tu faits pointer ta recherche su la 1ere cellule de ta colonne c'est a dire:
 dans la ligne
range("A1").select   'cf post precedent
a la place de A1 tu mets la 1ere cellule de ta colonne.

Toutes sont recommues et avec le script precedent excel va chercher par ligne (d'ou le parametre: SearchOrder:=xlByRows)  jusqu'a qu'il trouve la valeur.

Apparement tu commences tout juste dc je vais essayer d'etre clair:

Pour 'lhistoire du mode arret.....

Quand tu es sur ta feuille excel tu ouvres l'editeur VBA (alt+F11)
Dans la barre de tache tu as 3 modes avec des symboles: Play, Pause, Stop le mode arret signifie que le bouton Pause est enfonce donc click sur le bouton Stop ensuite lance ta macro.

Petit conseil si tu comences le VBA:
1 regardes les codes sources disponible sur les forums
2 Une macro n'est que l'automatisation d'une tache manuelle posible il n'y a rien de magique donc quand tu cherches a ecrire une macro mais que tu ne sais pas par ou commencer tu vas dans outils/macro/ enregistrer puis tu realises ton action manuelement (ici ta recherche). Apres tu vas ds l'editeur VBA puis tu regardes dans les modules (en bas a gauche ds l'explorateur de projet VBA) comment excel a ecrit cette tache.
Apres tu definis ton/tes parametre(s)  de maniere variable. c a d si tu as fait une recherche manuelle sur le mot "TOTO" dans le script tu veras

Cells.Find(What:="TOTO", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
       xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) _
        .Activate

tu le changes donc par une variable genre MySearch comme ds le post precedent 
Regles:
Une varibale doit etre:
Declaree: juste en dessous de sub tu ecris Dim Mysearch As String (chose que j;ai oublie dans le precedent post lol) string veut dire chaine de caracteres
Definie: Mysearch = worksheets("Sheet1").range("B2").value 
le parametre de recherche depend maintenant de la valeur de la cellule B2

Je n'ecris pas le code complet volontairement pour que tu cherches un peu car le but est de comprendre non de faire faire le boulot.
Good luck

carvals