J'ai écrit un code dans VBA où une recherche V est effectuée si une certaine condition est remplie. Cela fonctionne bien, mais maintenant comment puis-je faire la même chose aux valeurs de données de ligne suivantes sans la nécessité de réécrire le code.
Sub starting_stock() If Worksheets("out").Range("E2").Value = "" Then Set ItemRef = Worksheets("out").Range("A2") Set MyRange = Worksheets("Inventory").Range("A:G") Worksheets("out").Range("D2").Value = Application.WorksheetFunction.VLookup(ItemRef, MyRange, 7, False) End If End Sub
3 Réponses :
Tout ce que vous avez à faire est de l'envelopper dans un En savoir plus sur pour code> boucle. Voir ci-dessous:
pour code> LOOPS ici: https://excelmacromastery.com/vba-for-loop/ p> p>
Merci. C'est très utile. Mais j'ai un problème avec pour i = 2 à 3 ligne, vous voyez que les données à V-recherchez dépendent des données saisies dans Productref, donc je ne peux pas avoir de boucle de fonctionner en continu lorsqu'il n'y aura même pas de données dans le Colonne de produit Ref
Merci à votre contribution. Je viens de modifier votre code et ça a fonctionné.
Je suppose que c'est ce que vous recherchez:
Vous souhaitez sélectionner une cellule dans une colonne et exécuter le code et utilisera la valeur de la colonne A de la même ligne pour effectuer la Vlookup et coller la valeur dans la colonne D avec la même ligne?
Dans ce cas, ActiveCell.row est probablement ce dont vous avez besoin. P>
Sub starting_stock() If Worksheets("out").Range("E" & ActiveCell.Row).Value = "" Then Set ItemRef = Worksheets("out").Range("A" & ActiveCell.Row) Set MyRange = Worksheets("Inventory").Range("A:G") Worksheets("out").Range("D" & ActiveCell.Row).Value = Application.WorksheetFunction.VLookup(ItemRef, MyRange, 7, False) End If End Sub
Intéressant. Le code fonctionne si la cellule est sélectionnée par l'utilisateur. Sinon, un message d'erreur est affiché. Que pensez-vous de ma réponse?
Je ne peux pas dire que la question concerne la réponse de quelque manière que ce soit.
Je viens de comprendre que, en plus de vérifier si la cellule E (Qté Out) est nulle, la maladie vérifie également si A est null dans la boucle tandis que. S'il y a une donnée, il entre dans la boucle et la déclaration IF pour V-Recherche. Sinon, rien ne se passe.
J'ai trouvé la solution suivante:
Sub Button_Click() Dim i As Integer i = 2 Do While Worksheets("out").Cells(i, 1).Value <> "" If Worksheets("out").Range("E" & i).Value = "" Then Set ItemRef = Worksheets("out").Range("A" & i) Set MyRange = Worksheets("Current Inventory").Range("F:M") Worksheets("out").Range("D" & i).Value = Application.WorksheetFunction.VLookup(ItemRef, MyRange, 8, False) End If i = i + 1 Loop End Sub
Utilisez une formule à la place et faites-la glisser. Je ne vois aucune raison pour VBA dans ce cas
J'ai édité ma question pour apporter plus de clarification.