vba RECHERCV (VLookup) avec condition si (if)

debidebo67

XLDnaute Nouveau
Bonjour,

Je souhaite mettre à jour uniquement les prix unitaire de la colonne D par leur ETAT dans la colonne E non validés (validé = "OK")

Ma macro fonctionne mais ne tien pas compte de la condition !?! elle me recopie tous les prix même ceux qui sont validés

Tableau :

colonne A ------colonne B------- colonne C------colonne D-------colonne E
Code-----------Désignation------Qté------------Prix unitaire------ETAT ("OK" = validé; "" non validé)

Pourriez-vous m'aider ?


Sub testRECHERCHVetRECHRCHE()
On Error Resume Next

Dim ETAT As Variant

For Each ETAT In Sheets("Dtest").Range("E20:E25")
If ETAT.Text = "" Then

For Each P In Worksheets("Dtest").Range("D20:D25")
P.Value = Application.WorksheetFunction.VLookup(P.Offset(0, -3).Value, Worksheets("ptest").Range("A4:B8"), 2)
Next

End If
Next
End Sub


Merci à ceux qui auront quelques instant à me consacrer.
 

Pièces jointes

  • test Dd.xlsm
    26.6 KB · Affichages: 38
  • test Dd.xlsm
    26.6 KB · Affichages: 48
  • test Dd.xlsm
    26.6 KB · Affichages: 51

simraill

XLDnaute Occasionnel
Re : vba RECHERCV (VLookup) avec condition si (if)

Violà le fichier!

En fait ton erreur c'est que tu as mis
Code:
    For Each P In Worksheets("Dtest").Range("D20:D25")
    P.Value = Application.WorksheetFunction.VLookup(P.Offset(0, -3).Value, Worksheets("ptest").Range("A4:B8"), 2)
    Next
dans ta boucle if.

Donc ça le test sur la première ligne, lance recherchev sur toutes les lignes, puis fait le test sur la deuxième ligne et ainsi de suite.

J'espére que tu as comprs mon explication
Simraill
 

Pièces jointes

  • test Dd.xlsm
    22.3 KB · Affichages: 50
  • test Dd.xlsm
    22.3 KB · Affichages: 55
  • test Dd.xlsm
    22.3 KB · Affichages: 62

debidebo67

XLDnaute Nouveau
Re : vba RECHERCV (VLookup) avec condition si (if)

Merci, j'ai compris.

Cependant pour Else : je souhaiterai que les prix dont l'état est "ok" ne soient pas remplacer par "" mais que la valeur affichée avant l'exécution de la macro soit la même.
Les prix est état "ok" ne doivent plus être modifiés!

J'ai donc remplacé :"" par Nothing

Else
Sheets("Dtest").Range("D" & i).Value = Nothing

Merci beaucoup, c'est parfaitement opérationnel !
 

Discussions similaires

Réponses
7
Affichages
340

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2