VBA Selection de la cellule en face de la valeur recherchée
Résolu
Miss_tik76
Messages postés
27
Statut
Membre
-
Miss_tik76 Messages postés 27 Statut Membre -
Miss_tik76 Messages postés 27 Statut Membre -
Bonjour,
Bon le titre n'est pas clair... Alors j'explique :
J'ai des valeurs dans ma colonne A. Il peut y avoir plusieurs fois la même valeur.
Je voudrai pouvoir rechercher une valeur de la colonne A, et que le programme me sélectionne les valeurs correspondantes situées dans la colonne B.
Et avec ces valeurs sélectionnées de la colonne B, je voudrai alimenter une combobox...
Ci-dessous ce que j'ai fait mais ca ne fonctionne pas...
Pouvez vous m'aider s'il vous plait !!!
Merci
Bon le titre n'est pas clair... Alors j'explique :
J'ai des valeurs dans ma colonne A. Il peut y avoir plusieurs fois la même valeur.
Je voudrai pouvoir rechercher une valeur de la colonne A, et que le programme me sélectionne les valeurs correspondantes situées dans la colonne B.
Et avec ces valeurs sélectionnées de la colonne B, je voudrai alimenter une combobox...
Ci-dessous ce que j'ai fait mais ca ne fonctionne pas...
v_commande = commande.Value
'Recherche derniere ligne colonne A
DerligA = Columns("A").Find("*", , , , , xlPrevious).Row
Set Col_A = Range("A2:A" & DerligA)
'Pour diminuer le temps de recherche
Nb_Tr = Application.CountIf(Col_A, v_commande)
If Nb_Tr > 0 Then
Lig = 1
For Iter = 1 To Nb_Tr
Lig = Columns("A").Find(v_commande, Cells(Lig, "A"), , xlWhole).Offset(0, 1).Select
Next Iter
' v_dpr = Selection
With produit
.RowSource = Selection
End With
End If
Pouvez vous m'aider s'il vous plait !!!
Merci
7 réponses
-
je suis pas super en vba donc je vais te donner une idée plutôt algorithmique
variables recherche : chaîne i:entier début i=1 tant que (cellule("A"+i) != "") //cellule("A"+i) retourne la valeur contenu par la cellule "Ai" si cellule("A"+i) == recherche alors ajouterCombo(cellule("B"+i)) //ajouterCombo est une procédure qui ajoute une valeur //dans la combo fin si i=i+1 fin tant que fin -
Ci-dessous comment je l'ai inséré. Mais j'ai du louper un truc car ca ne fonctionne pas
Dim Col_A As Range Dim DerligA, Lig As Integer, Iter As Long Dim v_commande, Nb_Tr As Long v_commande = commande.Value 'Recherche derniere ligne colonne A DerligA = Columns("A").Find("*", , , , , xlPrevious).Row Set Col_A = Range("A2:A" & DerligA) Nb_Tr = Application.CountIf(Col_A, v_commande) If Nb_Tr > 0 Then Lig = 1 For Iter = 1 To DerligA If Cells(Iter, 1) = v_commande Then produit.AddItem Cells(Iter, 2) End If Next End If -
bonjour
Curieux, ca me dit quelque chose ton code !!! ;o)lig = 1 For Iter = 1 To Nb_Tr lig = Columns("A").Find(v_commande, Cells(lig, "A"), , xlWhole).Row ' v_dpr = Selection produit.AddItem Cells(lig, "B").Value Next
ATTention:
on suppose que Produit est le nom de ton combo ?
si oui, il faut préciser le nom de la feuille dans lequel il est situé
ou s'il il est dans un userform écrire Me.produit
a quoi sert v_dpr ? -
Pourquoi ce code vous dit quelque chose ?
J'essayerai votre solution demain ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Après multiple bidouilles, voici le code qui fonctionne...
Private Sub produit_enter() Sheets("Base S").Select Dim Col_A As Range Dim DerligA, Lig, Iter As Integer Dim v_commande, Nb_Tr As Long v_commande = commande.Value With Worksheets("Base S") DerligA = Columns("A").Find("*", , , , , xlPrevious).Row Set Col_A = Range("A2:A" & DerligA) Nb_Tr = Application.CountIf(Col_A, v_commande) If Nb_Tr > 0 Then Lig = 1 For Iter = 1 To Nb_Tr Lig = Columns("A").Find(v_commande, Cells(Lig, "A"), , xlWhole).Row produit.AddItem Cells(Lig, "B").Value Next End If End With End Sub
Je vous remercie tous pour votre aide ! -
Bonjour,
Tu t'embête pour rien la :D
Deja tu essai de diminué le temps de recherche de quelque chose qui prend des micro seconde :D
donc tu peux meme faire une methode bourrin et ça prendra moins de 0.1 sec
du style :
for i=1 to DerligA if cells(i,1) = cequetucherche then combobox1.additem cells(i,2) endif next
L'idée est la par contre je suis pas passé par VBA donc il y a peut etre 1 ou 2 faute de syntaxe.. Hésites pas si besoin de plus -
Met plutot ça :
Dim DerligA, Iter As Integer DerligA = Columns("A").Find("*", , , , , xlPrevious).Row For Iter = 1 To DerligA If Cells(Iter, 1) = commande.Value Then produit.AddItem Cells(Iter, 2) End If Next
testé et ok chez moi ;)