[résolu]Jointure/recherchev en vba

Jointure/recherchev en vba [résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 03-05-2012 à 15:36:54    

Bonjour,
 
Je vous explique mon probleme, j'ai deux fichiers comportant une même colonne, et il me faut faire une jointure, apres recherche je n'ai trouver que Vlookup pour m'aider.
 
Et donc je me lance dans vlookup:
 
Je parcoure la colonne, et ajouter le vlookup a chaque ligne.
Probleme : mon Vlookup ne fonctionne pas. Je pense qu'il y a un probleme sur les champs.
si vous pouviez m'aider :)
 

Code :
  1. Function createVlook(wk As Variant, wk2 As Variant)
  2. Dim FL1 As Worksheet, NoCol As Integer
  3. Dim NoLig As Long, Var As Variant
  4.     wk.Activate
  5.     Set FL1 = ActiveWorkbook.ActiveSheet
  6.     NoCol = 24 'lecture de la colonne 1
  7.     For NoLig = 1 To Split(FL1.UsedRange.Address, "$" )(4)
  8.         Var = FL1.Cells(NoLig, NoCol)
  9.         With FL1
  10.          .Range("" & lettre_col(NoCol) & NoLig).Value = WorksheetFunction.VLookup(.Range("M" & NoLig).Value, "[" & wk2.Name & "]" & wk2.Sheets(1).Name & "!$1:$65536", 8, False)
  11.         End With
  12.     Next
  13.     Set FL1 = Nothing
  14. End Function


 
exemple en dur de recherchev :
 

Code :
  1. =RECHERCHEV(M1;'[Extraction_importa_cap_PR.xls]8e492742-33ad-4f15-9384-cdd5935'!$A$1:$CY$319;8;FAUX)


Message édité par ichigo56 le 04-05-2012 à 10:13:23

---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
Reply

Marsh Posté le 03-05-2012 à 15:36:54   

Reply

Marsh Posté le 04-05-2012 à 07:50:25    

Bonjour,
 
Je ne crois pas qu'il faille (??) reconstituer la formule avec '[NomDuClasseur]NomDeLaFeuille! ... etc.
C'est avec .Formula ou .FormulaLocal qu'il faudrait faire ça.
 
Pour ton problème, essaies comme ça :

Code :
  1. With FL1
  2.     .Range("" & lettre_col(NoCol) & NoLig).Value = WorksheetFunction.VLookup(.Range("M" & NoLig).Value, wk2.Sheets(1).Range("1:65536" ), 8, False)
  3. End With


 
Par contre, attention : si la valeur n'est pas trouvée, tu auras une erreur d’exécution qu'il faudra gérer.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 04-05-2012 à 08:45:37    

vave a écrit :

Bonjour,
 
Je ne crois pas qu'il faille (??) reconstituer la formule avec '[NomDuClasseur]NomDeLaFeuille! ... etc.
C'est avec .Formula ou .FormulaLocal qu'il faudrait faire ça.
 
Pour ton problème, essaies comme ça :

Code :
  1. With FL1
  2.     .Range("" & lettre_col(NoCol) & NoLig).Value = WorksheetFunction.VLookup(.Range("M" & NoLig).Value, wk2.Sheets(1).Range("1:65536" ), 8, False)
  3. End With


 
Par contre, attention : si la valeur n'est pas trouvée, tu auras une erreur d’exécution qu'il faudra gérer.


 
 
MErci pour l'aide, mais le probleme reste le même,impossible de lire la propriete vlookup de la classe Worksheetfunction :(


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
Reply

Marsh Posté le 04-05-2012 à 10:08:59    

Tu es sûr que la valeur cherchée est bien dans la table où tu la recherche ?
 
Au pire, essaies avec True à la place de False, tu verras si ça vient de ça ou pas.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 04-05-2012 à 10:13:02    

Je penses qu'il y avait plusieurs chose de pas extra, le fait que certain colonne dans la recherche soit vide, je l'ai gere avec un "On Error resume next".
 
Et j'ai refais mon code, moins compliqué et au miracle cela fonctionne :

Code :
  1. .Cells(NoLig, NoCol).Value = Application.WorksheetFunction.VLookup(Cells(NoLig, Colid).Value, wk2.Sheets(1).Range("1:65536" ), 8, False)


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed