Equivalent RECHERCHEV en VBA

Bonjour à tous.

J'ai développé une petite macro qui retraite le fichier sur lequel la fonction est lancée, en allant cherche une valeur dans un fichier stocké.

Voici son code :

Sub Test()

'
   Dim derli, r, path
   path = "'Z:\Dossier\devis\[DEVIS.xls]Lignes'!$F$1:$Z$9999"

   With ActiveSheet.UsedRange
    derli = .Row + .Rows.Count - 1
   End With

   Application.ScreenUpdating = False
   For r = 1 To derli Step 1
     If Range("B" & r).Text = "P" Then
       Range("G" & r).FormulaLocal = "=RECHERCHEV(C" & r & ";" & path & ";5;FAUX)"
     End If
   Next r
'
End Sub

Elel fonctionne correctement, mais le problèle c'est que cela créé un lien entre les deux fichiers. Idéalement, je voudrais que ma macro recopie la valeur. Il faudrait donc que je puisse "éxécuter" cette fonction Excel, récupérer la valeur, et ensuite la copier dans la cellule que je veux.

Est ce possible ?

Merci de votre aide

Re bonjour,

Personne ne saurait comment faire ? Ou bien alors avec une solution de contournement ?

Merci d'avanve

Bonsoir,

Pas facile sans fichier mais essaye de remplacer

Range("G" & r).FormulaLocal = "=RECHERCHEV(C" & r & ";" & path & ";5;FAUX)" 

par

Range("G" & r) = Application.WorksheetFunction.Match("C" & r, path, EntireColumn, 0)

Amicalement

Dan

Merci !

Je testerai ça dés que je peux

Erreur

Bonjour,

Je reviens sur ce point, car la solution testée me renvoie une erreur :

"Erreur d'éxécution 1004

Impossible de lire la propriété Match de la classe WorksheetFuntion"

en me surlignant

Application.WorksheetFunction.Match("C" & r, path, EntireColumn, 0)

Une idée de la provenance de l'erreur ?

Bonsoir,

la fonction Match, équivalent de la fonction EQUIV dans une feuille ne supporte que 3 arguments (valeur_cherchée;matrice_recherche;type)

dans ton code, il y en a 4....

essaie :

Range("G" & r) = Application.WorksheetFunction.Match("C" & r, path, 0)

quoique :

Range("G" & r) = Application.WorksheetFunction.Match(Range("C" & r).value, path, 0)

me semble mieux....

Désolé, la ligne de code que j'ai citée n'est pas la bonne

En effet, d'après mes recherches, l'équyivalent de RECHERCHEV est Vllokup et non pas MATCT.

J'ai donc remplacé

  "Range("G" & r).FormulaLocal = "=RECHERCHEV(C" & r & ";" & path & ";5;FAUX)""

par

Set MyRange = Range("C" & r)
Range("G" & r) = Application.WorksheetFunction.VLookup(MyRange, path, 5, False)

Edit : Suite à ton edit, j'ai rajouté le RANGE dans les paramètres de VLookup, mais cela ne change rien (en tout ca spas encore). L'erreur semble plutôt venir de l'appel à la fonction VLookup qui n'a pas l'air d'être reconnue.

Edit 2 : Nouveau changement de code

Apparemment, cela vient du fait qu'ucune valeur n'est trouvée par le système.

La nouvelle ligne est

'Range("G" & r) = Application.WorksheetFunction.VLookup(MyRange.Value, path, 5, False)

En affichant MyRange.value, le contenu me semble correct. Tout comme les autres paramètres, puisque cela fonctionne en utilisant RECHERCHEV...

Bizarre quand même

L'erreur vient je pense du faut que VLookup attend un objet de type Range en lieu et place de "path" qui est une simple variable texte.

J'essaie donc de créer mon Range.

 Set wbExcel = Application.Workbooks.Open("C:\DEVISEXCEL.xls")    
    Set wsExcel = wbExcel.Worksheets(1)
    pathSh = wsExcel.Range("B1:G19")

Mais cela me met

l'indice n'appartient pas à la sélection

Pourtant le fichier exiete bien, est bien ouvert par le système etc etc.

Bonjour tous,

Et pourquoi ne pas garder ton premier code, mais figer la valeur ensuite ?

Sub Test()

'
   Dim derli, r, path
   path = "'Z:\Dossier\devis\[DEVIS.xls]Lignes'!$F$1:$Z$9999"

   With ActiveSheet.UsedRange
    derli = .Row + .Rows.Count - 1
   End With

   Application.ScreenUpdating = False
   For r = 1 To derli Step 1
     If Range("B" & r).Text = "P" Then
       Range("G" & r).FormulaLocal = "=RECHERCHEV(C" & r & ";" & path & ";5;FAUX)"
     Range("G" & r) = Range("G" & r)
     End If
   Next r
'
End Sub 

En effet, très bonne idée.

J'ai testé, et cela fonctionne

Merci

Rechercher des sujets similaires à "equivalent recherchev vba"