[excel] recherchev et liste...

keiser19 Messages postés 5 Statut Membre -  
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   -
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
Configuration: Windows XP
Excel 2003

8 réponses

  1. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    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...
    1
  2. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    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...
    0
  3. keiser19 Messages postés 5 Statut Membre
     
    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
    0
  4. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    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????
    0
    1. keiser19 Messages postés 5 Statut Membre
       
      Je ne connais pas du tout, je suis en train de lire les infos que je trouve à ce sujet sur le net
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. keiser19 Messages postés 5 Statut Membre
     
    Je 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 ?
    0
  7. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    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
    0
  8. keiser19 Messages postés 5 Statut Membre
     
    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 ? ^^
    0
  9. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    Essaye Selection.Paste, peut-être que ça serait mieux...
    0