Code répétitif besoin de simplifier
sebseb
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite crée une sorte de logiciel pour mon BDE dans mon école. Ce logiciel va permettre d'enregistrer toutes les ventes que le BDE effectue.
Par exemple si un étudiant vient pour commander un coca + un twix je clic sur ma checkbox twix + coca et il me sors le prix unitaire ainsi que le nom des mes ventes dans une autre feuille de calcul.
J'ai trouvé une macro qui le fais très bien sauf que je dois répéter ma macro autant de fois que j'ai de produit a vendre.... c'est très long et sachant que j'ai deux paramètre qui varient : le nom de ma checkbox situé dans un userform, et les coordonnées d'une feuille de calcul ou est référencé le prix de chaque produit....
En bref si un jour je veux modifier la macro je devrai le faire sur les 50 produits alors que j'ai uniquement deux paramètres qui varient....
J'ai essayé de le faire par une fonction mais je n'ai jamais utilisé ce principe auparavant et j'ai pas trop compris les différentes explications sur développer.com...
Si vous pouvez m'aider à trouver une solution je vous en serrai bien reconnaissant !
voici le code :
J'espère avoir été claire.. en vous remerciant d'avance !
Je souhaite crée une sorte de logiciel pour mon BDE dans mon école. Ce logiciel va permettre d'enregistrer toutes les ventes que le BDE effectue.
Par exemple si un étudiant vient pour commander un coca + un twix je clic sur ma checkbox twix + coca et il me sors le prix unitaire ainsi que le nom des mes ventes dans une autre feuille de calcul.
J'ai trouvé une macro qui le fais très bien sauf que je dois répéter ma macro autant de fois que j'ai de produit a vendre.... c'est très long et sachant que j'ai deux paramètre qui varient : le nom de ma checkbox situé dans un userform, et les coordonnées d'une feuille de calcul ou est référencé le prix de chaque produit....
En bref si un jour je veux modifier la macro je devrai le faire sur les 50 produits alors que j'ai uniquement deux paramètres qui varient....
J'ai essayé de le faire par une fonction mais je n'ai jamais utilisé ce principe auparavant et j'ai pas trop compris les différentes explications sur développer.com...
Si vous pouvez m'aider à trouver une solution je vous en serrai bien reconnaissant !
voici le code :
If coca.Value = True Then 'une des deux valeurs à faire varier ça peut être coca ou icetea ou bien café etc...
With Worksheets("Tarifs Produits") 'dans la feuille tarifs produit
.Activate 'je l'active
.Range("A3:C3").Select 'je selectione ma rangé qui correspond la reference de mon produit cette valeur peut prendre la valeur : A5:C5 ou F8:H8 ou H2:J2 etc ...
End With 'fin du with
Selection.Copy 'je copie ma selection
With Worksheets("Commande en cours") 'dans la feuille commande en cours
.Activate 'je l'active
derlig = .Range("B1048576").End(xlUp).Row 'compte quelle est la dernière ligne sur la colonne B
.Range("B" & derlig + 1).Select 'je selectionne le n° de la case qui correspond à la dernière case +1
ActiveSheet.Paste 'je cole ma selection de la feuille Tarifs produit à la suite des autres produits
End With
End If
J'espère avoir été claire.. en vous remerciant d'avance !
A voir également:
- Code répétitif besoin de simplifier
- Code ascii - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
5 réponses
Déclare les valeurs des produits, correspondant à leurs tarifs. Gros travail mais ensuite le calcul se fera automatiquement à chaque fois que tu demanderas quelques choses, peut importe la quantité.
bonjour
J'espère avoir été claire..
Loupé !
Dans l’attente
J'espère avoir été claire..
Loupé !
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse
Dans l’attente
J'ai recrée un autre fichier zip avec un autre logiciel peut-être que ça va marcher... Quand je clic sur le lien ça marche nickel pour moi.. :O
https://www.cjoint.com/c/FFpiRfSTZRw
https://www.cjoint.com/c/FFpiRfSTZRw
Bonjour
bravo pour la présention agréable de ton formulaire :o))
Ci joint proposition pour traitement des commandes
tu as la prise en compte des sélections de produits pour 2 gammes (café et soda) qui attaque une procédure commune valable pour toutes les gammes: Sub commander(mchoix)
a toi de terminer pour les 3 gammes restantes...
Attention: tu as des discordances d'orthographe des produits ente la feuille "tarifs" et le formulaire, ce qui fout un sacré b...
Je n'ai pas traité l'étape 3 car je n'ai pas compris ton système;
par exemple je te commande un café, une tartiflette et un soda
tel que tu l'as réalisé, tu me présentes la note pour le café, je te paye, et tu enregistres le bénef sur le café, m^me punition pour la tartiflette et enfin repunition pour le soda....
normalement ,il faudrait me présenter qu'une note globale et tu enregistres le tout...
de m^me, je reprends ce que je t'avais écris hier:
si je viens de voir à ta buvette et que je te commande 3 cafés et 4 chocolats pour mes petit(e)s camarades et moi, comment fais-tu ?
la bête:
http://www.cjoint.com/c/FFqhn1JZjpt
dans l'attente
Michel
bravo pour la présention agréable de ton formulaire :o))
Ci joint proposition pour traitement des commandes
tu as la prise en compte des sélections de produits pour 2 gammes (café et soda) qui attaque une procédure commune valable pour toutes les gammes: Sub commander(mchoix)
a toi de terminer pour les 3 gammes restantes...
Attention: tu as des discordances d'orthographe des produits ente la feuille "tarifs" et le formulaire, ce qui fout un sacré b...
Je n'ai pas traité l'étape 3 car je n'ai pas compris ton système;
par exemple je te commande un café, une tartiflette et un soda
tel que tu l'as réalisé, tu me présentes la note pour le café, je te paye, et tu enregistres le bénef sur le café, m^me punition pour la tartiflette et enfin repunition pour le soda....
normalement ,il faudrait me présenter qu'une note globale et tu enregistres le tout...
de m^me, je reprends ce que je t'avais écris hier:
si je viens de voir à ta buvette et que je te commande 3 cafés et 4 chocolats pour mes petit(e)s camarades et moi, comment fais-tu ?
la bête:
http://www.cjoint.com/c/FFqhn1JZjpt
dans l'attente
Michel
Merci de m'avoir aider aussi rapidement ! c'est cool ! je vais regarder ça ce soir et je te tiens au jus !
Et je te demandais si ça marchait au niveau du téléchargement ;) désole pour le malentendu !
Puis c'est sur qu'il faudrait que je gère le choix de rentrer une quantité... car normalement fallait cliquer autant de fois que nécessaire pour ajouter 1, 2, ou 3 produit du même type... C'est claire que c'est pas super ergonomique comme idée !
Merci du coup de pouce !
Et je te demandais si ça marchait au niveau du téléchargement ;) désole pour le malentendu !
Puis c'est sur qu'il faudrait que je gère le choix de rentrer une quantité... car normalement fallait cliquer autant de fois que nécessaire pour ajouter 1, 2, ou 3 produit du même type... C'est claire que c'est pas super ergonomique comme idée !
Merci du coup de pouce !
pas mal d'instruction que j'ai pas compris au premiers abords, je te tiens au jus quand j'ai tout saisie ou pas ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Et je te demandais si ça marchait au niveau du téléchargement ;) désole pour le malentendu !
Effectivement! excuse moi
pour la quantité, l'idéal serait de remplacer les checkbox par des combobox mais c'est un sacré boulot ! si oui, il faudrait un ordre précis pour leur numérotation...
Et je te demandais si ça marchait au niveau du téléchargement ;) désole pour le malentendu !
Effectivement! excuse moi
pour la quantité, l'idéal serait de remplacer les checkbox par des combobox mais c'est un sacré boulot ! si oui, il faudrait un ordre précis pour leur numérotation...
Ok, je te tiens au jus en ce qui concerne la quantité, mais déjà j'ai pas encore compris comment fonctionnait ton code... par exemple j'ai jamais écris ce genre de ligne :
Moi quand j'ecrivais du code (jusqu'à maintenant) j'écrivais uniquement
Et rien dans les () j'ai appris par moi même donc je connais pas grand choses ... Je vais creuser le truc !
Il y a d'autres truc que je connais pas comme :
ou l'objet ReDim :
ou encore :
Bref je vais regarder pas à pas en détail car pour le moment il y a pleins d'objets que je comprend pas ... Mais ça fonctionne donc c'est top ! Pour que je puisse adapter tout ça et améliorer faut que je comprenne tout, c'est mieux que demander à chaque fois ;)
Sub commander(mchoix)
Moi quand j'ecrivais du code (jusqu'à maintenant) j'écrivais uniquement
Sub commander()
Et rien dans les () j'ai appris par moi même donc je connais pas grand choses ... Je vais creuser le truc !
Il y a d'autres truc que je connais pas comme :
Option Explicit
Option Base 1
ou l'objet ReDim :
ReDim T_produit(50, 2)
ou encore :
Ligvid = .Columns("B").Find("", .Range("B1")).Row
.Cells(Ligvid, "A") = Date
.Cells(Ligvid, "B") = "Total dû"
.Cells(Ligvid, "C") = Total
Bref je vais regarder pas à pas en détail car pour le moment il y a pleins d'objets que je comprend pas ... Mais ça fonctionne donc c'est top ! Pour que je puisse adapter tout ça et améliorer faut que je comprenne tout, c'est mieux que demander à chaque fois ;)
Bonjour,
pour t'aider de la lecture
https://bidou.developpez.com/article/VBA/
et
https://silkyroad.developpez.com/vba/tableaux/
pour ma part, il me semble qu'on pourrait simplifier la commande en cochant tous les produits dans toutes les gammes puis valider la commande soit un seul bouton au lieu de cinq. on aurait alors l'ensemble de la commande dans la page "commande en cours" (je n'ai toujours pas compris l'utilité des boutons "bénéfices" , l'action pouvant être effectuée lors de la procédure "commande")
d'ailleurs, si tu maintiens ton procédé actuel, il faut que je reprenne le code de la commande ( code assez complexe dans un multipage) pour cibler uniquement sur la gamme en cours;
reste malgré tout le problème du nombre commandé sur un produit (remplacer le checkbox par un combobox donnant le nombre entre 0 et N.
pour t'aider de la lecture
https://bidou.developpez.com/article/VBA/
et
https://silkyroad.developpez.com/vba/tableaux/
pour ma part, il me semble qu'on pourrait simplifier la commande en cochant tous les produits dans toutes les gammes puis valider la commande soit un seul bouton au lieu de cinq. on aurait alors l'ensemble de la commande dans la page "commande en cours" (je n'ai toujours pas compris l'utilité des boutons "bénéfices" , l'action pouvant être effectuée lors de la procédure "commande")
d'ailleurs, si tu maintiens ton procédé actuel, il faut que je reprenne le code de la commande ( code assez complexe dans un multipage) pour cibler uniquement sur la gamme en cours;
reste malgré tout le problème du nombre commandé sur un produit (remplacer le checkbox par un combobox donnant le nombre entre 0 et N.
Merci pour ton aide mais je n'ai pas trop compris comment est-ce que je pourrai faire ça... j'ai mis un lien vers le fichier excel, peut-être que tu pourra voire un peu mieux ce que je recherche en testant le programme..
http://www.cjoint.com/c/FFokCeAzV1w