Programmation sur EXCEL



Bonjour,

J'ai sur une feuille Excel nommée "articles", une centaine de "boutons" qui symbolisent des articles, qui en cliquant dessus affiche sur la meme feuille sur une forme de facture differente choses.

J'ai sur une deuxieme feuille Excel nommée "code" la liste des articles avec leur prix etc....

La macro suivante me permet d'afficher sur la facture de la feuille "artcles", la qte, le nom, le prix etc...

' FABRICATION DE LA FACTURE
Public Sub addition()
Dim valeur As String
Dim l As Integer
nombre = Application.InputBox("Combien ? :", Type:=1)
If nombre = False Then Exit Sub
l = Sheets("articles").Range("c28").End(xlUp).Row + 1
valeur = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text

For Each c In Sheets("CODE").Range("b3:b" & Sheets("code").Range("b500").End(xlUp).Row)

If c.Value = valeur Then

With Sheets("articles")
'note la quantite sur la facture
.Range("b" & l).Value = nombre
' note la designation sur la facture
.Range("c" & l).Value = c.Value
' note le prix sur la facture
.Range("e" & l).Value = c.Offset(0, 1).Value
' note le code TVA sur la facture
.Range("a" & l).Value = c.Offset(0, -1).Value
End With
End If
Next c

End Sub

PROBLEME :

Je voudrais pouvoir travailler sur plusieurs factures en meme temps.

Actuellement j'ai resolu mon probleme en copiant 10 fois la page "articles" et 10 fois la macro, mais je me heurte à 2 problemes:
1°) je n'ai souvent pas assez des 10
2°) il me faut à chaque changement de nom de produit, que je le change sur les 10 pages.

Comment faire differement ?

D"avance MERCI

