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.
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)
.
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." <pav4006@skynet.be> a écrit dans le message de
news:ulA7t4IKEHA.3916@TK2MSFTNGP10.phx.gbl...
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" <nico.s3d@wanadoo.fr> a écrit dans le message de
news:XnF94D3832A28CDnicos3dwanadoofr@63.223.5.254...
Je n'ai jamais essayé de recherches multicritères, mais peut être
que cela devrait fonctionner :
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)
.
AV
Filtre élaboré en VBA ?
Ben voui ! Un petit coup d'enregistreur ça dégrossit pas mal !
AV
Filtre élaboré en VBA ?
Ben voui !
Un petit coup d'enregistreur ça dégrossit pas mal !