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

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
1 oct. 2017 à 16:13
Bonjour Cris

1) mettre toute ta colonne F en Format Spécial Code postal
2) modifier ta ligne de macro (pour convertir ton texte en nombre) :
Range("F" & l).Value = Val(TextBox5)

Et voilà

Cdlmt
A+
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
1 oct. 2017 à 16:50
Tu es tout simplement GÉNIAL!!!!

J'ai cherché des heures sur forum!!!

Le pire c'est que j'ai pu l'appliquer partout, code postal, numéro tel, date de naissance.

Un très grand MERCI encore

Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
1 oct. 2017 à 17:29
Via,

Je vais commencer avec les Stats et extraction comptable.

Avant de commencer et de partir dans tout les sens j'aimerais savoir se que tu en penses.

Est ce que je créer un nouvel onglet pour y extraire ma stat (mais j'ai peur que la personne ne le supprime pas et donc qu'au bout d'un moment il y ai trop d'onglet.
Ou
est que le mieux serais de passer par ouvrir l'onglet dans un nouveau classeur et donc enregistrable?
Et dernière question, peut on extraire en fichier PDF avec VBA?

Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
1 oct. 2017 à 17:43
Pourquoi y aurait-il trop d'onglets?

Un nouvel onglet Stat alimenté par formules ou VBA (à voir ce que tu veux comme stats et où tu prends les infos)
Un nouvel onglet extraction comptable alimenté de même

Et c’est tout !

Pour le PDF pas de problème, va voir sur le forum CCm tu dois avoir plusieurs exemples comme celui ci :
https://forums.commentcamarche.net/forum/affich-31001371-macro-enregistrer-en-pdf

Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
2 oct. 2017 à 00:58
Via,

je sais qu'on a déjà parlé de ce sujet mais là je ne comprends pas.

J'ai protégé toute les feuilles en laissant libre juste les cellules qui seront a renseigner par l'utilisateur.
J'ai donc utilisé .Unprotect et .protect 'mot de passe actuel si jamais = 12

Tout fonctionne au niveau de la macro (actuellement test que sur valider une vente).

Mais le souci c'est que quand je renseigne une cellule, exemple qtt ou prix, j'ai un message:

"La cellule ou le graphique est protégé et en lecture seule etc..."
Je clic ok et ça m'inscrit quand même ma valeur dans cette cellule...

Et rebelote a chaque cellules...

Alors que j'ai bien vérifié les formats de cellules-sécurité.

Merci d'avance Cris
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
2 oct. 2017 à 01:03
Renvoie moi le fichier avec toutes ses protections je regarderai ça demain en fin d'après-midi
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
2 oct. 2017 à 01:52
https://mon-partage.fr/f/qDAtyOwY/

mot de passe: 12
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
2 oct. 2017 à 03:02
Je viens de trouver, sous ma combobox de recherche dans l'onglet vente jour, j'ai une cellule qui me renvoi les noms pour la combo, j'ai déverrouillé uniquement cette cellule et c'est bon, tout fonctionne...
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
Modifié le 2 oct. 2017 à 15:19
Bonjour Via,

Peux tu m'aiguiller sur la façon dont m'y prendre pour incrémenter dans l'onglet clients, le nombre de ticket enregistrés depuis 6 mois puis 12 mois pour chaque clients, ainsi que le montant.

Je part sur l'idée, que dans l'onglet paramètre (qui sera caché à la fin), j'ai besoin d'afficher chaque vente en validant le ticket. Donc report de la date du nom et du montant (je ne sais pas si c'est la bonne direction...)

J'effectue déjà ce report sur le suivi articles mais ça ne m'aide pas car 1 article = 1 ligne (et la c'est 1 vente une ligne)

Mais si je travaille dans ce sens, je bloque sur la formule à utiliser pour dire: pour ce client, je veux que les 6 derniers mois etc...

Encore une fois je ne sais pas si c'est très explicite donc je te joins le fichier, tu trouveras des infos dans l'onglet paramètre.

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

PS: je n'ai pas envie de t'embêter donc si tu n'as pas le temps n'hésites pas à me le dire...

Bien cordialement

Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
Modifié le 2 oct. 2017 à 17:32
J'ai travaillé dans ce sens, voir nouveau fichier:

https://mon-partage.fr/f/1FqdtGDK/

Voir l'onglet PARAMETRE

Reste plus qu'a savoir comment intégrer inférieur a 6 mois.
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
2 oct. 2017 à 18:13
Bonjour Cris

Avant ton 2eme envoi j'avais travaillé sur le 1er et je te l'envoie car l'onglet Paramètres est à mon sens inutile. Il suffit de rajouter une colonne dans Suivi qui marque d'une X chaque vente différente, on peut ensuite avoir sur la même feuille le nombre de tickets par mois et dans la feuille Clients les 6 derniers et 12 derniers mois (j'ai modifié les données dans Suivi pour avoir plusieurs dates et clients différents)
https://mon-partage.fr/f/QrOPp78g/

T'inquiètes pas tu ne me déranges pas du tout, au contraire !

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
Modifié le 3 oct. 2017 à 11:27
Bonjour Via

Merci beaucoup, c'est exactement ce que je cherchais...

J'ai eu du mal à le mettre en place dans mon fichier, mais c'est bon, chose faite.

Je travaille sur des stats là, mais je crois que ce n'ai pas réalisable... j'en demande trop!
(à la base je suis directeur de magasin et travaille avec un logiciel puissant, rempli de stats... mais là avec excel, je pense pas que je puisse le mettre en place.

Quand je dit j'en demande trop, regarde sur le tableau de bord, en cliquant sur gestion client, tu comprendras...

En tout cas, merci encore

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
3 oct. 2017 à 11:52
Bonjour Cris

Il a peu de choses impossibles avec Excel !
On va prendre les choses l'une après l'autre , les 2 premières analyses d'abord
Les top CA ne devraient pas poser problème
Par top fréquentation que veux tu ? le jour de la semaine avec le plus de ventes ?

Je regarde un peu plus en détail et je te fais un retour

Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
3 oct. 2017 à 13:06
En fait je ne sais pas si je dois extraire les données dans l'onglet statistique puis ordonner l'effacement de tout son contenu avant chaque stat pour utiliser que cet onglet là.

Non la fréquentation c'est fréquentation client, donc le nombre de passage du client afin de détecter les meilleurs clients.

Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
3 oct. 2017 à 14:47
Oui je pense qu'il faut mieux regrouper dans l'onglet Statistiques
Un essai :
https://mon-partage.fr/f/m5oNxpId/

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
3 oct. 2017 à 15:10
Merci Via,

Je vais travailler autours de ça et te tiens au courant.

Je pense peut être que l'idée de créer tout mes tableaux sur cet onglet serais pas mal, ensuite en générant une stat par l'onglet tableau de bord, venir remplacer les données dans le tableau en question.

Je me mets dessus là et merci encore.

Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
5 oct. 2017 à 01:05
Bonsoir Via,

Je viens d'acheter un nouveau PC, cette après midi. Ultra puissant. Mais je rencontrais toujours ce problème de lenteur. (jusqu'à 1 minute si tous les articles remplis)

Du coup j'ai effectué le test d'effacer toute les formules du suivi clients et suivi articles. celles ci allaient jusqu'à 1000 lignes.

Maintenant c'est très très réactif lors de la validation du ticket.

Du coup ça me fait dire, peut on incrémenter une nouvelle ligne a chaque création client, et à chaque nouvelle vente article, en demandant de recopier les formules de dessus? Cela éviterais de copier jusqu'à 1000 pour rien...

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
5 oct. 2017 à 01:27
Bonsoir Cris

Tu as parfaitement raison c'est la bonne méthode
Pour ce faire tu utilises enregistreur de macro avant de copier une ligne puis de faire un collage spécial Formules dans la ligne du dessous

Ensuite dans ta macro il y a une instruction au début qui détermine la première ligne vide Ligne= ..
Après elle tu colles la macro enregistrée en remplaçant les références des n°s de lignes par Ligne-1 pour la ligne à copier et Ligne pour l'endroit où copier

Je te laisse essayer de faire ça et je t'aiderai si tu n'y arrives pas

Cdlmnt
Via
0
hervé
5 oct. 2017 à 02:21
Bonsoir via55,
J'ai bien lu le dernier message de Cris68300, alors juste une idée comme ça :
d'après moi, le problème de lenteur qui se produisait lors de la validation du
ticket (même sur un PC neuf ultra puissant) pourrait peut-être être réglé si tu
mets Application.Calculation = xlCalculationManual juste avant le code VBA
qui fait la validation du ticket, et plus bas, juste à la fin de ce même code,
mets Application.Calculation = xlCalculationAutomatic ; si ça peut aider,
tant mieux, sinon, tant pis, et tu sais qu'il n'y a aucun risque à faire ça.
Bien sûr, ce message est inutile si tu l'as déjà fait ou essayé.
Cordialement
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
Modifié le 5 oct. 2017 à 11:51
Bonjour Via, Hervé,

J'ai essayé ton code Hervé, cela n'arrange pas la lenteur.

Du coup j'ai fini de supprimer toutes les formules de tous les onglets nécessaire, résultat, plus du tout de lenteur.

Par contre Via, je n'arrive pas à faire ce que tu m'as dit. voici le code:

i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau VIDE

'Copie les formules de la ligne de dessus

Range ("Ligne") - 1
Selection.Copy
Range("Ligne").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

J'ai essayé avec Ligne -1.Select et autre mais erreur de syntaxe à chaque fois sur le range ligne -1.

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 > Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
5 oct. 2017 à 13:30
Bonjour

Si i te donne le n° de la ligne vide c'est Range ("A" & i-1 & ":K" & i-1).Select qu’il faut pour l'adresse de la ligne à copier et Range ("A" & i & ":K" & i).Select pour la ligne où copier si tu veux copier des colonnes A à K
Si tu n'y arrives toujours pas renvoie moi ton dernier fichier en date

Cdmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
5 oct. 2017 à 13:34
Ok Via, merci, je regarde de suite et te fais un retour

Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018 > Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
5 oct. 2017 à 13:39
C'est fait,

Mon code:

Range("A" & i - 1 & ":L" & i - 1).Select
Selection.Copy
Range("A" & i & ":L" & i).Select


Maintenant j'ai un arrêt sur la suite:


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

Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
6 oct. 2017 à 10:11
Bonjour Cris

Pas eu le temps de regarder hier,

Tes nouvelles lignes que tu as crée pour tout copier en une fois ont une erreur il manque le point devant Range, donc ce n'est pas celles de la feuille Suivi qui sont copiées
Rectification faite cela devrait fonctionner
Mais pour que cela se fasse pour chaque ligne il faut mettre ces instructions dans la boucle For n = 6 To 33 et pas avant comme tu l'as fait

Dis moi ce qu'il' en est après essai

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
6 oct. 2017 à 11:54
Bonjour Via,

Non j'obtiens une erreur sur les .Range,

J'ai également changé l'emplacement comme tu m'as demandé:

For n = 6 To 33
If Range("E" & n) <> 0 Then .Range("C" & n - 1) = .Range("C" & n - 1) - Range("E" & n)


.Range("C" & i - 1 & ":L" & i - 1).Select
Selection.Copy
.Range("C" & i & ":L" & i).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Next

' Classement dans suivi ventes
With Sheets("Suivi ventes")
.Unprotect "12"


Est-ce bien comme cela?

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 > Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
6 oct. 2017 à 13:04
oui ça devrait être bon

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
6 oct. 2017 à 13:34
Je n'y arrive absolument pas Via.

Pourras-tu regarder.
https://mon-partage.fr/f/jI0KG424/

Merci d'avance
Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
6 oct. 2017 à 19:07
Bonsoir Via, Le forum,

En attendant ta réponse, je me suis concentré sur un autre sujet.

De façon à alléger le fichier, pour éviter le ralentissement de validation, je me suis dit qu'il faudrait vider la liste "suivi ventes" mensuellement. Du coup j'ai créer un second fichier et un bouton "RAZ MENSUELLE" dans l'onglet "CAISSE".

Jusqu'à là tout vas bien. Il suffit que le second fichier soit ouvert par contre.

J'ai mis dans le suivi ventes original, la première ligne (3) en tout petit, avec une valeur que j'écrirais en blanc dans la colonne "i" car c'est là que nous recherchons dernière ligne non vide lors de la validation. (Je réduirais également cette ligne 3 pour qu'elle ne soit pas visible.

Mais voici mes questions:

- Peut-on créer un lien pour conserver le rapport de fréquentation client 6 & 12 mois (Colonne L que tu m'as créer avec des "X") ainsi que pour les sommes? (Tu verras dernier onglet du nouveau fichier (paramètre) pourrais regrouper les informations...

-Peut-on également créer une MSGBOX lors du changement de mois, de façon à proposer de faire le RAZ MENSUELLE (pour rappel)?

Je te joins les 2 fichiers, sachant que pour l'instant se n'est pas fonctionnel en rapport du copie des formules du suivi des ventes.

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

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

En attente de ta réponse,
Merci encore pour tout,

Cris
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
6 oct. 2017 à 19:25
Bonsoir Cris

Je n'avais pas vu ton message de début d'aprem
Je ne suis pas chez moi ce soir ni une partie du weekend, mais promis je regarde ça dès que possible

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
6 oct. 2017 à 19:35
Merci beaucoup, en t'attendant j'essaye d'avancer sur le sujet donc quand tu es dispo fait moi signe et je te dirais où j'en suis...

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
6 oct. 2017 à 19:47
Re,

Bon voilà déjà la bonne macro pour la caisse
Private Sub Valider_le_ticket()
Dim i As Integer

' Classement du mode de reglement
With Sheets("Journal de caisse")
.Unprotect "12"

Ligne = .Columns(2).Find(Date, , , , xlByColumns, xlPrevious).Row
If Espece = True And TextBox2.Value <> 0 Then .Range("I" & Ligne) = .Range("I" & Ligne) + Range("H25")
If Cartebancaire = True And TextBox2.Value <> 0 Then .Range("J" & Ligne) = .Range("J" & Ligne) + Range("H25")
If cheque = True And TextBox2.Value <> 0 Then .Range("K" & Ligne) = .Range("K" & Ligne) + Range("H25")

    
'Classe presta/vente/quantité dans le journal des ventes

If Range("H9") <> 0 Then .Range("D" & Ligne) = .Range("D" & Ligne) + Range("H9")
If Range("H5") <> 0 Then .Range("F" & Ligne) = .Range("F" & Ligne) + Range("H5")
If Range("H13") <> 0 Then .Range("G" & Ligne) = .Range("G" & Ligne) + Range("H13")
If Range("H18") <> 0 Then .Range("E" & Ligne) = .Range("E" & Ligne) + Range("H18")
.Protect Password:="12"
End With
' Classement dans fichier stock
With Sheets("Fournisseur & Stock")
.Unprotect "12"

For n = 6 To 33
If Range("E" & n) <> 0 Then .Range("C" & n - 1) = .Range("C" & n - 1) - Range("E" & n)


Next
End With
' Classement dans suivi ventes
With Sheets("Suivi ventes")
.Unprotect "12"
.Activate
i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau VIDE

'Copie les formules de la ligne de dessus
   
'presta
If Sheets("CAISSE").Range("E4") <> 0 Then
.Range("B" & i) = Range("H1")
.Range("I" & i) = (TextBox4)
.Range("F" & i) = Range("E4")
.Range("E" & i) = "Prestation"
.Range("G" & i) = Range("F4")
 End If

'Vente accessoires
For n = 6 To 33


        
If Sheets("CAISSE").Range("E" & n) <> 0 Then
.Range("A" & i - 1 & ":L" & i - 1).Copy
    
.Range("A" & i & ":L" & i).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row + 1
.Range("B" & i) = Sheets("CAISSE").Range("H1")
.Range("I" & i) = (TextBox4)
.Range("F" & i) = Sheets("CAISSE").Range("E" & n)
.Range("G" & i) = Sheets("CAISSE").Range("F" & n)
.Range("D" & i) = Sheets("CAISSE").Range("B" & n)

End If
Next
.Protect Password:="12"
End With
'Initialise ticket
With Sheets("CAISSE")
.Unprotect "12"
.Activate
.Range("E4:F4").Select
    Selection.ClearContents
.Range("E6:F8").Select
    Selection.ClearContents
.Range("E10:F10").Select
    Selection.ClearContents
.Range("E12:F20").Select
    Selection.ClearContents
.Range("E22:F30").Select
    Selection.ClearContents
.Range("E32:F33").Select
    Selection.ClearContents
      
   .Range("E4").Select
   .Protect Password:="12"
End With
Unload Me 'efface et ferme USF


(Les End with et les reprotection doivent se faire à la fin de chaque partie du code et pas à la fin)

Le reste à suivre demain car va demander plus de temps je pense

Bonne soirée
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
6 oct. 2017 à 20:59
Merci Via, bonne soirée!!!

Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
7 oct. 2017 à 10:41
Bonjour Via,

ça ne fonctionnais pas correctement, du coup je suis passé par le fait de copier cellule par cellule, sachant qu'il y en a 4.

J'ai dupliqué pour les presta aussi.

Par contre le fait que se soit dans la boucle ne fonctionne pas.
Si 1 article = ok
Si 2 ou + copie que sur la première ligne.

Je te joins le fichier: https://mon-partage.fr/f/DQQJIIxG/

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 > Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
7 oct. 2017 à 14:36
Bonjour Cris

Oui c'est un oubli de ma part, quand on veut aller trop vite !
rajoute simplement cette ligne après 'Copie les formules de la ligne de dessus :
i = i - 6 + n
cela incrémentera la variable i à chaque tour de boucle si une quantité existe

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
7 oct. 2017 à 17:03
Re bonjour Via,

Bon j'ai tourné longuement autour et tout fonctionne, voici le code final:


' Classement dans suivi ventes
With Sheets("Suivi ventes")
.Activate

i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau VIDE



'presta
If Sheets("CAISSE").Range("E4") <> 0 Then

.Range("C3" & ":L3").Copy
i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row + 1
.Range("C" & i & ":L" & i).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

.Range("B" & i) = Sheets("CAISSE").Range("H1")
.Range("I" & i) = (TextBox4)
.Range("F" & i) = Sheets("CAISSE").Range("E4")
.Range("E" & i) = "Prestation"
.Range("G" & i) = Sheets("CAISSE").Range("F4")

End If

'Vente accessoires
For n = 6 To 33

If Sheets("CAISSE").Range("E" & n) <> 0 Then

'Copie les formules de la ligne de dessus

i = i - 6 + n

.Range("C3" & ":L3").Copy
i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row + 1
.Range("C" & i & ":L" & i).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


i = Sheets("Suivi ventes").Range("I" & Rows.Count).End(xlUp).Row



'C'EST ICI AU DESSUS QUE J'AI RETIRÉ LE +1




.Range("B" & i) = Sheets("CAISSE").Range("H1")
.Range("I" & i) = (TextBox4)
.Range("F" & i) = Sheets("CAISSE").Range("E" & n)
.Range("G" & i) = Sheets("CAISSE").Range("F" & n)
.Range("D" & i) = Sheets("CAISSE").Range("B" & n)

End If
Next

End With
'Initialise ticket
With Sheets("CAISSE")

.Activate

For c = 4 To 33

Sheets("CAISSE").Range("E" & c & ":F" & c).Select
Selection.ClearContents
Next
.Range("E4").Select

End With
Unload Me 'efface et ferme USF

End Sub


En fait il me fallait enlever un + 1 à la fin de renvoi à la dernière ligne.

Tout fonctionne mais lenteur revenue.

Est ce obligatoire d'utiliser le .Activate en dessus du premier with?

Car plus haut dans le code on a fait with un autre onglet, sans activate et en validant le ticket, les données sont bien reporté dans le journal, sans que j'aperçois l'onglet... Alors que la j'aperçois l'onglet suivi et c'est très très long. (exemple pour toute les lignes articles remplies à 1, validation = environ 30secondes.

Merci d'avance,

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
7 oct. 2017 à 17:16
Re,

Essaye sans l'Activate ça devrait fonctionner (en supprimant aussi celui en fin de macro pour la feuille Caisse)

Pour éviter le rafraichissement écran pendant le remplissage de la feuille qui ralentit la procédure mettre en début de macro :
Application.ScreenUpdating = False
et en fin de macro le réactiver avec
Application.ScreenUpdating = True

En attente de la suite ;)
Cdlmnt
Via


0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
7 oct. 2017 à 17:32
J'ai essayé avant de t'écrite.

Du coup je viens d'essayer de nouveau, avec les instructions que tu m'as donné mais même erreur que lors du premier essai.

J'obtiens une erreur sur:

.Range("C" & i & ":L" & i).Select

Aussi bien dans la partie 'Presta que dans la partie ' Produits.

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
7 oct. 2017 à 18:21
Du coup il faut bien laisser les Activate mais avec la désactivation du rafraichissement écran tu devrais gagner un petit peu de temps
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
7 oct. 2017 à 18:20
je ne sais pas mais peut-être en mettant le nom de la feuille devant. Je vais essayer.
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
7 oct. 2017 à 18:39
Oui avec activate ça fonctionne de nouveau, toujours long mais je vais essayer de trouver quelque chose...

Merci encore Via

Cdt
Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
14 oct. 2017 à 17:12
Bonjour Via, le forum,

ça fait un bail, j'espère que tu vas bien.

Est-ce que quand tu auras un peu de temps tu pourrais jeter un coup d'œil sur les réglages de la Combo recherche client se situant sur l'onglet "Caisse".

Car voici mon problème:
Celle-ci s'affiche constamment quand je clique sur une cellule d'un autre onglet. (voir photo ci-joint)

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

Je te redonne le fichier également:

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

Merci d'avance
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
14 oct. 2017 à 17:21
Bonjour Cris

Je ne constate pas ce problème chez moi après plusieurs essais, ça doit venir de ton ordi
Par contre un autre problème de taille ! je ne peux pas faire défiler la combobox j'ai un message Mémoire insuffisante pour afficher en entier

Cdlmnt
Via
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
14 oct. 2017 à 17:59
Si je double clic dans une cellule d'un autre onglet, elle apparaît...

De plus il s'ouvre perpétuellement.

Je pense qu'il faut là supprimer et revoir son mode de fonctionnement.
Elle est relier à K6 qui est caché dessous et se K6 relier au fichier "Clients" avec toute les colonnes: S,T,U,V (qui seront cacher en blanc par la suite).

Je suis la semaine en déplacement en Espagne, mais je me plonge dessus quand même.

Pour ton message mémoire insuffisante, je n'ai pas saisie, car je ne rencontre pas ce problème.

Encore merci Via,
Cdt,
Cris
0
Cris68300 Messages postés 104 Date d'inscription dimanche 27 août 2017 Statut Membre Dernière intervention 21 septembre 2018
19 oct. 2017 à 18:31
Bonjour Via,

Voici se que j'ai trouvé au sujet de la combobox:

La combo est reliée à Recherche
Recherche fait référence à =Clients!$V$3:INDEX(Clients!$V$3:$V$10;MAX((Clients!$U$3:$U$494);1))

Et lorsque je la relie à Cherche1
Cherche1 fait référence à =Clients!$S:$S

Je n'ai plus ce problème avec la combo.

Par contre le résultat de la combo est pas top car une liste entière de vide à la suite des noms existants...

As tu une idée de comment je peux procéder autrement?

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

Cherche1 doit faire référence à : =DECALER(Clients!$S$3;;;NBVAL(Clients!$S:$S)) pour que la plage soit dynamique et s'allonge du nombre de clients dans la colonne
ainsi tu auras un affichage nickel dans la combo

Cdlmnt
Via
0