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

Fermé
Zoub - 3 janv. 2013 à 10:51
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 - 4 janv. 2013 à 11:30
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)
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 3/01/2013 à 12:22
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
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
3 janv. 2013 à 13:08
Décidément je suis fan de l'objet dictionnaire :-)
Bravo michel
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
3 janv. 2013 à 10:56
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
Zoubs Messages postés 6 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 4 janvier 2013
3 janv. 2013 à 11:05
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
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
3 janv. 2013 à 11:09
Ah oui exact, du classeur A :-)
Il faut renvoyer la valeur de "classeurB.Feuille.colonneT" sous quelle forme et où ça ?
0
Zoubs Messages postés 6 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 4 janvier 2013
3 janv. 2013 à 11:23
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zoubs Messages postés 6 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 4 janvier 2013
3 janv. 2013 à 17:34
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
Zoubs Messages postés 6 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 4 janvier 2013
3 janv. 2013 à 17:54
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 3/01/2013 à 19:00
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
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
Zoubs Messages postés 6 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 4 janvier 2013
4 janv. 2013 à 08:59
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2013 à 09:25
Tu as des doublons dans ta liste
0
Zoubs Messages postés 6 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 4 janvier 2013
4 janv. 2013 à 11:22
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
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
4 janv. 2013 à 11:30
 With Sheets(1)
devient
 With Sheets(4)
:-)
0