Code vba pour recherchev avec plusieurs valeurs cherchées

Fermé
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016 - 17 mai 2016 à 15:30
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 - 9 juin 2016 à 11:18
bonjour.

j'aimerais, pour une fonction recherchev sur excel, utiliser plusieurs valeurs cherchées , mais cela ne fonctionne pas. Il faudrait donc que je puisse coder un programme vba qui puisse me faire la même chose.
Avez-vous des idées pour pouvoir m'aider s'il vous plait?
Merci d'avance
A voir également:

7 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 mai 2016 à 15:41
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
18 mai 2016 à 08:45
bonjour
Merci pour la réponse mais j'ai juste les bases en codage vba donc je vais joindre une photo pour que vous compreniez mon problème.
J'ai crée une base de données sur une autre feuille renseignant la longueur la largeur, le diamètre, le type , le prix de vente, ainsi que le matériaux. J'aimerais retrouver automatiquement le prix de vente à partir des autres données, pour que je n'ai pas à le chercher dans l'autre base de données, qui risque de s'agrandir, car cela deviendrait long.
Merci d'avance pour vos réponses.
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
19 mai 2016 à 14:02
est ce que vous avez une solution pour mon problème? Je suis toujours dessus
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681 > tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
25 mai 2016 à 08:44
Bonjour,

C'est possible en utilisant la fonction recherchevma (= recherchev multiples arguments) que j'ai développée (voir code ci-dessous).

RECHERCHEVMA
Cette fonction renvoie la valeur correspondante à une colonne d’une table en fonction des valeurs cherchées.

La syntaxe de cette fonction est :
RECHERCHEVMA (table ; no_index_col; valeur_cherchée _1 ; valeur_cherchée _2 ; … ; valeur_cherchée _n)

• table: Plage de cellules qui contient les données. Vous pouvez utiliser une référence à une plage (par exemple, A2:D8) ou un nom de plage. C’est sur les valeurs des colonnes 1 à n de table respectives à chaque argument de valeur_cherchée, que portent les différentes valeurs cherchées. Ces valeurs peuvent être du texte, des nombres ou des valeurs logiques.

• no_index_col: Numéro de la colonne de l’argument table dont la valeur correspondante doit être renvoyée. Si l’argument no_index_col est égal à 1, la fonction renvoie la valeur de la première colonne de l’argument table ; si l’argument no_index_col est égal à 2, la valeur de la deuxième colonne de l’argument table est renvoyée, et ainsi de suite.

• valeur_cherchée_i: La valeur à chercher dans la colonne i de la table selon la position i de l’argument valeur_cherchée. Le nombre d’arguments pour valeur_cherchée peut varier de 1 à n. Si une des valeurs cherchées n’est pas trouvée dans l’argument table, la fonction RECHERCHEVMA renvoie la valeur d’erreur #N/A.

CODE


Function RECHERCHEVMA(table As Range, indice_colonne As Integer, ParamArray arguments())

RECHERCHEVMA = CVErr(xlErrNA)
i_lig_max = table.Worksheet.UsedRange.Rows.Count
i_arg_max = UBound(arguments)
For i_lig = 1 To i_lig_max
For i_arg = 0 To i_arg_max
If table.Columns(i_arg + 1).Rows(i_lig) <> arguments(i_arg) Then Exit For
Next
If i_arg > UBound(arguments) Then
RECHERCHEVMA = table.Columns(indice_colonne).Rows(i_lig)
End If
Next

End Function
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016 > thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024
25 mai 2016 à 12:37
merci beaucoup pour cette réponse, mais est ce que vous pouvez me donner un exemple svp?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
25 mai 2016 à 15:43
Bonjour a vous deux,

un exemple avec la fonction de Thev, qu'il vous faudra adapter vu que nous n'avons pas votre fichier

https://www.cjoint.com/c/FEznQ7FVjgf
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
25 mai 2016 à 16:49
Bon exemple. Rien à ajouter.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
26 mai 2016 à 15:34
Bonjour,

