Comment coder rechercheV en VBA sur excel?

Résolu/Fermé
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 15 juil. 2008 à 14:12
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 17 juil. 2008 à 15:00
Bonjour,
J'ai crée une userform avec une liste déroulante dans laquelle j'ai placée une liste d'entreprise.
Ensuite on clique sur rechercher et cela doi afficher le nom de l'entreprise et tous ses composants.
Il faut savoir que a base de donnée contient 2 colonnes, une pour les entreprises et la seconde pour tous les composants que l'entreprise vends.

Je sais faire rechercheV dans excel mais il faudrait que je le code et je n'y arrive pas.

Si quelqu'un peu m'aider!!
Merci d'avance!

Petitlila
A voir également:

16 réponses

Bonjour
Pourquoi ne pas récupérer le listindex de la liste ?!

Cordialement
0
Bonsoir,
a moins de vouloir absolument utiliser un USF
le plus rapide serait de faire une liste de validation et d'utiliser la Recherchev
C'est moins joli ... mais c'est rapide

On peut utiliser aussi une ComboBox (liste déroulante) avec LinkCell (la cellule qui change en fonctuion du choix) et FillRange (la liste des tous les choix possibles...


@+ LM
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 08:29
Bonjour,
Alors tout d'abord merci de m'avoir répondu!
Pour DDalmont, je ne connaissais pas cette fonction merci! Mais comment on fait pour la récupéré la taille des colonnes a une importance? car j'ai 500 lignes!

Pour LexMarc, utilier la liste de validation et utiliser la Recherchev,je vois pas.
J'utilise deja une comboBox avec dedans toutes mes entreprises et je voudrais que quand on en choissise une et que l'on clique sur valider que cela m'affiche la ligne entiere de l'entreprise (nom entreprise + ses composants)dans une autre feuille.

Merci!

Petitlila
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 10:34
Bonjour,
J'ai essayée ça :


Private Sub CommandButton1_Click()
Dim formulaire As Object
Dim intRangee As Integer

Label2.Caption = ComboBox1.Value

Label2.Caption.AddItem formulaire.Cells(intRangee, 2)


End Sub


et ça me marque "erreur de compilation qualificateur incorrect".

Si quelqu'un trouve ce qu'il ne va pas!

Merci d'avance!

Petitlila
0
Private Sub CommandButton1_Click()
Dim formulaire As Object
Dim intRangee As Integer >>>> il faudrai lui assigner une valeur

Label2.Caption = ComboBox1.Value

Label2.Caption.AddItem formulaire.Cells(intRangee, 2) 'N oublie pas qu'un label n est pas une liste deroulante
ma ligne proposee serai donc NOMDETACOMBOBOX.AddItem formulaire.Cells(intRangee, 2).value
formulaire je ne sais pas trop a quoi ce la correcpond peut etre >>> worksheets("formulaire").cells....

End Sub
0

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

Posez votre question
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 10:58
Merci!
Mais ça me marque "erreur de compilation membre de methode ou de données introuvables"


voici le code :


Private Sub CommandButton1_Click()
Dim formulaire As Object
Dim intRangee As Integer

Label2.Caption = ComboBox1.Value

CommandButton1.AddItem Worksheets("formulaire").Cells(intRangee, 2).Value


End Sub

cela me surligne private sub ... en jaune!

et formulaire je me suis trompée il faut mettre BD c'est le non de ma feuille ou se trouve le tableau!
0
mais quesque tu voudrais que ton code face exactement je n ai pas tout compri, et aussi pour ta combo >>>> ComboBox1.Text ca sera mieu
bon courage
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 11:24
Donc, j'ai crée une userform qui comporte une combobox avec le nom des entreprises (colonne A de la feuille BD) et deux boutons Rechercher et Quitter.

Dans ma feuille BD il y a trois colonne A = entreprises et B = tous les produits qu'elle fabrique et C = divers.

L'utilisateur choisi dans la combobox le nom de l'entreprise dont il veut voir se qu'elle fabrique il clique sur Recherche et le nom de l'entreprise choisi et ses composants doivent d'afficher dans un label sur l'userform.

J'ai deja réussi a afficher l'entreprise choisi mais je n'arrive pas a afficher ses composants.

If faudrait afficher la ligne du fabricant choisi (colonne A, B, C)

Ca fait un moment que je suis dessus en plus suis sûre que c'est un truc tout facile!

Merci de l'aider!!
0
ca n irai pas mieu en supprimant le bouton de recherche, quand on selectionne un element dans la comboboxNomEntreprise cela rempli la seconde comboboxArticle et quand on selectionne dans cette derniere cela rempli un label avec les divers autre info (colonne C).
Voir dans le label un resumer de tout. dit moi ce que tu en pense
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 13:38
Ce serais plus simple?
Fin en tout cas il y a qu'une combobox, celle des entreprises.
Donc en gros des que l'utilisateur choisi son entreprise il y a 2 labels en dessous dans le 1 il y a la colonne b et dans le label 2 il y a la colonne c?

Oui en tt cas se serais plus simple visuellement!

Mais pour coder se que je n'arriv pas c'est d'attribuer une colonne à 1 label!
0
Je vais te donner une bonne partie du code, ce aui est en majuscule est a adapter

Cette partie dans la macro appellant l ouverture de la fenetre, la ou ce trouve le .show ou .load
for t = 8 to 500'a la place du 8 le debut du nom des entreprises, et a la place du 500 la ligne max de ta feuille
if Worksheets("NOMFEUILLE").Cells(t, 1) <> "" then
UserForm1.ComboBoxENTREPRISE.AddItem Worksheets("INV").Cells(t, 1).Value
t = t + 1
endif
next t

cette partie tu la met dans la comboboxENTREPRISE, tu clic 2 fois dessu sous VBA pour faire apparaitre le code et tu met ceci:

if UserForm1.ComboBoxENTREPRISE.text <> "" then
a=8
Do While Worksheets("NOMFEUILLE").Cells(a, 1) <> UserForm1.ComboBoxENTREPRISE.text
a =a + 1
Loop
b=a+1
Do While Worksheets("NOMFEUILLE").Cells(b, 1) =""
b =b + 1
UserForm1.ComboBoxARTICLE.AddItem Worksheets("NOMFEUILLE").Cells(b-1, 2).Value
Loop
else
UserForm1.ComboBoxARTICLE.clear
endif


Et enfin la derniere partie que tu met dans ComboBoxARTICLE
if UserForm1.ComboBoxARTICLE.text <> "" then
a=8
Do While Worksheets("NOMFEUILLE").Cells(a, 2) <> UserForm1.ComboBoxARTICLE.text
a =a + 1
Loop
NOMDULABEL.text =While Worksheets("NOMFEUILLE").Cells(a, 3)
else
NOMDULABEL.text = ""
endif


si tu as d question ...
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 14:47
Alors, j'ai testé, ton premier code marche!

Pour le deuxieme, j'y ai changé quelques trucs car je n'es pas de deuxieme comboboxarticle mais un label que j'ai apeller Désignation

et pour le troisieme je l'ai mi dans le label divers mais ça me met ça me met une erreur la ou c'est souligné sa marque "membre de méthode ou de donnée introuvable"

Private Sub Divers_Click()
If UserForm1.Désignation.Text <> "" Then
a = 8
Do While Worksheets("BD").Cells(a, 2) <> UserForm1.Désignation.Text
a = a + 1
Loop
UserForm1.Divers.text = While Worksheets("BD").Cells(a, 3)
Else
Divers.Text = ""
End If

End Sub


et je n'es pas compris les a et les b ils correspondent a quoi?
en tout cas merci vraimant de passer du temps sur mon problème!
0
UserForm1.Divers.text = Worksheets("BD").Cells(a, 3).value
les a et les b c est .... je saurai pas t expliquer clairement comme ca mais ce son de simple variable qui serve a faire avancer le programme et a ce deplacer dans le tableau
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 14:48
En fait me suis trompé c'est ce code la qui pose problème à la compilation :

Private Sub ComboBox1_Change()

If UserForm1.ComboBox1.Text <> "" Then
a = 2
Do While Worksheets("BD").Cells(a, 1) <> UserForm1.ComboBox1.Text
a = a + 1
Loop
b = a + 1
Do While Worksheets("BD").Cells(b, 1) = ""
b = b + 1
UserForm1.Désignation.AddItem Worksheets("BD").Cells(b - 1, 2).Value
Loop
Else
UserForm1.Désignation.Clear
End If
0
mais ici c est un code pour une combobox si Désignation n en est pas une ca m ira pas, et tkt j ai rien d autre a faire au boulo ...
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 15:24
lol ok!
Bon pour "UserForm1.Divers.text = Worksheets("BD").Cells(a, 3).value" il y a plus d'erreurs!

Et non une deuxième combobox se serait pas pratique pour certaines entreprises il y a une quinzaine de composants se serait pas pratique a lire et il y a pas un problème sur le code :

Private Sub ComboBox1_Change()

If UserForm1.ComboBox1.Text <> "" Then
a = 2
Do While Worksheets("BD").Cells(a, 1) <> UserForm1.ComboBox1.Text
a = a + 1
Loop
b = a + 1
Do While Worksheets("BD").Cells(b, 1) = ""
b = b + 1
UserForm1.Désignation.AddItem Worksheets("BD").Cells(b - 1, 2).Value
Loop
Else
UserForm1.Désignation.Clear
End If
?

Elles se finissent pas les boucles c normal?


Donc en gros ce code il doit rechercher dans la colonne b la cellule qui est associé au résultat du combobox et l'afficher dans le label Désignation

Donc il doit avoir qu'une seule boucle non? celle ou il recherche le nom de l'entreprise?
0
mais en faite jme suis imagine ton fichier excel et jme suis di que c etait disposer comme ceci, di moi si je me trompre

boite 1| article1 |comment
| article2 |comment
| article3 |comment
| article4 |comment
| article5 |comment
boite 2| article1 |comment
| article2 |comment
| article3 |comment
.... et ainsi de suite
di moi si je sui a cote de la plaque

alors ce morceau de code recherche l entreprise selcetionnee, le numero de la ligne(a), continue a avancer avec la 2 eme boucle (b) qui s arrete avant la prochaine entreprise. et puis on prend les article de a jusque b et on les met dans la combobox, dans un label je ne sais pas comment cava se passer ...

edit: il y aura un probleme pour la derniere entreprise, la variable b va defenir infinie, je t enverrai un petit if a remettre par la suite
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 15:50
En fait il est comme ça :

entreprise1 description divers
blabla1 led, boulon, carte (la il y a rien au cas ou les futurs utilisateurs voudront mettre quelque chose)
blabla2 mémoire, étiquette /
...
...

il y a que la colonne c (divers ) qui est vide.
Ok j'ai compris pour a, b mais on peut pas faire plus simple fin je veux dire c'est super compliqué!
la combobox est deja remplit avec RowSource.
0
ui c est surement possible mais je n ai pas trop d idee pour faire plus simple, desole mais je n ai toujours pas tres bien compri a quoi ta feuille ressemblai
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 16:12
Ben je t'envoi le fichier mais comment on fait?^^
0
met ton email ici ou alors met le fichier sur un ftp
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 17:17
Bonjour,

g33ebt5cax28858@jetable.net
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
17 juil. 2008 à 11:01
Bonjour,

alors j'ai trouvé un code que j'ai modifié.

Il y a toujours la combobox et en dessous j'ai enlevé les labels et mis a la place une texbox.
Mais j'ai une erreur dans mon code et je 'arrive pas a la corrigé!

Private Sub ComboBox1_Change()
Fabricant = ComboBox1.Value

Columns(1).Find(Fabricant, , , , , Previous).Select
Désignation = Selection.Offset(0, 1).Value
Divers = Selection.Offset(0, 2).Value

TextBox1. AddItem"Désignation " & Désignation <= l'erreur se trouve a AddItem
TextBox1.AddItem "Divers " & Divers

End Sub


Et je voudrais aussi que des qu'on choisi une nouvelle entreprise dans la combobox on initialise a 0 a texbox (que la textbox soi blanche)!

merci d'avance!


Petitlila
0
petitlila Messages postés 14 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
17 juil. 2008 à 15:00
Bonjour,

J'ai trouvée!!
Je met la réponse comme ça si quelqu'un en a besoin...
Il n'est pas parfait par exemple quand l'entreprise n'est pas dans la combobox il se bloque.
donc...


Code de la combobox :


Private Sub ComboBox1_Change()
Fabricant = ComboBox1.Value

Columns(1).Find(Fabricant, , , , , Previous).Select
Désignation = Selection.Offset(0, 1).Value
Divers = Selection.Offset(0, 2).Value

TextBox1.Text = "Désignation : " & Désignation
TextBox2.Text = "Divers : " & Divers

End Sub


Code bouton Quitter


Private Sub CommandButton2_Click()
Unload UserForm1
End Sub


Private Sub UserForm1_Initialize()
Range("A2").Select

For Compteur = 1 To 20

ValeurFabricant = ActiveCell
ActiveCell.Offset(1, 0).Select

ComboBox1.AddItem ValeurFabricant

If ValeurFabricant = "" Then
Exit For
End If
Next Compteur
End Sub

Il n'est pas parfait il y a des erreurs mais il marche!

En tout cas merci aux personnes qui m'ont aidé!
0