[excel] recherchev et liste...
keiser19
Messages postés
5
Statut
Membre
-
LatelyGeek Messages postés 1759 Statut Membre -
LatelyGeek Messages postés 1759 Statut Membre -
Bonjour,
Dans un classeur excel, j'ai ma base de données sur des produits chimiques.
j'essaie d'automatiser des sorties sur un autre classeur en utilisant la fonction "recherchev" qui remplie une colonne B(formule1):
=SI(ESTVIDE(A11);"";RECHERCHEV(A11;'C:\Specifiques\Produits_Dangereux\[Liste Produits Chimiques.xls]BDD Produits chimiques'!C5:Z820;21;FAUX))
Jusque là tout va bien, elle va bien cherchée les bonnes infos et les place correctement.
Mais mon souci vient du fait que la colonne A se remplira de la même manière (formule2) en fonction cette fois, d'une seule variable.
Exemple: je rentre secteur A en C5
je devrais avoir la liste complete des produits présent en secteur A dans la colonne A, et dans la colonne B les caractéristiques adéquates en fonction des produits de la colonne A.
Or avec recherchev, elle s'arrête seulement au premier résultat :-s
Alors qu'il peut y avoir plusieures lignes (elle ne me sort que le premier produit qu'elle trouve dans "secteur A")
Si quelqu'un a une idée simple sous excel, ou en VBA pour qu'en fonction du secteur rentrée en C5, elle me sorte la liste complète, je suis preneur !!
j'avoue que je patauge depuis un bon moment...
Merci d'avance
Dans un classeur excel, j'ai ma base de données sur des produits chimiques.
j'essaie d'automatiser des sorties sur un autre classeur en utilisant la fonction "recherchev" qui remplie une colonne B(formule1):
=SI(ESTVIDE(A11);"";RECHERCHEV(A11;'C:\Specifiques\Produits_Dangereux\[Liste Produits Chimiques.xls]BDD Produits chimiques'!C5:Z820;21;FAUX))
Jusque là tout va bien, elle va bien cherchée les bonnes infos et les place correctement.
Mais mon souci vient du fait que la colonne A se remplira de la même manière (formule2) en fonction cette fois, d'une seule variable.
Exemple: je rentre secteur A en C5
je devrais avoir la liste complete des produits présent en secteur A dans la colonne A, et dans la colonne B les caractéristiques adéquates en fonction des produits de la colonne A.
Or avec recherchev, elle s'arrête seulement au premier résultat :-s
Alors qu'il peut y avoir plusieures lignes (elle ne me sort que le premier produit qu'elle trouve dans "secteur A")
Si quelqu'un a une idée simple sous excel, ou en VBA pour qu'en fonction du secteur rentrée en C5, elle me sorte la liste complète, je suis preneur !!
j'avoue que je patauge depuis un bon moment...
Merci d'avance
A voir également:
- [excel] recherchev et liste...
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Excel liste déroulante en cascade - Guide
- Si et ou excel - Guide
- Déplacer colonne excel - Guide
8 réponses
Dans le menu Données, tu choisis Données externes - Créer une requête, ta source de connées c'est XLFiles, et après tu tatonnes...
Ca me paraît plus du ressort de MSQuery que de la RECHERCHEV, mais je ne trouve pas comment rendre le critère variable.
Fichtre!!! Il doit y avoir une solution, quand même!!!
Au cas où tu ne connaîtrais pas MSQuery:
A partir du classeur où tu veux voir apparaître tes données extraites:
Menu Données
Données externes
Créer une requête - Source de données Excel Files*
Tu choisis ton fichier, les champs qui t'intéressent, tu mets un critère si tu veux... Mais c'est là que je bloque. Tu peux mettre "A" pour le secteur, mais je ne sais pas rendre ce "A" variable.
Peut-être qu'on peut modifier ça dans le SQL mais je ne connais pas la syntaxe. Il va bien y avoir un spécialiste qui va passer derrière moi... J'espère!
J'espère ne pas t'avoir mené dans une impasse...
Fichtre!!! Il doit y avoir une solution, quand même!!!
Au cas où tu ne connaîtrais pas MSQuery:
A partir du classeur où tu veux voir apparaître tes données extraites:
Menu Données
Données externes
Créer une requête - Source de données Excel Files*
Tu choisis ton fichier, les champs qui t'intéressent, tu mets un critère si tu veux... Mais c'est là que je bloque. Tu peux mettre "A" pour le secteur, mais je ne sais pas rendre ce "A" variable.
Peut-être qu'on peut modifier ça dans le SQL mais je ne connais pas la syntaxe. Il va bien y avoir un spécialiste qui va passer derrière moi... J'espère!
J'espère ne pas t'avoir mené dans une impasse...
Bon comme j'ai l'impression que je n'ai pas été très clair, je mets une image de mon fichier:
[URL=https://imageshack.com/][IMG]http://img106.imageshack.us/img106/121/imagefichexm9.th.png[/IMG][/URL]
Comment ça marche ?
La personne choisi la civilité (menu déroulant) puis rentre le nom de la personne en case C5 et le prénom en case D5
Une petite formule recherchev va chercher le nom dans une liste dans un autre classeur excel(j'ai d'ailleurs un souci si deux personnes ont le même nom.. je pensais créer une clé avec la concaténation nom+prenom, mais dans ce cas comment s'écrit la formule ? =recherchev(C5&D5; etc ) est-ce que cette valeur cherchée correspondra bien à la clé que je créerai ?), pour en sortir le secteur où travail cette personne dans la case B7.
Bon continuons, pour arriver à mon problème ou je bloque et que j'évoquais dans mon post précèdent:
dans la colonne A, je veux obtenir la liste complète de tous les produits suivant le secteur obtenu en B7.(Sachant que dans un autre classeur j'ai référenté tous les produits par secteurs) Or si je fais une recherchev du type =SI(ESTVIDE(B7);"";RECHERCHEV(B7;'P:\Specifiques\Produits_Dangereux\[Liste Produits Chimiques.xls]BDD Produits chimiques'!C5:Z820;2;FAUX)), (Les secteurs se trouvant dans la colonne C et les produits dans la colonne D) je n'aurai que le premier produit du secteur qui sortira et non pas la liste complète...
Toute aide sera la bienvenue merci bcp d'avance,
signé: un chargé d'HSE qui commence à désespérer
PS: merci Latelygeek, mais je ne connais pas du tout msquery, et de plus je ne pourrai l'utiliser (si c'est une logiciel) pour cause de demande de validation qui prendra 1 mois..or je dois aboutir avant...
Merci en tout cas pour l'intérêt que tu portes à mon sujet
[URL=https://imageshack.com/][IMG]http://img106.imageshack.us/img106/121/imagefichexm9.th.png[/IMG][/URL]
Comment ça marche ?
La personne choisi la civilité (menu déroulant) puis rentre le nom de la personne en case C5 et le prénom en case D5
Une petite formule recherchev va chercher le nom dans une liste dans un autre classeur excel(j'ai d'ailleurs un souci si deux personnes ont le même nom.. je pensais créer une clé avec la concaténation nom+prenom, mais dans ce cas comment s'écrit la formule ? =recherchev(C5&D5; etc ) est-ce que cette valeur cherchée correspondra bien à la clé que je créerai ?), pour en sortir le secteur où travail cette personne dans la case B7.
Bon continuons, pour arriver à mon problème ou je bloque et que j'évoquais dans mon post précèdent:
dans la colonne A, je veux obtenir la liste complète de tous les produits suivant le secteur obtenu en B7.(Sachant que dans un autre classeur j'ai référenté tous les produits par secteurs) Or si je fais une recherchev du type =SI(ESTVIDE(B7);"";RECHERCHEV(B7;'P:\Specifiques\Produits_Dangereux\[Liste Produits Chimiques.xls]BDD Produits chimiques'!C5:Z820;2;FAUX)), (Les secteurs se trouvant dans la colonne C et les produits dans la colonne D) je n'aurai que le premier produit du secteur qui sortira et non pas la liste complète...
Toute aide sera la bienvenue merci bcp d'avance,
signé: un chargé d'HSE qui commence à désespérer
PS: merci Latelygeek, mais je ne connais pas du tout msquery, et de plus je ne pourrai l'utiliser (si c'est une logiciel) pour cause de demande de validation qui prendra 1 mois..or je dois aboutir avant...
Merci en tout cas pour l'intérêt que tu portes à mon sujet
On a bien compris ton problème, mais RECHERCHEV ne te renverra qu'UNE valeur. Tu peux laisser tomber cette piste. Tu as essayé MSQuery????
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe ne suis plus très loin... je suis passé par les macros :
'
' test
' Macro enregistrée le 02/04/2008
'
Selection.AutoFilter Field:=22, Criteria1:="<>1", Operator:=xlAnd
ActiveWindow.SmallScroll ToRight:=1
Windows("fiche d'exposition.xls").Activate
Sheets("Fiche d'exposition").Select
Range("B7").Select
Windows("Liste Produits Chimiques.xls").Activate
Selection.AutoFilter Field:=2, Criteria1:="Microbiologie"
Range("C4:C1000").Select
Selection.Copy
Windows("fiche d'exposition.xls").Activate
Range("A11").Select
J'ai créer cette macro en effectuant un test pour le secteur "Microbiologie"
Cette macro sélectionne bien tous les produits d'un secteur et les colle la ou il faut (en A11).
Mon soucis actuel est de rendre le critère de recherche aléatoire, cad suivant le secteur
préchoisi dans le dossier fiche d'exposition.xls, onglet "fiche d'exposition" en D7.
Possible d'intégrer un boucle ? du style si c'est égal a microbiologie alors faire ça:
Selection.AutoFilter Field:=2, Criteria1:="Microbiologie"
si c'est égal à chimie alors faire ça: Selection.AutoFilter Field:=2, Criteria1:="Chimie"
Et ça je ne sais pas du tout faire.... help ?
Tu déclares une variable:
Dim ChoixSecteur as String
Tu lui donnes la valeur de ta cellule B7:
ChoixSecteur = Range("B7").Value
Et tu utilises ChoixSecteur comme critère:
Selection.AutoFilter Field:=2, Criteria1:=ChoixSecteur
Dim ChoixSecteur as String
Tu lui donnes la valeur de ta cellule B7:
ChoixSecteur = Range("B7").Value
Et tu utilises ChoixSecteur comme critère:
Selection.AutoFilter Field:=2, Criteria1:=ChoixSecteur
J'avais réussi avec plusieures boucles IF, mais j'adopte ta méthode, beaucoup beaucoup plus courte, merci Lately ^^
j'obtiens malheureusement une erreur dans les deux cas exactement au même endroit Tout à la fin, à la ligne "activesheet.paste":
Sub macro7()
'
'test
'avec definition de variable
'
'
Windows("liste Produits Chimiques.xls").Activate
Sheets("BDD Produits Chimiques").Select
Selection.AutoFilter field:=22, Criteria1:="<>1"
Windows("fiche d'exposition.xls").Activate
Sheets("fiche d'exposition").Select
Range("D7").Select
Dim ChoixSecteur As String
ChoixSecteur = Range("D7").Value
Windows("liste Produits Chimiques.xls").Activate
Sheets("BDD Produits Chimiques").Select
Selection.AutoFilter field:=2, Criteria1:="=ChoixSecteur"
Range("C4:C1000").Select
Selection.Copy
Windows("fiche d'exposition BLEDINA.xls").Activate
Sheets("fiche d'exposition").Select
Range("A11").Select
ActiveSheet.Paste
End Sub
UNe idée du pourquoi ?
EDIT:
Bon j'ai compris pourquoi ça bug. Le tableau de destination est trop petit par rapport à la liste à copier dedans.
Il faudrait en fait que la macro rajoute 5000 lignes au tableau de destination, puis supprime toute celle dont la valeur est "vide". Ce serait parfait ça..
Une idée ? ^^
j'obtiens malheureusement une erreur dans les deux cas exactement au même endroit Tout à la fin, à la ligne "activesheet.paste":
Sub macro7()
'
'test
'avec definition de variable
'
'
Windows("liste Produits Chimiques.xls").Activate
Sheets("BDD Produits Chimiques").Select
Selection.AutoFilter field:=22, Criteria1:="<>1"
Windows("fiche d'exposition.xls").Activate
Sheets("fiche d'exposition").Select
Range("D7").Select
Dim ChoixSecteur As String
ChoixSecteur = Range("D7").Value
Windows("liste Produits Chimiques.xls").Activate
Sheets("BDD Produits Chimiques").Select
Selection.AutoFilter field:=2, Criteria1:="=ChoixSecteur"
Range("C4:C1000").Select
Selection.Copy
Windows("fiche d'exposition BLEDINA.xls").Activate
Sheets("fiche d'exposition").Select
Range("A11").Select
ActiveSheet.Paste
End Sub
UNe idée du pourquoi ?
EDIT:
Bon j'ai compris pourquoi ça bug. Le tableau de destination est trop petit par rapport à la liste à copier dedans.
Il faudrait en fait que la macro rajoute 5000 lignes au tableau de destination, puis supprime toute celle dont la valeur est "vide". Ce serait parfait ça..
Une idée ? ^^