Ca ne peut pas marcher a cause de la difference des positions de colonnes entre la base et votre feuille de saisie et en plus dans cette feuille les champs changent en fonction des saisies voir image

0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
26 mai 2016 à 22:21
même en intégrant des listes déroulantes conditionnelles?
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
26 mai 2016 à 23:24
Dans la fonction que j'ai développée,
la première valeur est cherchée dans la première colonne de la table,
la seconde valeur est cherchée dans la deuxième colonne de la table, et ainsi de suite ...
Si tu veux donc effectuer une recherche sur type, forme, épaisseur, longueur, largeur, marge, ces champs dans ta base de données doivent être contigus et être placés dans les colonnes de début, c'est à dire 1 à 6.
 
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
30 mai 2016 à 11:07
j'ai fais la modification comme tu me l'as suggéré. est ce que tu connais un programme vba pour pouvoir faire une recherche verticale et ainsi retrouver le prix en fonction de toutes ces données?
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681 > tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
30 mai 2016 à 13:01
Si tu as modifié ta base comme suggéré, ma fonction VBA devrait répondre à ta demande.
Envoies ta nouvelle version.
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
30 mai 2016 à 15:25
0

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

Posez votre question
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
30 mai 2016 à 17:35
Les données de recherche ne sont pas dans des colonnes contiguës au niveau de ta base.
matière : colonne A, type: colonne F, épaisseur : colonne F, longueur : colonne M, largeur : colonne P

Il faudrait :
matière : colonne A, type: colonne B, épaisseur : colonne C, longueur : colonne D, largeur : colonne E

0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
30 mai 2016 à 20:34
j'ai crée une troisième où les données de recherche sont contigues
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681 > tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
30 mai 2016 à 21:37
Oui, les données de recherche sont bien contiguës dans la troisième feuille mais le prix n'y figure pas
ci-joint ton fichier plus léger avec la fonction intégrée
https://www.cjoint.com/c/FEEtKnH5MzO
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
3 juin 2016 à 09:27
https://www.cjoint.com/c/FFdhzXsnq6g
voici donc le nouveau fichier mis à jour.
les données contigues avec le prix sont dans la dernière colonne.
merci d'avance
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681 > tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
3 juin 2016 à 14:15
ci-joint fichier adapté :
1-ajout de ma fonction : recherchevma
2- ajout d'une fonction "vide" pour la formule en G6 de la Feuil2
3- recadrage de la Feuil3

https://www.cjoint.com/c/FFdmj7A6zFb
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
6 juin 2016 à 10:40
merci pour cette fonction. mais est ce qui serait possible de faire des listes déroulantes en fonction des listes précédentes je m'explique avec un exemple
Pour l'alu, il y a seulement des barres et des tôles. les tôles peuvent avoir une épaisseur allant de 3 à 100, avec la longueur et largeur prédéfinies.
Est ce que il est possible lorsque que l'on prend l'alu dans la première liste, que les autres listes déroulantes ne sélectionnent seulement les dimensions correspondantes, et non toutes les dimensions? Que la sélection des dimensions soit dependante de celle d'avant.
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
7 juin 2016 à 16:33
Il est certes possible de conditionner une liste déroulante par une autre mais il faudrait être plus précis sur ta demande:
A- de quelle feuille s'agit-il ? Feuil2 ?
B- quelle est la séquence de sélection ?
1- matière, 2-type, 3-forme, 4- épaisseur... ?
C- La sélection du type a-t-elle une influence sur les listes déroulantes en séquence, etc ...
0
tumankisial Messages postés 27 Date d'inscription mardi 17 mai 2016 Statut Membre Dernière intervention 10 juin 2016
9 juin 2016 à 09:25
A-Il s'agit de la feuille 3
B- séquence de sélection : toutes les données
C-je ne comprends pas la question
...Je sais c'est un peu complexe ce que je demande, dsl :/
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
9 juin 2016 à 11:18
La feuille 3, c'est celle qui est nommée Feuil1 ?? Dans cette feuille, il n'y aucun menu déroulant, mais uniquement des filtres !
Pour que la demande soit claire, il faut donner un exemple .
0