XL 2013 Créer une formule exel???

xena02

XLDnaute Nouveau
Bonjour à toutes et tous,
Je suis nouveau sur le forum et autodidacte en exel. J'ai une petite demande d'aide, si c'est faisable!!
J'ai créé une "caisse enregistreuse" pour mon club. Lorsque je clique sur les différents boutons de consommations, le tout arrive dans un ticket de caisse et la somme totale des conso s'affiche dans une cellule bien précise. Pour ça, pas de problème. Lorsque j'ai validé le ticket, je l'imprime et j'efface les données pour en créer un nouveau. Jusque là, rien de spécial. Mais j'aimerais garder en mémoire momentanément, dans une cellule séparée, la somme totale de ce premier ticket pour additionner, dans cette même cellule séparée donc, la somme totale d'un éventuel second ticket. Quand les sommes des deux tickets sont faites, pouvoir effacer le résultat de cette cellule séparée jusqu'à la création de nouveaux tickets.
Je ne sais pas si je me suis bien fait comprendre.
Merci à vous pour le partage de vos compétences. C'est génial
 

Dim.Reichart

XLDnaute Occasionnel
Bonjour,
Tu veux faire un total intermediaire en gros?

A quel moment est-ce que tu sais que tu vas avoir besoin de cette étape supplementaire?
Avant de tout commencer, en cours, ou à la fin de l'opération?

Ton fichier est avec des macros ou des formules?
Ce serait bien d'avoir un fichier exemple, representatif de ce que tu veux faire, sans données personnelles/confidentielles.
 

xena02

XLDnaute Nouveau
Bonjour
Tout d'abord, tout grand merci de me répondre.
Je joins, en attache, mon fichier. Tu verras qu'il y a des boutons "boissons" et des boutons "nourriture". Ce que je voudrais arriver à faire, c'est qu'après l'encodage, l'impression, la validation du ticket "boissons" et sa suppression, la somme obtenue soit mise momentanément en attente dans une cellule (par ex. E7). Pourquoi? Si des gens demandent de la nourriture en plus, ce qui n'est pas toujours le cas, je dois encoder un second ticket et j'aimerais donc que cette seconde somme soit elle aussi mise dans la cellule momentanée (E7 dans mon exemple) pour que la trésorière aie le total instantané des deux tickets.
Ce sont toutes des macros. J'avais eu de l'aide d'une personne pour la première macro et j'ai fait tous les autres boutons. Mais elle ne me répond plus!!!. Tu verras aussi que, dans le ticket qui est généré, la somme apparaît avant le nombre. Est-ce qu'il est possible de permuter les deux colonnes soit le nombre et le prix? Mais ça, c'est pas trop important. Merci encore
 

Pièces jointes

  • CAISSE FICHIER A UTILISER - SALLE - Copie - Copie.xlsm
    130.8 KB · Affichages: 18

xena02

XLDnaute Nouveau
Ah non, pas possible. En fait, dans nos organisations, il y a toujours le bar (où les tickets boissons vont) et une cafétéria (où vont les tickets nourriture) Les deux points sont toujours séparés et on ne gère qu'une personne à la fois. Soit elle prend uniquement des boissons, soit uniquement de la nourriture ou parfois, les deux. On fait deux tickets comme ça elle vont chercher leurs boissons et ensuite leur nourriture.
 

Dim.Reichart

XLDnaute Occasionnel
Mmmm, je crois que je vois à peu près.
Je pense que l'onglet Source pourrait servir à ca, mais il faudrait le transposer en vertical et ajouter une colonne nourriture/boisson.
Vu que je ne suis pas sur d'avoir bien compris, je me demande s'il ne faudrait pas créer une liste numérotées des tables, et leur associer a chacune leur total, afin de pouvoir retrouver la liste et ajouter une nouvelle conso facilement.

Pour ce qui est de la demande d'origine, je ne comprends pas ça:
Tu verras aussi que, dans le ticket qui est généré, la somme apparaît avant le nombre. Est-ce qu'il est possible de permuter les deux colonnes soit le nombre et le prix?

Tu parles des colonnes prix et quantités à inverser? Si oui, il te suffit d'inverser 3 et 4 dans chaque bouton
Cells(Ligne, 3).Value = Sheets("source").Cells(1, 1).Value
Cells(Ligne, 4).Value = Sheets("source").Cells(2, 1).Value

Rien à voir, mais vu le nombre de boutons et de macro, tu devrais les nommer de façon claire, plutôt que "command_button37", l'ensemble serait plus lisible, pour toi comme pour nous.
 