9 réponses

  1. Contributeur
    Bonjour,
    Laisser la page vierge (ne pas s'en servir) et chaque fois que tu clic sur le bouton créer une copie de la page.
    Par faciliter ta macro devrait être dans le module de la feuille.
    Et Tu pourais la cacher.
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    1. Merci de ta reponse aussi rapide, mais je suis tres bete et je ne comprend pas trop ce que tu me dis.
      Pourrais tu m'expliquer d'avantage
      Merci
  2. Contributeur
    J'ai relu ta question et ça me parais difficile de te donner une piste comme ça.
    Tu pourrais pas mettre une copie de ton classeur sur Cjoint.com ? et mettre le lien dans un poste suivant ?
    1. je te l'ai envoye en message prive
      Merci
  3. Contributeur
    J'ai trouver que ton approche n'était pas fort...heuuu
    Alors j'ai cogité un classeur qui pourrait peut-être t'intèressé..
    Regarde ce classeur
    Je n'ai pas poussé le design, ça je te le laisse..:D
    A+
    1. Contributeur
      Il est préférable que tu pose tes questions en ajoutant un poste sur la discution et pas chaque fois de m'envoyer un MP. Je n'y répondrais plus.

      Je ne comprend d'ailleur pas ta remarque, j'ai retester le classeur et il fonctionne normalement.
      Le bouton "Gérer addition des tables" ne doit être employer qu'une fois, il est là pour que tu puisse lire le mode d'emploi et ensuite ouvrir l'UF.
      C'est dans le formulaire que tu peu ouvrir autant de table que tu veux en cliquant sur le bouton Entrer Table, et pas en recliquant sur le bouton de la feuille
      Tant qu'excel n'est pas fermer, tout est mémoriser.

      L'expérience instruit plus sûrement que le conseil. (André Gide)
      Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      1. Bonjour lermite 222,

        Et un grand merci.
        Pour mettre en route, il a fallu que j'enleve dans la feuille 3 le 0 apres UFCAISSE.show.
        Maintenant, il fonctionne a merveille
        Pendant toute cette semaine, j'ai "tenté" de comprendre le fonctionnement mais !!!!!
        Si moi je trouve cette presentation impeccable, mon épouse me demande si il ne serait pas possible de faire la meme chose avec des boutons, a la place des liste ?
        Dans la version actuelle, est il possible de remedier a un petit probleme ?
        Dans les DIVERS de la feuille "code" j'ai deux choix
        1°) demande divers à 5.5%
        2°) demande divers à 19.6%
        qui me permettait (dans ma 1ere version) d'inscrire manuellement sur la facture ce que je voulais .....avec la bonne tva
        Est ce possible avec cette version ? meme si je dois l'ecrire à un autre endroit avant qu'il n'apparaisse sur la facture.

        Precision pour le calcul des TVA, je n'ai pas trouvé ou ils étaient fait, les prix donnés sont TTC.

        En te remerciant une nouvelle fois du travail deja accompli, j'espere une nouvelle fois ton aide

        D'avance MERCI
    2. Contributeur
      Bonjour,
      Beh je n'ai pas eu la prétention de te faire toute ton appli, ce n'est qu'un exemple pour te montrer une autre option.

      Mettre des boutons à la place des listes.. C'est possible, mais tu a vu le nombre de boutons qu'il te faudrais pour les boissons? je me demande si ça tiendrait dans un écran ???

      Si tu regarde dans le code tu verras que j'ai mis une remarque pour justement effectuer une saisie quand Divers est sélectionner.

      Pour comprendre le code tu a entre-autre, Un tuto ici

      Enlever le 0 après Show n'est surement pas l'erreur qui bloque, et de cette façon tu ne peu revenir sur une feuille pour faire d'éventuels changements. Tu dois fermer le formulaire et perdre les données déja entrées.

      Essaye d'avancer et revient avec un classeur un peu plus complet..
      A+

      L'expérience instruit plus sûrement que le conseil. (André Gide)
      Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      1. Re bonjour

        Pour le show, c'est exactement ce qui se passe, mais si je n'enleve pas le 0 j'obtiens
        .show .... sur fond bleu
        Erreur de compilation
        Nombre d'arguments incorrect
        ou affectation de propriete incorrecte.

        et en cliquant sur OK
        Private Sub CommandButton1_Click()...... sur fond jaune ????

        Merci
      2. Contributeur
        Tu a modifier quelque chose dans l'userForm ?

        Pour trouver exactement où est l'erreur..
        quand tu a la ligne Private Sub CommandButton1_Click()...... sur fond jaune ????
        Tu continue avec F8, regarde Bien (Très bien) où la ligne jaune se déplace, tu continue lentement en examinent la ligne suivant la ligne en jaune. Pour continuer c'est chaque fois appuyer sur F8.. F8 etc..
        Tu dis la ligne où ca plante.
        Note,: Quand il y a une erreur dans l'initialise d'un UF le curseur revient toujours sur le show,, mais l'erreur n'est pas là.
      3. J'ai bien la ligne private sub sur fond jaune et le F8 m'amene toujours sur show, vu que la page se compose de :

        Option Explicit
        _______________________
        Private sub commandButton_click()
        UFCaisse.show 0

        et c'est tout

        Chaque appuie sur F8 me donne la fenetre "

        Microsoft Visual Basic
        Erreur de compilation :
        Nombre d'arguments incorrect ou affectation de propriete incorrect

        Soit l'erreur 450

        Je desespere

        Merci bonne soirée
    3. Contributeur
      Remet ton classeur tel quel sur Cjoint et donne le lien.
      J'ai tester mon modèle, j'ai rechargé le modèle depuis le site au cas ou il y aurait eu une erreur dans le transfert et chez moi ça fonctionne dans tout les cas.
      Tu a certainement modifié quelque chose, peut être sans t'en apercevoir.
      A-tu essayé de télecharger à nouveau ?
      Tu n'aurais pas changer des noms de feuilles ?

      L'expérience instruit plus sûrement que le conseil. (André Gide)
      Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      1. Je redemare a chaque fois du classeur telecharger
        Je suis maudit........... j'ai l'habitude lol
        Je te le renvoie
    4. Contributeur
      Beh chez moi y va impec !!
      Ca doit provenir de ton excel.
      Note que j'ai tester sur Excel 2000 et 2007 et pas de problème;
      Regarde un peu ce que tu a dans les références.
      Quand tu est en VBA tu clic >> Outils >> Références , tu devrait avoir 4 références cochées, dis moi les quel tu as.
      L'expérience instruit plus sûrement que le conseil. (André Gide)
      Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      1. Contributeur
        JE VIENS DE VOIR... TU A EXCEL 97 ???
        Si oui, tu enlève le 0 de show.
        Tu va dans le module de l'userForm et tu change dans la sub Initialize
        Private Sub UserForm_Initialize()
        Dim i As Integer
        Dim B As Boolean
        
            B = FALSE  'pendant les modifications code, à mettre à False pour travail

        Et ça va aller, sauf que tu devra fermer l'userForm pour éventuellement faire des modif dans les feuille.
        Mais avec ce changement les données ne seront pas perdues.

        L'expérience instruit plus sûrement que le conseil. (André Gide)
        Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
        1. Bonjour et un GRAND MERCI,

          Je viens d'intaller EXCEL 2000 et tout fonctionne a merveille.
          J'ai tout ce qu'il me faut.
          Sauf que je n'arrive pas a intervertir sur la feuille "facture" l'ordre des colonnes, je souhaiterais Quantite en un et libellé en 2.
          Je ne trouve pas non plus ou sont effectue les calculs du bas de la page "CAISSE" TVA TOTAL et TORTAL+TVA qui ne sont pas bon du fait que les prix de la feuille code sont TTC

          Juste un petit eclairage serait le bien venu.

          Une nouvelle fois et sans flagornerie UN GRAND MERCI
      2. Contributeur
        Ca se trouve dans le module de l'UserForm dans la Sub VoirFacture()
        Mais tu dois lier au bouton voir facture...
        tu ajoute entre
        Private Sub CommandButton11_Click() 
            VoirFacture 
        End Sub

        Là tu peu modifier les emplacements des colonnes en changeant...
        ListFacture.List(lig, 3) .. le 3 c'est le N° de la colonne tu peu aussi mettre la lettre entre guillement..
        ListFacture.List(lig, "D")
        Note: quand le projet est définitif oublie pas de mettre B = False dans l'initialize de l'UF.
        A+
        L'expérience instruit plus sûrement que le conseil. (André Gide)
        Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
        1. Et bien voila,
          Avec tout cela je suis paré
          Il ne me reste plus qu'a te remercier une nouvelle fois tres sincerement

          A+
        2. Bonjour, c'est encore moi,

          J'ai malheureusement encore besoins de te demander autre chose.

          Comment faire pour apres avoir imprimer la facture de la table x, effacer de "CAISSE" cette table pour pouvoir faire un 2eme service ?

          D'avance Merci