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é !
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 !!!!