OVH Cloud OVH Cloud

Recherche mutliple en VBA²

12 réponses
Avatar
Thierry Euzenot
Bonjour, j'ai dans une feuille de calcul un tableau d'une centaine de lignes
et de 10 colonnes. Ce tableau représente en fait des parties de références.

cela donne à peu près ça :

radiateur B | 500 | thermostat gauche |
radiateur B | 500 | thermostat droit |
radiateur B | 1000| thermostat gauche |
radiateur C | 500 | thermostat gauche |
radiateur C | 500 | thermostat droit |
radiateur B | 1500| thermostat gauche |
etc.

Je cherche à retrouver un numéro de ligne unique en fonction des différents
critères (radiateur, puissance, thermostat). Existe-t-il une fonction simple
en vba pour faire une recherche à critères multiples ?

Pour l'instant je fais une série de tests (utilisant des instruction If)
afin de réduire le champ de recherche et de finir par tomber sur la bonne
ligne, mais je pense qu'il y a beaucoup plus simple.

Si quelqu'un à une solution :o)

2 réponses

1 2
Avatar
Paul V.
Bonjour,

Cela marche d'ailleurs très bien ;-)

un exemple de procédure avec des variables

Sub RechercheMultipleVBA()

a = Chr(34) & "radiateur B " & Chr(34)
b = 500
c = Chr(34) & " thermostat gauche " & Chr(34)

MsgBox Evaluate("sumproduct((a4:a9= " & a & ")*(B4:B9=" & b & _
")*(C4:C9=" & c & ")*(D4:D9))")

End Sub

--
HTH

Paul V.

Thierry Euzenot wrote:
Oui je pense que cela doit fonctionner :o)

En fait ça marche aussi avec SOMMEPROD et quelques bidouillages

Merci ^^

"Paul V." a écrit dans le message de
news:
Bonjour,

J'ai une petite suggestion qui pourrait faire avancer ton problème
;-) Mais ma solution nécessite que tu ajoutes une colonne à ton
tableau.
Je reprend ton exemple dans une feuille en A4:C9
J'ajoute en d4:d9 la formule :
=ligne()
qui me donne le numéro de chaque ligne.

Dans ta procédure, tu peux alors utiliser une instruction inspirée de
l'instruction suivante :
MsgBox [Sumproduct((A4:A9="radiateur B ")*(B4:B9P0)*(C4:C9="
thermostat gauche ")*(D4:D9))]
qui te donne le numéro de ligne pour les trois critères choisis càd
radiateur b, 500 et thermostat gauche..

A toi de remplacer par des variables ou tout autre moyen pour lire
tes critères ce qui te permettras d'avoir autan de critères que tu
veux.


--
HTH

Paul V.

Thierry Euzenot wrote:
Ben en fait j'avais déjà essayé et ça ne fonctionne pas :-(

Bon mon bidouillage fonctionne (je trie les colonnes et ensuite je
fais des tests descendants jusqu'au résultat final) mais la manière
n'est pas très belle.

Merci pour vos réponses

"NICO.S" a écrit dans le message de
news:
Je n'ai jamais essayé de recherches multicritères, mais peut être
que cela devrait fonctionner :

a = radiateur B
b = 500
c = thermostat gauche

Cells.Find(What:=a And b And c)


Bon courage !

NICO.S


écrivait
news:2a2901c4284e$849fecd0 $:

Slt
Sans connaitre VBA, moi je me sert de la fonction filtre
automatique dans l'onglet DONNEE
A voir ...


Doswel
-----Message d'origine-----
Bonjour, j'ai dans une feuille de calcul un tableau d'une
centaine de lignes

et de 10 colonnes. Ce tableau représente en fait des
parties de références.


cela donne à peu près ça :

radiateur B | 500 | thermostat gauche |
radiateur B | 500 | thermostat droit |
radiateur B | 1000| thermostat gauche |
radiateur C | 500 | thermostat gauche |
radiateur C | 500 | thermostat droit |
radiateur B | 1500| thermostat gauche |
etc.

Je cherche à retrouver un numéro de ligne unique en
fonction des différents

critères (radiateur, puissance, thermostat). Existe-t-il
une fonction simple

en vba pour faire une recherche à critères multiples ?

Pour l'instant je fais une série de tests (utilisant des
instruction If) afin de réduire le champ de recherche et de
finir par
tomber sur la bonne

ligne, mais je pense qu'il y a beaucoup plus simple.

Si quelqu'un à une solution :o)


.












Avatar
AV
Filtre élaboré en VBA ?


Ben voui !
Un petit coup d'enregistreur ça dégrossit pas mal !

AV

1 2