D
David
Guest
Bonjour ou plutôt bonsoir à tous!
J'ai un problème plutôt singulier. En effet, j'ai fais une boucle qui me permette de répéter une fonction recherchev et ainsi de récupérer toutes les lignes (informations concernant des ventes) d'un tableau correspondant à un numéro de commande.
Le problème, c'est que lorsque j'exécute le script, il me renvoie toutes les lignes du tableau et change les valeurs contenues dans la première colonne de mon tableau (c'est à dire l'ensemble des numéros de commande) selon le nombre à rechercher . J'ai trier mon tableau et fait tout un tas de tests. Je dois dire que je ne sais plus trop quoi faire. N'étant qu'un débutant en vba et en programmation, peut être n'ai je pas choisi le bon type de boucle ou fais une grosse bourde qui m'échappe. Je joins ci-après mon script. Merci de votre aide. bon j'y retourne. Bonne soirée
Sub achat()
Dim numcomm As Variant
Dim coord As Variant
Dim mvt As Long
Dim ligne As Variant
coord = "COUNTA (importbd!R" + CStr(ligne) + "C1:R30C9)" [//je récupère le nombre de ligne qui consitue la liste de données]
numcomm = InputBox("Entrez le numéro de commande du client")
Range("E4").Select
ActiveCell.FormulaLocal = numcomm
mvt = 22
ligne = 1
Range("A150").Select
ActiveCell.FormulaR1C1 = "=CountA(importbd!R" + CStr(ligne) + "C1:R30C1)"
coord = Range("A150").Value
While coord > 0
nbcell = Range("A" & mvt).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,7)),0,VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,1))"
Range("D" & mvt).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,8)),0,VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,8))"
Range("E" & mvt).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,9)),0,VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,9))"
mvt = mvt + 1
coord = coord - 1
Wend
End Sub
J'ai un problème plutôt singulier. En effet, j'ai fais une boucle qui me permette de répéter une fonction recherchev et ainsi de récupérer toutes les lignes (informations concernant des ventes) d'un tableau correspondant à un numéro de commande.
Le problème, c'est que lorsque j'exécute le script, il me renvoie toutes les lignes du tableau et change les valeurs contenues dans la première colonne de mon tableau (c'est à dire l'ensemble des numéros de commande) selon le nombre à rechercher . J'ai trier mon tableau et fait tout un tas de tests. Je dois dire que je ne sais plus trop quoi faire. N'étant qu'un débutant en vba et en programmation, peut être n'ai je pas choisi le bon type de boucle ou fais une grosse bourde qui m'échappe. Je joins ci-après mon script. Merci de votre aide. bon j'y retourne. Bonne soirée
Sub achat()
Dim numcomm As Variant
Dim coord As Variant
Dim mvt As Long
Dim ligne As Variant
coord = "COUNTA (importbd!R" + CStr(ligne) + "C1:R30C9)" [//je récupère le nombre de ligne qui consitue la liste de données]
numcomm = InputBox("Entrez le numéro de commande du client")
Range("E4").Select
ActiveCell.FormulaLocal = numcomm
mvt = 22
ligne = 1
Range("A150").Select
ActiveCell.FormulaR1C1 = "=CountA(importbd!R" + CStr(ligne) + "C1:R30C1)"
coord = Range("A150").Value
While coord > 0
nbcell = Range("A" & mvt).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,7)),0,VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,1))"
Range("D" & mvt).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,8)),0,VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,8))"
Range("E" & mvt).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,9)),0,VLOOKUP(" + numcomm + ",importbd!R" + CStr(ligne) + "C1:R" + CStr(coord) + "C9,9))"
mvt = mvt + 1
coord = coord - 1
Wend
End Sub