xena02

XLDnaute Nouveau
Merci pour ta patience. On avance doucement mais surement;)
Pour le point 1: Il n'y a pas de tables numérotée. Les gens terminent leur marche (je ne t'ai pas dit, je suis responsable d'un club de marche) et ils s'asseyent où il y a de la place dans la salle. Ils viennent commander quand ils le désirent.
Pour le point 2 (l'inversion). Ah, il n'y a que ça à faire. Pas de problème alors. Ce sera fait plus tard.
Et pour le dernier point: Merci pour ce tuyau. Je n'y ai pas pensé.
 

Dim.Reichart

XLDnaute Occasionnel
Ok, mais je n'ai pas compris l'histoire du total intermediaire en fait (ce qui est tout de même la demande principale).
En gros, les étapes sont les suivantes:
-les gens rentrent de la marche et s'assoient a table
-ils vont prendre leurs tickets au comptoir, les tickets boissons et nourriture sont envoyés aux differents services.
-Si avant d'être servis, ils veulent autre chose, ils reviennent chercher un ticket et l'ajoutent a la facture
-une fois servis, ils payent

Ca ressemble un peu a un self cafeteria mais dans le desordre...

EDIT: pour l'inversion des colonnes, il ne s'agit pas de remettre la ligne en 1er, ca ne changerait rien mais de remplacer 3 par 4 ( 4 par 3 dans l'autre), pour que:
Cells(Ligne, 3).Value = Sheets("source").Cells(1, 1).Value
devienne
Cells(Ligne, 4).Value = Sheets("source").Cells(1, 1).Value
(c'était peut être clair pour toi, mais dans ma tête, j'ai eu le doute alors autant preciser)
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour à tous,

si j'ai bien compris en fait tu saisis tout d'un coup mais tu veux imprimer 2 tickets : boissons et plats.
Plutôt que mettre en attente, en ajoutant une colonne (masquable) pour filtrer l'impression pourrait se faire automatiquement en 2 fois.
Précise si le total peut rester général sur les 2 tickets, ou s'il peut être absent, et si la piste te parait correcte.

En attendant j'ai revu un peu ton fichier.
Source est en vertical avec une colonne supp.
Une macro commune à tous les boutons qui recherche selon le libellé du bouton (qui doit être exact, majuscules et accents compris)
J'ai juste fait Eau plate et pétillante, et Cervelas. Tu n'auras pas de mal à modifier les autres (plus qu'une ligne de code)
Et en cas d'évolution plus qu'un seul code à maintenir.
Ca donne ça :
VB:
Private Sub CommandButton2_Click()
    ajout CommandButton2.Caption
End Sub

Private Sub CommandButton29_Click()
    ajout CommandButton29.Caption
End Sub

Private Sub CommandButton21_Click()
    ajout CommandButton21.Caption
End Sub

Sub ajout(libel As String)
Dim c As Range, c2 As Range, prix As Double, typ As String, nb As Long
    With Sheets("Source")
        Set c = .Columns(1).Find(libel, , xlValues, xlWhole)
        If c Is Nothing Then
            MsgBox "Article " & libel & " inconnu"
        Else
            nb = Application.InputBox("Quantité de : " & libel & " ?", "Saisie quantité", 1, , , , 1)
            Set c2 = Cells(Rows.Count, "C").End(xlUp).Offset(1)
            c2 = libel
            c2.Offset(, 1) = c.Offset(, 1).Value
            c2.Offset(, 2) = nb
            c2.Offset(, 3) = c.Offset(, 2).Value
        End If
    End With
End Sub
 

Pièces jointes

  • CAISSE FICHIER A UTILISER - SALLE - Copie - Copie.xlsm
    125.5 KB · Affichages: 15

xena02

XLDnaute Nouveau
re bonsoir Dim et bonsoir eriiic,
C'est vrai que ça m'a l'air simple dans ma tête mais, tout compte fait !!!
Je vous remercie encore pour votre disponibilité.
Je vais tester tout ça à mon aise mais, en temps que débutant de la 1ère heure, ce ne sera pas certainement fait demain!!! et je me permettrai de vous recontacter pour vous donner un suivi.
Grand merci à vous et excellente soirée
 

xena02

XLDnaute Nouveau
Bonjour à tous,

si j'ai bien compris en fait tu saisis tout d'un coup mais tu veux imprimer 2 tickets : boissons et plats.
Plutôt que mettre en attente, en ajoutant une colonne (masquable) pour filtrer l'impression pourrait se faire automatiquement en 2 fois.
Précise si le total peut rester général sur les 2 tickets, ou s'il peut être absent, et si la piste te parait correcte.

En attendant j'ai revu un peu ton fichier.
Source est en vertical avec une colonne supp.
Une macro commune à tous les boutons qui recherche selon le libellé du bouton (qui doit être exact, majuscules et accents compris)
J'ai juste fait Eau plate et pétillante, et Cervelas. Tu n'auras pas de mal à modifier les autres (plus qu'une ligne de code)
Et en cas d'évolution plus qu'un seul code à maintenir.
Ca donne ça :
VB:
Private Sub CommandButton2_Click()
    ajout CommandButton2.Caption
End Sub

Private Sub CommandButton29_Click()
    ajout CommandButton29.Caption
End Sub

Private Sub CommandButton21_Click()
    ajout CommandButton21.Caption
End Sub

Sub ajout(libel As String)
Dim c As Range, c2 As Range, prix As Double, typ As String, nb As Long
    With Sheets("Source")
        Set c = .Columns(1).Find(libel, , xlValues, xlWhole)
        If c Is Nothing Then
            MsgBox "Article " & libel & " inconnu"
        Else
            nb = Application.InputBox("Quantité de : " & libel & " ?", "Saisie quantité", 1, , , , 1)
            Set c2 = Cells(Rows.Count, "C").End(xlUp).Offset(1)
            c2 = libel
            c2.Offset(, 1) = c.Offset(, 1).Value
            c2.Offset(, 2) = nb
            c2.Offset(, 3) = c.Offset(, 2).Value
        End If
    End With
End Sub
 

xena02

XLDnaute Nouveau
Bonsoir Eriiiic, bonsoir à toutes et tous,
Comme je le craignais, tout ce super boulot ne me sert pas à grand chose. C'est bcp trop compliqué pour mes plus que très faibles connaissances!!!!
Avec le petit exemple que je mets en pièce jointe, est-ce qu'il y aurait moyen de faire qq chose de simple, que je puisse corriger en cas de bug, par exemple.
Grand merci
 

Pièces jointes

  • TEXTE FORUM.xlsx
    13.6 KB · Affichages: 8

eriiic

XLDnaute Barbatruc
Bonjour,

d'abord il faudrait répondre aux questions.
Si on ne connait pas ton besoin exact et ton fonctionnement, 90% de chances qu'on soit à coté de la plaque.
Beaucoup de choses sont faisable si on sait où on met les pieds.
eric

Edit : ah, désolé, je n'avais pas ouvert ton fichier. Je m'attendais à voir tes explication ici, sur le forum.
Mais comment imprimes-tu tes tickets ? Une imprimante spéciale ou une normale avec des feuilles A4 ?
Si c'est sur feuille A4 autant tout imprimer sur une seule feuille en prévoyant de la place pour découper facilement. Non ?
 
Dernière édition:

xena02

XLDnaute Nouveau
Bonjour,

d'abord il faudrait répondre aux questions.
Si on ne connait pas ton besoin exact et ton fonctionnement, 90% de chances qu'on soit à coté de la plaque.
Beaucoup de choses sont faisable si on sait où on met les pieds.
eric

Edit : ah, désolé, je n'avais pas ouvert ton fichier. Je m'attendais à voir tes explication ici, sur le forum.
Mais comment imprimes-tu tes tickets ? Une imprimante spéciale ou une normale avec des feuilles A4 ?
Si c'est sur feuille A4 autant tout imprimer sur une seule feuille en prévoyant de la place pour découper facilement. Non ?

Pour l'imprimante, c'est une imprimante spéciale (comme celles que l'ont trouve dans tous les commerces). Je l'ai réglée et elle fonctionne à merveille, comme je le désire. Et pour le programme en lui-même, j'avais pensé que joindre le petit fichier était plus explicite qu'un long texte. En fait, comme je l'ai dit, je n'ai pas besoin d'un truc hyper sophistiqué. Maintenant, s'il existe une formule qui me permettrait de tout encoder sur un seul ticket (boissons et nourriture) et, au moment de l'impression, faire un filtre pour sortir deux tickets séparés (un pour les boissons et le second pour la nourriture), c'est encore mieux. Encore une fois, une petite formule toute simple à ajouter dans mon fichier original et je serai super satisfait.
Il est certain que ma demande ne doit certainement pas prendre trop de ton temps. Mon programme fonctionne bien comme ça mais ce serait juste pour avoir un "petit plus". Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs