Rechercher valeur dans une feuille excel non triée dans un autre

Zoub -  
Morgothal Messages postés 1350 Statut Membre -
Bonjour,

Avant tout je suis novice :-(.
Mon pbm est que j'ai une feuille excel avec des valeurs (uniques) en colonne A. J'ai un autre classeur avec potentiellement les mêmes valeurs uniques en colonne J. (les fichiers ne sont pas triés). Ce que je voudrais c'est une fonction ou macro qui permettrai de rechercher si la valeur du premier se trouve dans le second fichier et qu'excel me renvoi la valeur qui se trouve en colonne T de la ligne correspondante. (en sachant que la colonne T contient une formule mais j'ai besoin que de la valeur)

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    excusez l'incruste
    Macro à installer dans le classeur B

     Option Explicit 
      
     Sub chercher_T_si() 
     Dim Derlig As Integer, Lig As integet 
     Dim Dico As Object 
     Dim T_colA(), T_colE() 
      
     Application.ScreenUpdating = False 
      
     With Sheets(1) 
         Derlig = .Columns("J").Find("*", , , , , xlPrevious).Row 
         Set Dico = CreateObject("scripting.dictionary") 
         For Lig = 1 To Derlig 
              Dico.Add .Cells(Lig, "J").Value, .Cells(Lig, "T") 
         Next 
     End With 
      
     Workbooks.Open Filename:="D:\documents\classeurA.xls"  'A ADAPTER 
     With Sheets(1) 
         .Columns("E").Clear 
          Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row 
          T_colA = Application.Transpose(.Range("A1:A" & Derlig).Value) 
          T_colE = Application.Transpose(.Range("E1:E" & Derlig).Value) 
          For Lig = 1 To Derlig 
              If Dico.exists(T_colA(Lig)) Then T_colE(Lig) = Dico.Item(T_colA(Lig)) 
         Next 
          
         With .Range("E1:E" & Derlig) 
              .Value = Application.Transpose(T_colE) 
              .Borders.Weight = xlThin 
         End With 
     End With 
     End Sub 
    


    la maquette de W
    https://www.cjoint.com/?3Admv54ReqF

    Michel
    1
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      Décidément je suis fan de l'objet dictionnaire :-)
      Bravo michel
      0
  2. Morgothal Messages postés 1350 Statut Membre 184
     
    Bonjour,
    Que signifie "avec potentiellement les mêmes valeurs uniques en colonne J" ?

    Si j'ai bien compris, on a des valeurs uniques dans la colonne A d'une feuille d'un classeur A,
    on a peut-être les mêmes valeurs potentiellement uniques dans la colonne J d'une feuille d'un classeur B,
    et il faudrait renvoyer la valeur de la colonne T du classeur B si et seulement si la valeur de la colonne J est aussi dans la colonne A de la feuille du classeur B ?
    0
  3. Zoubs Messages postés 6 Statut Membre
     
    merci pour ta réponse express.

    les valeurs en colonne J sont uniques également mais il se peut qu'on ne trouve pas une ou plusieurs valeurs du premier fichier dans le deuxieme. mais tu as bien cerné le probleme c'est bien ça. je ne peut pas le faire avec la fonction recherche car mes tableaux ne sont pas triés.

    pS. "et il faudrait renvoyer la valeur de la colonne T du classeur B si et seulement si la valeur de la colonne J est aussi dans la colonne A de la feuille du classeur A ".

    Merci bcp

    Z
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      Ah oui exact, du classeur A :-)
      Il faut renvoyer la valeur de "classeurB.Feuille.colonneT" sous quelle forme et où ça ?
      0
  4. Zoubs Messages postés 6 Statut Membre
     
    La valeur trouvée doit être renvoyée dans le Classeur A colonne E. mais pas sous forme de formule comme il est dans le classeur B mais en valeur.

    Z
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Zoubs Messages postés 6 Statut Membre
     
    Salut les amis, dsl pour ce feedback tardif mais grosse aprem d'activité,

    J'ai testé la macro de michel (merci d'ailleurs).
    Erreur de compilation : type défini par l'utilisateur non défini. Euh c'est du chinois ou du czech ? :-D

    Z
    0
    1. Zoubs Messages postés 6 Statut Membre
       
      Il y avait peut être une erreur de frappe "integet" je l'ai remplacé par integer.
      Nvelle erreur : erreur d'exécution '91' : variable objet ou variable de bloc With non définie
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Ok pour interget
      mais je viens de réessayer et ca marche

      le classeur macro est le B et doit être le classeur actif et non le A :cela déclenche l'erreur 91
      autrement dit: le classeur à l'écran avant de déclencher la macro est le classeur B


      Ne pas oublier non plus d'adapter le chemin du classeur A
      Workbooks.Open Filename:="D:\documents\classeurA.xls" 'A ADAPTER
      0
    3. Zoubs
       
      Ok, j'ai du me tromper qq part demain a-t-on je réessayerai au boulot et je te tiens au courant, en tout cas merci bcp
      0
  7. Zoubs Messages postés 6 Statut Membre
     
    Salut les amis,

    Alors, j'ai fait selon les recommandations de michel, ce que j'avais oublié de dire c'est que le fichier B contenait plusieurs onglets et l'onglet ou était les infos était en 5e position. Je l'ai déplacé en 1 et Msg erreur : erreur execution '457' : Cette clé est déjà associé a un élément de cette collection. une idée d'où ça peut venir ?
    Z
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Tu as des doublons dans ta liste
      0
    2. Zoubs Messages postés 6 Statut Membre
       
      Michel, tu est un génie mec !!!!!!. ça fonctionne et en effet tu avais raison il y avait bien des doublons.
      A ton avis quel ligne de code faudrait modifier si l'onglet du classeur B est le 4e ?

      merci bcp
      0
    3. Morgothal Messages postés 1350 Statut Membre 184
       
       With Sheets(1)
      devient
       With Sheets(4)
      :-)
      0