Programmation
87fred
Messages postés
40
Statut
Membre
-
87fred Messages postés 40 Statut Membre -
87fred Messages postés 40 Statut Membre -
Bonjour,
J'ai de nouveau un souci de programmation, je souhaite pouvoir retenir un valeur parmi plusieurs possibilités en imposant des condition.
En clair, je travail sur une base de donné, et je souhaite pouvoir récupérer la pièce la moins chère parmi les pièce de la même référence. Et j'ai plusieurs référence sur la même feuille excel, ce qui change pour les pièces qui on la même référence c'est le fournisseur et la marque de la pièce.
Voila une image de ma base de donnée pour mieux comprendre.
Je suis débutant sur VBA et j'aurai besoin d'aide pour créer mon programme.merci
J'ai de nouveau un souci de programmation, je souhaite pouvoir retenir un valeur parmi plusieurs possibilités en imposant des condition.
En clair, je travail sur une base de donné, et je souhaite pouvoir récupérer la pièce la moins chère parmi les pièce de la même référence. Et j'ai plusieurs référence sur la même feuille excel, ce qui change pour les pièces qui on la même référence c'est le fournisseur et la marque de la pièce.
Voila une image de ma base de donnée pour mieux comprendre.
Je suis débutant sur VBA et j'aurai besoin d'aide pour créer mon programme.merci
A voir également:
- Programmation
- Application de programmation - Guide
- Programmation sms - Guide
- Programmation binaire - Guide
- Programmation vb - Télécharger - Langages
- Programmation logo tortue télécharger - Télécharger - Études & Formations
14 réponses
Désolé voilà la Bonne version de mon programme avec commentaire, que tu peu copier avec les commentaire en changeant les trucs souligné:D
les ' te permettent de mettre des commentaires
Par contre tu fera attention, j'ai fait une petite erreur n'ayant pas d'importance pour l'éxecution du problème, mais dans la première ligne ou je déclare les variables, j'ai déclaré "produit as string", alors que je n'utilise pas la variable produit, tu peut donc supprimer "produit as string," et rajouter Dim
Soit:
Sub Nomduprogramme()
'la variable ligne est un entier
Dim ligne As Integer
'mise à l'état initial des variables
ligne = "première ligne de la liste"
Prix = cell("colone des prix", ligne)
'Boucler jusqu'à ce que la cellule colonne des ref, ligne soit vide
Do Until IsEmpty(cell("colone ref article", ligne))
'si la cellule prix de l'article est moins élevé kle moins chère des prix on enregistre le prix et la ref de l'article
If cell("colone des prix", ligne) < Prix Then
Prix = cell("colone des prix", ligne)
ref = cell("colone ref article", ligne)
'sinon on ne fait rien et on referme la conditionnel
End if
'on rajoute 1 à la variable ligne pour descendre d'une ligne
ligne = ligne + 1
'On boucle (retour a do until)
Loop
'On affiche le résultat
MsgBox ("Le produit le moins chère est " & ref & ",il coute " & Prix)
End Sub
les ' te permettent de mettre des commentaires
Par contre tu fera attention, j'ai fait une petite erreur n'ayant pas d'importance pour l'éxecution du problème, mais dans la première ligne ou je déclare les variables, j'ai déclaré "produit as string", alors que je n'utilise pas la variable produit, tu peut donc supprimer "produit as string," et rajouter Dim
Soit:
Sub Nomduprogramme()
'la variable ligne est un entier
Dim ligne As Integer
'mise à l'état initial des variables
ligne = "première ligne de la liste"
Prix = cell("colone des prix", ligne)
'Boucler jusqu'à ce que la cellule colonne des ref, ligne soit vide
Do Until IsEmpty(cell("colone ref article", ligne))
'si la cellule prix de l'article est moins élevé kle moins chère des prix on enregistre le prix et la ref de l'article
If cell("colone des prix", ligne) < Prix Then
Prix = cell("colone des prix", ligne)
ref = cell("colone ref article", ligne)
'sinon on ne fait rien et on referme la conditionnel
End if
'on rajoute 1 à la variable ligne pour descendre d'une ligne
ligne = ligne + 1
'On boucle (retour a do until)
Loop
'On affiche le résultat
MsgBox ("Le produit le moins chère est " & ref & ",il coute " & Prix)
End Sub
Par contre si c'est les marques qui changent et pas les refs, à la place de "colonne ref article" tu mettra la "colonne marque article", je suppose que t'avais compris;)
Salut
alors je vais essayer de te filer un corps de programme qui marcherais:
Sub Nom()
Produit As String, ligne As Integer
ligne = 0
Prix = 0
Do Until IsEmpty(cell("colone ref article", ligne))
If cell("colone des prix", ligne) < Prix Then
Prix = cell("colone des prix", ligne)
ref = cell("colone ref article", ligne)
ligne = ligne + 1
Loop
MsgBox ("Le produit le moins chère est " & ref & ",il coute " & Prix)
End Sub
alors je vais essayer de te filer un corps de programme qui marcherais:
Sub Nom()
Produit As String, ligne As Integer
ligne = 0
Prix = 0
Do Until IsEmpty(cell("colone ref article", ligne))
If cell("colone des prix", ligne) < Prix Then
Prix = cell("colone des prix", ligne)
ref = cell("colone ref article", ligne)
ligne = ligne + 1
Loop
MsgBox ("Le produit le moins chère est " & ref & ",il coute " & Prix)
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai modifier ton code pour qu'il s'adapte a ma demande mais sa ne marche que pour la premiere ligne, les autre ligne me plante excel.
voila mon code :
Sub PrixMini()
'la variable ligne est un entier
Dim ligne As Integer
ligne = 2
Do Until IsEmpty(Cells(ligne, 9))
If Cells(ligne, 9) = UserForm1.ComboRef Then
'mise à l'état initial des variables
Prix = Cells(ligne, 12)
'Boucler jusqu'à ce que la cellule colonne des ref, ligne soit vide
Do Until IsEmpty(Cells(ligne, 9))
'si la cellule prix de l'article est moins élevé ke le moins chère des prix on enregistre le prix et la ref de l'article
If Cells(ligne, 12) < Prix Then
Prix = Cells(ligne, 12)
ref = Cells(ligne, 9)
fournisseur = Cells(ligne, 2)
marque = Cells(ligne, 3)
'sinon on ne fait rien et on referme la conditionnel
End If
'on rajoute 1 à la variable ligne pour descendre d'une ligne
ligne = ligne + 1
'On boucle (retour a do until)
Loop
'On affiche le résultat
MsgBox ("Le produit le moins chère est " & ref & " de la marque" & marque & " disponible chez " & fournisseur & ",il coute " & Prix & " €")
Else
UserForm1.Hide
End If
Loop
End Sub
voila mon code :
Sub PrixMini()
'la variable ligne est un entier
Dim ligne As Integer
ligne = 2
Do Until IsEmpty(Cells(ligne, 9))
If Cells(ligne, 9) = UserForm1.ComboRef Then
'mise à l'état initial des variables
Prix = Cells(ligne, 12)
'Boucler jusqu'à ce que la cellule colonne des ref, ligne soit vide
Do Until IsEmpty(Cells(ligne, 9))
'si la cellule prix de l'article est moins élevé ke le moins chère des prix on enregistre le prix et la ref de l'article
If Cells(ligne, 12) < Prix Then
Prix = Cells(ligne, 12)
ref = Cells(ligne, 9)
fournisseur = Cells(ligne, 2)
marque = Cells(ligne, 3)
'sinon on ne fait rien et on referme la conditionnel
End If
'on rajoute 1 à la variable ligne pour descendre d'une ligne
ligne = ligne + 1
'On boucle (retour a do until)
Loop
'On affiche le résultat
MsgBox ("Le produit le moins chère est " & ref & " de la marque" & marque & " disponible chez " & fournisseur & ",il coute " & Prix & " €")
Else
UserForm1.Hide
End If
Loop
End Sub
le programme me trouve un prix mini, pour ma première ligne de combobox parmi tous mes prix sans tenir conte de ma référence, et pour les autre ligne ca plante.
en testant dans le vide avec F8 ca j'ai pas de problème
j'ai l'impression que comme ma référence et n'est pas sur ma "ligne" il c plus quoi faire
j'ai l'impression que comme ma référence et n'est pas sur ma "ligne" il c plus quoi faire
quel serait le pb là alors:s
parce que je ne vois pas bien là:s
ça devrais marcher:s
quel erreur t'indique t'il?
parce que je ne vois pas bien là:s
ça devrais marcher:s
quel erreur t'indique t'il?
hey ba la:s
car même en cas d'erreur le programme ne devrais pas boucler car tu n'a pas un nombre infinit de ligne pleines:s
la je crois que l'on va avoir besoin d'aide extérieur:(
car même en cas d'erreur le programme ne devrais pas boucler car tu n'a pas un nombre infinit de ligne pleines:s
la je crois que l'on va avoir besoin d'aide extérieur:(
J'ai réussi a supprimer le problème de boucle infini, j'ai donc ce donc:
Dim ligne As Integer
ligne = 2
Do Until IsEmpty(Cells(ligne, 9))
If Cells(ligne, 9) = UserForm1.ComboRef Then
'mise à l'état initial des variables
Prix = Cells(ligne, 12)
'Boucler jusqu'à ce que la cellule colonne des ref, ligne soit vide
Do Until IsEmpty(Cells(ligne, 9))
'si la cellule prix de l'article est moins élevé ke le moins chère des prix on enregistre le prix et la ref de l'article
If Cells(ligne, 12) < Prix Then
PrixRevu = Cells(ligne, 12)
Fournisseur = Cells(ligne, 2)
Marque = Cells(ligne, 3)
Else
If Cells(ligne, 12) = Prix Then
PrixRevu = Cells(ligne, 12)
Fournisseur = Cells(ligne, 2)
Marque = Cells(ligne, 3)
End If
End If
Prix = PrixRevu
'on rajoute 1 à la variable ligne pour descendre d'une ligne
ligne = ligne + 1
'On boucle (retour a do until)
Loop
'On affiche le résultat
UserForm1.TextFournisseur = Fournisseur
UserForm1.TextMarque = Marque
UserForm1.TextPrix = PrixRevu
Else
ligne = ligne + 1
End If
Loop
End Sub
mais il il ne tien toujours pas compte de ma référence, sauf pour ma ligne de départ. c'est a dire qu'il recherce le prix mini a partir de la ligne de la référence imposant, il ne prend pas en compte celles d'avant.
Dim ligne As Integer
ligne = 2
Do Until IsEmpty(Cells(ligne, 9))
If Cells(ligne, 9) = UserForm1.ComboRef Then
'mise à l'état initial des variables
Prix = Cells(ligne, 12)
'Boucler jusqu'à ce que la cellule colonne des ref, ligne soit vide
Do Until IsEmpty(Cells(ligne, 9))
'si la cellule prix de l'article est moins élevé ke le moins chère des prix on enregistre le prix et la ref de l'article
If Cells(ligne, 12) < Prix Then
PrixRevu = Cells(ligne, 12)
Fournisseur = Cells(ligne, 2)
Marque = Cells(ligne, 3)
Else
If Cells(ligne, 12) = Prix Then
PrixRevu = Cells(ligne, 12)
Fournisseur = Cells(ligne, 2)
Marque = Cells(ligne, 3)
End If
End If
Prix = PrixRevu
'on rajoute 1 à la variable ligne pour descendre d'une ligne
ligne = ligne + 1
'On boucle (retour a do until)
Loop
'On affiche le résultat
UserForm1.TextFournisseur = Fournisseur
UserForm1.TextMarque = Marque
UserForm1.TextPrix = PrixRevu
Else
ligne = ligne + 1
End If
Loop
End Sub
mais il il ne tien toujours pas compte de ma référence, sauf pour ma ligne de départ. c'est a dire qu'il recherce le prix mini a partir de la ligne de la référence imposant, il ne prend pas en compte celles d'avant.