Code répétitif besoin de simplifier

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 :

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 !

5 réponses

  1. 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é.
    1. Salut, c'est "sebseb" j'ai crée un compte ccm c'est pour ça que j'ai changé de pseudo, bref.
      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
    2. @gorgalLien supprimé Cf nouveau lien dans la discussion d'après
  2. Contributeur
    bonjour

    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

    1. Contributeur
      J'ai supprimé les anciens liens

      Mettre la PJ en .zip et non en.rar
    2. Ok pas de soucis voici le lien :)

      http://www.cjoint.com/c/FFoudq8LtKY

      Faut cliquer sur l'onglet accueil en bas (si c'est pas sur l'onglet par défaut) et clic sur le bouton "commande hors menu" j'ai pas encore fais l'autre option... Puis après le reste devrais rester logique :D
    3. Contributeur
      @gorgalBonjour,

      Décidément...

      Windows me dit que de dossier compressé n'est pas valide !!!

      essaies peut-^tre sans zip...
    4. Contributeur
      gagné! :o)

      sois patient
  3. Contributeur
    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
    1. 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 !
  4. pas mal d'instruction que j'ai pas compris au premiers abords, je te tiens au jus quand j'ai tout saisie ou pas ;)
    1. Contributeur
      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...
      1. 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 :
        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 ;)
      2. Contributeur
        @gorgalBonjour,
        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.