Comment coder rechercheV en VBA sur excel?

Résolu
petitlila Messages postés 14 Statut Membre -  
petitlila Messages postés 14 Statut Membre -
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
Configuration: Windows XP
Internet Explorer 7.0

16 réponses

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

    Cordialement
    0
  2. LexMarc
     
    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
  3. petitlila Messages postés 14 Statut Membre
     
    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
  4. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  7. petitlila Messages postés 14 Statut Membre
     
    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
  8. vautour88
     
    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
  9. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  10. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  11. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  12. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  13. petitlila Messages postés 14 Statut Membre
     
    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
    1. vautour88
       
      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
  14. petitlila Messages postés 14 Statut Membre
     
    Ben je t'envoi le fichier mais comment on fait?^^
    0
    1. vautour88
       
      met ton email ici ou alors met le fichier sur un ftp
      0
  15. petitlila Messages postés 14 Statut Membre
     
    Bonjour,

    g33ebt5cax28858@jetable.net
    0
  16. petitlila Messages postés 14 Statut Membre
     
    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
  17. petitlila Messages postés 14 Statut Membre
     
    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