Macro VBA - Recherche V

Salut à tous

Ci joint le fichier sur lequel je rencontre des problèmes.

Dans le premier onglet je cherche à appliquer une recherche V sur les colonnes AB; AD; AE; AF par rapport à la base de données sur l'onglet feuil1(2). Pour la première ligne je les ai inscrite manuellement...

Premièrement est ce que c'est possible d'automatiser RECHERCHEV par un code VBA. Faut il passer par l'intermédiaire d'un bouton ?

Merci

Bonjour,

Faire un RECHERCHEV en VBA n'aurait aucun sens.

Cette macro - à coller dans un module standard (Module1...) - fait les mêmes calculs qu'un RECHERCHEV (en plus rapide !)

Sub galopin()
Dim i%, ii%, k%, x%, ArrBD, ArrC, ArrRef
i = Feuil1.Range("F1").End(xlDown).Row
ii = Feuil2.Range("A1").End(xlDown).Row
ArrBD = Feuil2.Range("A1:E" & ii)
ArrRef = Feuil1.Range("F1:F" & i)
ArrC = Feuil1.Range("AB1:AF" & i)
For k = 2 To i
   For x = 2 To ii
      If ArrBD(x, 1) = ArrRef(k, 1) Then
         ArrC(k, 1) = ArrBD(x, 2)
         ArrC(k, 3) = ArrBD(x, 3)
         ArrC(k, 4) = ArrBD(x, 4)
         ArrC(k, 5) = ArrBD(x, 5)
         Exit For
      End If
   Next
Next
Feuil1.Range("AB1:AF" & i) = ArrC
End Sub

Pour exécuter une macro il n'est pas nécessaire de créer un bouton : Tu peux utiliser la commande Macros de l'onglet Développeur.

A+

Joliiiiiii ! Merci pour tout


Par contre je remarque une chose ...

Dans la colonne AC (écart), quand l'écart est de 0 euros entre le montant annoncé et le prix SAP, la recherche V manuel fonctionne ( c'est à dire il m'affiche bien le prix SAP, le doc achat, le N° frais T, et le Transport.

Cependant, concernant le fichier qui passe par le code, les lignes ou l'écart (montant vs prix SAP) est égal à 0, rien ne s'affiche sur ces lignes la.

Comment résoudre ce souci ?

Sur les deux fichiers distincts, on le voit sur les lignes 71 et 72..... (ci joint les doc avec recherche V écrite manuellement et recherche V qui passe par le code VBA).

Comment résoudre ce souci ?

Merci une fois de plus

Bonjour,

Je ne comprend pas ta remarque : je n'ai pas calculé d'écart car tu n'as rien précisé !

Pour les lignes 71 et 72 tu as triché ! il n'y a pas de RECHERCHEV sur ton classeur manuel ce sont des chiffres inscrits en dur...

Si tu prolonges les RECHERCHEV sur ces lignes tu verras des #N/A car il n'y au aucune correspondance à trouver

Il n'y a donc pas de résultat sur ces lignes avec macro car pas de correspondance à trouver...

La macro corrigée pour afficher l'écart :

Sub galopin()
Dim i%, ii%, k%, x%, ArrBD, ArrC, ArrRef, o As Range
i = Feuil1.Range("F1").End(xlDown).Row
ii = Feuil2.Range("A1").End(xlDown).Row
ArrBD = Feuil2.Range("A1:E" & ii)
ArrRef = Feuil1.Range("F1:F" & i)
ArrC = Feuil1.Range("AB1:AF" & i)
For k = 2 To i
   For x = 2 To ii
      If ArrBD(x, 1) = ArrRef(k, 1) Then
         ArrC(k, 1) = ArrBD(x, 2)
         ArrC(k, 3) = ArrBD(x, 3)
         ArrC(k, 4) = ArrBD(x, 4)
         ArrC(k, 5) = ArrBD(x, 5)
         Exit For
      End If
   Next
Next
Feuil1.Range("AB1:AF" & i) = ArrC
For Each o In Range("AC2:AC" & i)
   o = o.Offset(, -2) - o.Offset(, -1)
Next
End Sub

A+

ah oui exact j'ai pas vu que les avais marqué "en dur" sur la recherche V manuel !!!!

Quand on trouve pas de correspondance (donc avec #N/A) je dois les rentrer manuellement pour la correction (et faire disparaitre le "N/A) donc c'est pour sa qu'elles étaient marqué "en dur".

Donc en fait tout fonctionne !!!!

Merci encore !!!!

Rechercher des sujets similaires à "macro vba recherche"