Macro pour journal de caisse

Fermé
Crsi68300 Messages postés 7 Date d'inscription mercredi 20 septembre 2017 Statut Membre Dernière intervention 22 septembre 2017 - Modifié le 20 sept. 2017 à 17:09
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018 - 19 janv. 2018 à 15:23
Bonjour à tous,

J'ai débuté un fichier pour une entreprise, mais je bloque déjà car trop complexe pour moi.
(je fais ça afin de m'améliorer sur Excel...)

Le but serait quand cliquant sur le mode de paiement, ça copie les données dans journal de caisse, sur la bonne ligne en fonction de la date, et sinon se serait trop simple, additionne au fur et à mesure les ventes.

Ensuite, viens déduire les produits du stock.

J'ai vraiment l'impression que c'est irréalisable...

Si quelqu'un peut m'aider?

Merci d'avance
Cris

https://www.cjoint.com/doc/17_09/GIuoXt4NBhD_Suivi-CA-Stock.xlsm
A voir également:

64 réponses

Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
15 nov. 2017 à 18:06
Via,

Je suis en train de m'y perdre...

Ta solution est très logique mais pas si simple à réaliser.

Je te montre si tu veux même si là, dans visual basic j'ai tout chamboulé à force de tout tester dans tout les sens...

https://mon-partage.fr/f/VMyDbhFr/

La macro fonctionne pour l'onglet statistique, mais non dans l'onglet Tableau de bord == Gestion mensuelle.
J'ai un problème de copy.

Cdt,
Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
Modifié le 15 nov. 2017 à 18:31
Bonjour Cris,

Je en comprends pas ce que tu veux obtenir avec ta macro, notamment la ligne
With Sheets("Journal de caisse")

If Range("B61") = "JANVIER" Then
Range("B67") = Range("O67").Value
Il n'y a pas de JANVIER en B61 de Journal !

Je pense que tu veux trop compliquer et que tu vas en faire une usine à gaz !

D'autre aprt lorque tu utilises With c'est pour éviter de repéter à chaque fois la feuille mais il ne faut pas oublier le point devant l'instruction devant suivre Sheets()

Dans tes lignes en fin de macro :
With Sheets("STATISTIQUE")

Sheets("STATISTIQUE").Activate
Range("AO65").Select


Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

.Range("B60").Select

End With

1) Sheets("STATISTIQUE") devant Activate est inutile puisqu'avant il y a le With don c tu devrait seulement avoir .Activate
2) Par contre après si tu veux sélectionner A065 de Statistiques il manque justement le point devant Range

Cdlmnt
Via


"L'imagination est plus importante que le savoir."    A. Einstein
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
Modifié le 15 nov. 2017 à 19:08
Merci pour ta réponse Via,

J'ai réussi à tout remettre comme je l'avais programmé avant de te poser cette question, comme ça tu y verras plus clair:

https://mon-partage.fr/f/phq9FpUC/

Car je ne pense pas que se soit trop... et le fichier touche à sa fin donc je n'ai presque rien à rajouter.

Là il s'agit du code Feuil10 statistique. commandbutton 2 que j'ai programmé l'autre jour.
C'est fonctionnel.

Je voulais juste faire un lien pour qu'en cliquant sur gestion mensuelle dans le tableau de bord, via usf gestion mensuelle, sa reproduise la même chose.

Je vais regarder car je pense devoir programmer différent en fonction des onglets, mais je te l'envoie juste pour que tu comprennes la base de ce que je voulais faire...

Et je vais y arriver car j'ai gardé en mémoire, au tout début du sujet, que tu m'as dit qu'on peut tout faire avec excel.

En tout cas merci encore.

Très bonne soirée
Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
15 nov. 2017 à 20:25
Tu ne devrais pas avoir de mal à appliquer une macro similaire mais :
- attention à bien nommer les feuilles et à mettre des Sheets(nom de la feuille) avant les range pour qu'il n'y ait pas de confusion avec la feuille active
- ne pas fermer l'userform avant la fin de la macro sinon la macro ne peut pas lire le mois choisi ou alors mettre en début de macro ce choix dans une variable moischoisi= Comboxbox1 .... puis fermer l'UF et utiliser ensuite la variable dans les IF
- Utiliser des With sheets() pour optimiser mais ne pas oublier les points devant les instructions cincernant cette feuille

Tu peux aussi remplacer avantageusement une série de IF... END IF qui reprennent les mêmes instructions avec seulement une variable ou deux qui changent par un Select Case
Exemple : calculer une taxe (à mettre en D2) en fonction d'un PHT (en B2) et d'un taux (choisi par combo type 1, 2 ou 3 et mis dans une variable letaux :
Select case letaux
case 1
tauxchoisi=20
case 2
tauxchosi=10
case 3
tauxchosi=5
End select

Range("D2") = range("B2") * tauxchosi/100

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
18 janv. 2018 à 14:45
Bonjour Via, le forum,

J'espère que tu vas bien depuis nos derniers échanges.

Je reviens vers toi car je rencontre un léger problème avec un des codes de programmation que tu m'avais donné...

Je m'explique: J'ai changé le journal de caisse 2017 en 2018. Puis installé le programme chez mon amie qui s'en sert maintenant tous les jours. Mais après avoir changé en 2018. En validant un ticket de caisse, il me faisais un report sur novembre (ex: 6 novembre lorsqu'on étais le 6 janvier).

Ton code:
Ligne = .Columns(2).Find(Date, , , , xlByColumns, xlPrevious).Row

Je l'ai changé en enlevant juste une virgule et c'étais bon.

Seulement là, je suis allé à l'institut car elle me disais que ses chiffres n'étais pas bon. Et lors de la journée de mardi, tous les tickets se sont bien rangés dans janvier et sans savoir pourquoi, 3 tickets se sont mis sur novembre.

Est ce que de ton côté tu arrives à comprendre ce qu'il se passe?

Merci d'avance si tu peux regarder.

Cdlt, Cris

https://mon-partage.fr/f/80utE4tX/

UseForm3
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
18 janv. 2018 à 15:44
J'ai trouvé, je n'avais pas pensé à enlever la virgule de USF5, paiement multiple...

Par contre, peux tu me confirmer que c'est bien la virgule qui générée ce problème? Car je pense qu'en octobre (10) ou novembre (11) ça va coincer...

Merci Via,

Cdt
Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
18 janv. 2018 à 23:30
Bonsoir Cris

Oui ça va et toi aussi je suppose ☺
Oui en recherchant 18/01/2018 à partir du bas la macro s'arrête sur le 18/11/2018 !!
Pour éviter cela il faut exiger une correspondance exacte en rajoutant une instruction xlWhole dans toutes les lignes des macros recherchant Date avec Find
ligne = .Columns(2).Find(Date, , , xlWhole, xlByColumns, xlPrevious).Row

Cdlmnt
Via

0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
19 janv. 2018 à 15:23
Bonjour Via,

Encore une fois, merci de la rapidité de tes réponses!

Je l'ai mis en place à l'instant.
C'est fonctionnel.

Merci beaucoup.

Et à très vite.
Cris
0