Excel : faire une Recherche Nom

Fermé
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 - 31 août 2009 à 22:20
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 - 26 oct. 2009 à 21:10
Bonjour,

Je voudrais savoir s'il est possible de construire une recherche par nom sous excel.

J'ai une base de données avec des noms, des téléphones, ... et je voudrais faciliter la recherche des personnes dans cette BDD en construisant un outil de recherche.

Je sais le faire quand il s'agit de donner un code à la personne avec la fonction rechercheV... mais par nom, je sais pas...

Pourriez-vous m'aider svp ?

40 réponses

ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
5 sept. 2009 à 21:35
Bonsoir,

J'ai organisé ma page "base" en 2 partie selon une coupe horizontale.
1. la partie recherche que ns avons vue ensemble cette semaine
2. Une partie "stats" qui me permettra de faire des statistiques, par exemple sur ce qui se vend bien.

Dans le 1er cas, je ne parviens pas à modifier la recherche comme je veux.

Ton code permet de faire une recherche selon les libellés qui se trouvent ligne 1 (Nom, prénom, ...)
Comment fait-on pour changer la ligne (mes libelléssont sur d'autres lignes) ?

Sur ta démo, la liste des personnes et de ce qu'elles font se trouve sur la page "base".
je voudrais mettre ces infos sur une 2nde page : "choix1" que je rendrai invisible ensuite.
Comment modifier le code pour obtenir ce résulat ?

Bon w-end,
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
6 sept. 2009 à 00:03
bonjour

Comment fait-on pour changer la ligne (mes libelléssont sur d'autres lignes) ?

Tu remplaces dans UserForm_Initialize .Cells(1 par le numéro de ligne que tu veux.

elles font se trouve sur la page "base". je voudrais mettre ces infos sur une 2nde page : "choix1"

Dans ton classeur, tu remplaces simplement le nom base par le tien sur l'ensemble des procédures.

je rendrai invisible ensuite.

Dans ce cas il faut supprimer le positionnement de choix : ListBox1_Click
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
6 sept. 2009 à 10:58
Bonjour,

J'avance peu à peu et comprend mieux le code.

Je voudrais rajouter des "cellules" de recherche en plus de nom, prénom, ...

De fait, je voudrais rajouter un

Private Sub TextBox5_Change()
Call chercher(TextBox5.Value, 5)
End Sub

Puis un 6, un 7, ...

De même, je voudrais savoir comment on fait pour modifier la fenêtre User_Form.
Par exemple, si je veux mettre les cellules de recherche sur 2 niveaux, est-ce que c'est possible ?

Bon dimanche,
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
7 sept. 2009 à 17:29
Bonsoir,

Bon, je me suis lancé ds VBA et c'est une catastrophe... J'ai tapé des km de code... et quand je clic sur mon image dans excel pour recherche des infos grâce à ma user form, on me dit que la macro n'est pas là.

je recommence demain !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
11 sept. 2009 à 21:34
Bonsoir,

Je voudrais comprendre les 8 étapes de ton code.

Peux-tu me dire l'objectif de chaque étape svp ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
11 sept. 2009 à 23:02
bonjour

Private Sub CommandButton1_Click()

=> déclenchée par bouton quitter

Private Sub ListBox1_Click()

=> déclenchée par sélection liste

Private Sub TextBox1_Change()
Private Sub TextBox2_Change()
Private Sub TextBox3_Change()
Private Sub TextBox4_Change()

=> déclenchées par modification d'un critère

Public Sub chercher(rech, c) ' recherche d'une chaine

Recherche en fonction des critères lancée par chaque modification

Private Sub UserForm_Initialize()

Lancée à l'affichage du formulaire

Voilà le pourquoi des différentes procédures et si tu rajoute des colonnes il faut rajouter des critères correspondants
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
13 sept. 2009 à 10:24
Bonjour,

je comprends pas Public Sub chercher(cher, c)... et toutes les Dim qu'il y a en-dessous.
tu peux me les expliquer svp ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
13 sept. 2009 à 12:17
bonjour

je comprends pas Public Sub chercher(cher, c)... et toutes les Dim qu'il y a en-dessous.

"chercher" est une procédure qui prend en paramètre "cher" la valeur à chercher et "c" la colonne de recherche.

Les Dim sont des définitions de variables avec leur type précisé qui sont nécessaires dans la procédure.

La définition peut êtr omise mais ce n'est pas une bonne omission car cela permet les fautes de frappes par exemple en rajoutant une variable intempestive qui fera que la procédure ne fera pas ce que l'on crois écrit.
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
14 sept. 2009 à 08:45
Bonjour,

"chercher" est une procédure qui prend en paramètre "cher" la valeur à chercher et "c" la colonne de recherche> "C" est la colonne de reherche ? Ce n'est pas le cas sur ma feuille "base".

Ce que je cherche à comprendre, c'est comment on arrive à avoir une recherche quelle que soit la case dans la case dans laquelle on saisit la recherche (Nom ou prénom, ...).

Pour les DIM, si je scomprends bien, il suffit de resaisir le code tel quel, quelle que soit le type de recherche; c'est bien ça ?

Ensuite, je tente de comprendre
With Sheets("base")
If rech = "" Then Exit Sub
Do
Set sel = .Cells.Find(What:=rech, After:=.Cells(l, c), _
LookIn:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
If sel Is Nothing Then Exit Do
If sel.Column <> c Then Exit Do
If sel.Row <= l Then Exit Do
l = sel.Row
valide = True
For i = 1 To 4
If recherche.Controls("TextBox" & i).Value <> "" _
And InStr(1, LCase(.Cells(l, i).Value), LCase(recherche.Controls("TextBox" & i).Value)) = 0 Then valide = False
Next i
If valide Then
recherche.ListBox1.AddItem _
(.Cells(l, 1).Value & " " & _
.Cells(l, 2).Value & " " & _
.Cells(l, 3).Value & " " & _
.Cells(l, 4).Value)
recherche.ListBox1.List(n, 2) = sel.Row
n = n + 1
End If
Loop
End With
End Sub

Mais là, c'est coton pour moi...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
14 sept. 2009 à 09:13
bonjour

En fait, pour ne pas dupliquer la fonction de recherche autant de fois que tu as de critères, j'ai créé une procédure "chercher" qui est lancée dès que l'un des contrôles de saisie est modifié et avec les arguments utilisés, la fonction sait quel est le contrôle qui a été modifié mais la recherche doit aussi tenir compte de la valeur des autres.

Les Dim sont des définitions de variables et ne sont pas des instructions : elles servent à définir la structure de la zone mémoire utilisée.

c'est coton pour moi...

Je comprend bien que ce n'est pas facile car cela utilise des fonctions que tu ne connais pas et en particulier
- Do ... Loop
- For ... next
qui sont des fonctions de boucle qui exécute le code autant de fois que nécessaire.
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
14 sept. 2009 à 16:21
"Les Dim sont des définitions de variables et ne sont pas des instructions : elles servent à définir la structure de la zone mémoire utilisée."
je ne comprends pas, désolé.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
14 sept. 2009 à 17:25
bonjour

Tu sélectionnes Dim dans l'éditeur VBA et tu fais F1 : tu vas avoir des précisions.

Dim sel As Object : défini un objet et en l'occurrence la cellule cherchée
Dim valide As Boolean : défini une zone à zéro ou 1, vrai ou faux
Dim i As Integer : défini un nombre compris entre -32 768 et 32 767
Dim l As Long : défini un nombre avec des valeurs supérieures.

Ensuite ces variables vont récupérer des valeurs et par exemple le numéro de ligne pour l
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
18 sept. 2009 à 06:51
Bonjour,

Bon. J'ai fait une petite pause dans excel, histoire de digéré un peu les codes. Je m'y remets et voici une nouvelle question.

En A1, je saisis le nom de M.X. dans les cases suivantes, B1, C1, ... il y a ses données personnelles qui ne changent pas.

Je voudrias créer une saisie semi-automatique: quand je saisis le nom de M.X et que je valide, les autres cases se remplissent toutes seules avec ses données personnelles.
0
mouhsinooo Messages postés 1 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 18 septembre 2009
18 sept. 2009 à 14:24
Merci
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
19 sept. 2009 à 19:05
???
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
19 sept. 2009 à 21:32
bonjour

je valide, les autres cases se remplissent toutes seules

Pour cela, sans connaitre ton classeur, je pense que tu devrais essayer d'utiliser RECHERCHEV :

=RECHERCHEV(ton nom;la plage de recherche;le nombre de colonnes de décalage;FAUX)
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
21 oct. 2009 à 21:42
Bonsoir GBINFORME,


Je reprends le projet que je dois améliorer considérablement.
De fait, j'ai fait sous word, une maquette pour montrer à quoi cela pourrait ressembler et si c'st possible de le faire.

je peux te le soumettre, svp ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
21 oct. 2009 à 23:33
bonjour

je peux te le soumettre, svp ?
et si c'st possible de le faire.


Tu peux et il n'y a pas grand chose d'impossible...
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
22 oct. 2009 à 09:58
Bonjour,

voici le lien pour télécharger la maquette
http://www.cijoint.fr/cjlink.php?file=cj200910/cijxvVu3qL.docx

J'étais partie sur une recherchev mais cela ne me convient pas.
en effet, avec recherchev, il faudrait que la recehrche s'effectue avec un code pour chaque personne classée dans la BDD.
Mais ce n'est pas comme ça que nous procédons pour faire une recherche de personne.
Nous voulons la rechercher par son Nom ou par son Produit

merci d'avance pour vos conseils et votre aide
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
22 oct. 2009 à 20:05
bonjour

J'ai un module qui fait un peu ce que tu recherches. Je vais regarder comment le mettre à disposition de façon simple.
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
22 oct. 2009 à 21:26
ça marche.
Merci en tous cas.
0
ventou Messages postés 212 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 novembre 2013 32
26 oct. 2009 à 21:10
salut GBINFORME,

Je reviens vers toi pour savoir si tu penses que le projet que je t'ai présenté est réalisable tel quel ou pas...

Bonne nuit
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
7 sept. 2009 à 21:47
bonjour

J'ai tapé des km de code...

Attention, n'oublie pas ceci :

La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry, (1900-1944)

Un code efficace est très concis et ne présente pas d'instructions inutiles.
-1