Macro pour journal de caisse
Crsi68300
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Cris68300 Messages postés 104 Date d'inscription Statut Membre Dernière intervention -
Cris68300 Messages postés 104 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Macro pour journal de caisse
- Journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mon journal intime - Télécharger - Vie quotidienne
- Jitbit macro recorder - Télécharger - Confidentialité
- Style journal officiel word - Guide
64 réponses
Bonjour Via, Le forum
J'ai enfin retrouvé du temps pour me remettre sur le fichier.
Je l'ai présenté à la personne qui s'en servira et celle-ci m'a fait une remarque de taille. Si plusieurs mode de règlement.
Du coup j'ai rajouté un paiement multiple dans userform de la validation du ticket, celui-ci renvoi sur un nouveau userform.
Mais voici mon premier problème. Je n'arrive pas à additionner les txtbox.
Le but étant d'additionner les txtbox 5,7,8,9,10,11,12 pour afficher dans 13 le montant payé et venir afficher dans 6 le rendu monnaie.
Si tu as un peu de temps je veux bien, une nouvelle fois un peu d'aide...
Cdt,
Cris
https://mon-partage.fr/f/vrrqdgQA/
J'ai enfin retrouvé du temps pour me remettre sur le fichier.
Je l'ai présenté à la personne qui s'en servira et celle-ci m'a fait une remarque de taille. Si plusieurs mode de règlement.
Du coup j'ai rajouté un paiement multiple dans userform de la validation du ticket, celui-ci renvoi sur un nouveau userform.
Mais voici mon premier problème. Je n'arrive pas à additionner les txtbox.
Le but étant d'additionner les txtbox 5,7,8,9,10,11,12 pour afficher dans 13 le montant payé et venir afficher dans 6 le rendu monnaie.
Si tu as un peu de temps je veux bien, une nouvelle fois un peu d'aide...
Cdt,
Cris
https://mon-partage.fr/f/vrrqdgQA/
Bonjour,
Ton fichier avec modifs
https://mon-partage.fr/f/tdReLv1L/
Petit plus : on ne peux écrire dans les textbox des paiements que si la case à cocher a bien été cochée
Cdlmnt
Via
Ton fichier avec modifs
https://mon-partage.fr/f/tdReLv1L/
Petit plus : on ne peux écrire dans les textbox des paiements que si la case à cocher a bien été cochée
Cdlmnt
Via
Petites explications :
Pour interagir à l'entrée de données dans textbox il faut préférer Before update à Change car ce dernier s'effectue à chaque frappe clavier (donc si tu tapes 1000 il s'active 4 fois) alors que before update s'active à l'appui sur Entrée juste avant la validation de la saisie
Même si tu entres des chiffres dans un textbox Excel les traite comme du texte d'où la nécessité de transformer ce texte en numérique pour faire des calculs d'où les instructions Val()
Pour rendre un textbox inactif il faut dans ses Propriétés mettre le critère Enabled à True
Demandes moi si d'autres points te semblent obscurs
Pour interagir à l'entrée de données dans textbox il faut préférer Before update à Change car ce dernier s'effectue à chaque frappe clavier (donc si tu tapes 1000 il s'active 4 fois) alors que before update s'active à l'appui sur Entrée juste avant la validation de la saisie
Même si tu entres des chiffres dans un textbox Excel les traite comme du texte d'où la nécessité de transformer ce texte en numérique pour faire des calculs d'où les instructions Val()
Pour rendre un textbox inactif il faut dans ses Propriétés mettre le critère Enabled à True
Demandes moi si d'autres points te semblent obscurs
Bonjour Via,
Merci pour ces infos très instructives.
Je change de sujet, lors de l'extraction mensuelle, je copie tout le suivi des ventes dans un autres fichier, de façon à alléger le programme.
J'ai réussi à lui faire ouvrir le fichier, couper les données etc...
Il me restera plus qu'a refermer le second fichier (chose que je vais faire maintenant.
Par contre, cela fonctionne que pour janvier!
Lorsque je sélectionne un autre mois j'ai une erreur sur:
Sheets("FEVRIER").Range("B2").Select
Voici le code:
fic = "D:\Cris\Excel\Projet Jess\Suivi des ventes mensuelles.xlsm"
Set wb = Workbooks.Open(fic)
With Windows("Suivi des ventes mensuelles.xlsm").Activate
If ComboBox1.Value = "Janvier" Then Sheets("JANVIER").Range("B2").Select
If ComboBox1.Value = "Février" Then Sheets("FEVRIER").Range("B2").Select
If ComboBox1.Value = "Mars" Then Sheets("MARS").Range("B2").Select
If ComboBox1.Value = "Avril" Then Sheets("AVRIL").Range("B2").Select
If ComboBox1.Value = "Mai" Then Sheets("MAI").Range("B2").Select
If ComboBox1.Value = "Juin" Then Sheets("JUIN").Select
If ComboBox1.Value = "Juillet" Then Sheets("JUILLET").Range("B2").Select
If ComboBox1.Value = "Aout" Then Sheets("AOUT").Range("B2").Select
If ComboBox1.Value = "Septembre" Then Sheets("SEPT").Range("B2").Select
If ComboBox1.Value = "Octobre" Then Sheets("OCTOBRE").Range("B2").Select
If ComboBox1.Value = "Novembre" Then Sheets("NOV").Range("B2").Select
If ComboBox1.Value = "Décembre" Then Sheets("DEC").Range("B2").Select
Cdt,
Cris
Merci pour ces infos très instructives.
Je change de sujet, lors de l'extraction mensuelle, je copie tout le suivi des ventes dans un autres fichier, de façon à alléger le programme.
J'ai réussi à lui faire ouvrir le fichier, couper les données etc...
Il me restera plus qu'a refermer le second fichier (chose que je vais faire maintenant.
Par contre, cela fonctionne que pour janvier!
Lorsque je sélectionne un autre mois j'ai une erreur sur:
Sheets("FEVRIER").Range("B2").Select
Voici le code:
fic = "D:\Cris\Excel\Projet Jess\Suivi des ventes mensuelles.xlsm"
Set wb = Workbooks.Open(fic)
With Windows("Suivi des ventes mensuelles.xlsm").Activate
If ComboBox1.Value = "Janvier" Then Sheets("JANVIER").Range("B2").Select
If ComboBox1.Value = "Février" Then Sheets("FEVRIER").Range("B2").Select
If ComboBox1.Value = "Mars" Then Sheets("MARS").Range("B2").Select
If ComboBox1.Value = "Avril" Then Sheets("AVRIL").Range("B2").Select
If ComboBox1.Value = "Mai" Then Sheets("MAI").Range("B2").Select
If ComboBox1.Value = "Juin" Then Sheets("JUIN").Select
If ComboBox1.Value = "Juillet" Then Sheets("JUILLET").Range("B2").Select
If ComboBox1.Value = "Aout" Then Sheets("AOUT").Range("B2").Select
If ComboBox1.Value = "Septembre" Then Sheets("SEPT").Range("B2").Select
If ComboBox1.Value = "Octobre" Then Sheets("OCTOBRE").Range("B2").Select
If ComboBox1.Value = "Novembre" Then Sheets("NOV").Range("B2").Select
If ComboBox1.Value = "Décembre" Then Sheets("DEC").Range("B2").Select
Cdt,
Cris
Re Bonjour Via,
Je t'embête encore, la dernière fois je t'ai parler d'un problème avec la combo de recherche clients. Celle-ci s'ouvre sur d'autre onglet quand je double clic sur une cellule. Et reste ouverte très souvent.
Après plusieurs test, voici se que j'ai trouver:
Code utiliser actuellement:
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "Recherche"
Me.ComboBox1.DropDown
End Sub
Et lorsque j'enlève la ligne: Me.ComboBox1.DropDown
Je n'ai plus du tout de problème d'ouverture intempestif sur d'autre onglet, donc sais tu comment garder le dropdown sans générer cette gène?
Merci d'avance.
Cris
Je t'embête encore, la dernière fois je t'ai parler d'un problème avec la combo de recherche clients. Celle-ci s'ouvre sur d'autre onglet quand je double clic sur une cellule. Et reste ouverte très souvent.
Après plusieurs test, voici se que j'ai trouver:
Code utiliser actuellement:
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "Recherche"
Me.ComboBox1.DropDown
End Sub
Et lorsque j'enlève la ligne: Me.ComboBox1.DropDown
Je n'ai plus du tout de problème d'ouverture intempestif sur d'autre onglet, donc sais tu comment garder le dropdown sans générer cette gène?
Merci d'avance.
Cris
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je ne sais pas pourquoi ce dysfonctionnement et je n'arrive pas à la reproduire chez moi; le double-clic dans d'autre feuilles n'ouvre pas la fenêtre
As tu besoin de cette propriété dropdown ? Perso je ne l’utilise jamais
Cdlmnt
Via
As tu besoin de cette propriété dropdown ? Perso je ne l’utilise jamais
Cdlmnt
Via
Ce matin, je t'ai parlé du RAZ Mensuel de façon à épurer le suivi des ventes.
Tout fonctionne, mais problème de taille; car nous avons complété les fréquentations 6 mois / 12 mois et de même pour CA dans les fiches clients, sur la base du suivi des ventes. Donc quand j'effectue le RAZ, forcément mes fréquentations des les fiches clients reviennent toute à 0.
Je cherche une façon de comptabiliser ces données, mois par mois soit dans paramètre soit sur la droite des fiches clients et cacher en blanc au moment voulu. (ou dans le fichier complémentaire)
Sais-tu comment je peux m'y prendre?
Merci d'avance,
Cris
https://mon-partage.fr/f/jTMZ0Yxd/
https://mon-partage.fr/f/1SCS54wg/
Tout fonctionne, mais problème de taille; car nous avons complété les fréquentations 6 mois / 12 mois et de même pour CA dans les fiches clients, sur la base du suivi des ventes. Donc quand j'effectue le RAZ, forcément mes fréquentations des les fiches clients reviennent toute à 0.
Je cherche une façon de comptabiliser ces données, mois par mois soit dans paramètre soit sur la droite des fiches clients et cacher en blanc au moment voulu. (ou dans le fichier complémentaire)
Sais-tu comment je peux m'y prendre?
Merci d'avance,
Cris
https://mon-partage.fr/f/jTMZ0Yxd/
https://mon-partage.fr/f/1SCS54wg/
A première vue le plus simple est de créer dans la feuille clients après la date de naissance 12 colonnes pour les 12 mois et dans la macro caisse faire ajouter la somme vendue dans le bon mois
Ensuite les formules mois glissants n'ont pas besoin d'aller chercher dans suivi caisse
Si tu veux utiliser sur plusieurs années tu prévois 24 colonnes pour les 12 mois de 2 années (ce qui permet le calcul des 12 mois glissants
Si tu veux garder les sommes dépensées par un client tu prévois une colonne supplémentaire années précédentes et tu prévois une macro qui lorsque 2 ans sont écoulés fais les somme des 24 colonnes, l'ajoute au total précédent et efface les 24 colonnes pour une nouvelle durée de 2 ans
Ensuite les formules mois glissants n'ont pas besoin d'aller chercher dans suivi caisse
Si tu veux utiliser sur plusieurs années tu prévois 24 colonnes pour les 12 mois de 2 années (ce qui permet le calcul des 12 mois glissants
Si tu veux garder les sommes dépensées par un client tu prévois une colonne supplémentaire années précédentes et tu prévois une macro qui lorsque 2 ans sont écoulés fais les somme des 24 colonnes, l'ajoute au total précédent et efface les 24 colonnes pour une nouvelle durée de 2 ans
Je suis parti dans une autre direction.
Pour pas ralentir l'encaissement qui est déjà très lourd.
J'ai créer 24 colonnes sur la droite des fiches clients (cachées en blanc par la suite).
Lors du RAZ Mensuel, si janvier choisi dans la combo, venir renseigner les sommes dans la colonne correspondante avant la suppression du suivi client.
Le problème est qu'il faut faire coïncider les noms des clients donc sa devient trop complexe pour moi.
Même ta solution me semble complexe pour moi, je ne pense pas pouvoir le codé mais je vais essayer.
Je suis en train de me dire. Si je fais une stat simple sur le côté du 2ieme fichiers, et que l'on travaille en permanence avec les 2 fichiers ouverts. Celui-ci pourrait me servir de base de données et cela ferais une solution plus simple non?
Pour pas ralentir l'encaissement qui est déjà très lourd.
J'ai créer 24 colonnes sur la droite des fiches clients (cachées en blanc par la suite).
Lors du RAZ Mensuel, si janvier choisi dans la combo, venir renseigner les sommes dans la colonne correspondante avant la suppression du suivi client.
Le problème est qu'il faut faire coïncider les noms des clients donc sa devient trop complexe pour moi.
Même ta solution me semble complexe pour moi, je ne pense pas pouvoir le codé mais je vais essayer.
Je suis en train de me dire. Si je fais une stat simple sur le côté du 2ieme fichiers, et que l'on travaille en permanence avec les 2 fichiers ouverts. Celui-ci pourrait me servir de base de données et cela ferais une solution plus simple non?
Voila où j'en suis,
J'ai créer une liste dynamique sans doublon dans le second fichier pour chaque mois.
Fais la recherche de la somme et le nombre de passage de chaque client.
Je te laisse regarder:
https://mon-partage.fr/f/rcbwSp7d/ 'fichier principal
https://mon-partage.fr/f/DvNwtHrC/ 'fichier de stockage données
Par contre maintenant je ne sais pas comment faire, quelle formule utiliser dans le fichier de base, (onglet clients), pour venir reporter les sommes dans chaque client ainsi que les passages, en fonction de la date.
Si mois <6 mois prendre en compte sinon ne plus prend en compte.
Cdt,
Cris
J'ai créer une liste dynamique sans doublon dans le second fichier pour chaque mois.
Fais la recherche de la somme et le nombre de passage de chaque client.
Je te laisse regarder:
https://mon-partage.fr/f/rcbwSp7d/ 'fichier principal
https://mon-partage.fr/f/DvNwtHrC/ 'fichier de stockage données
Par contre maintenant je ne sais pas comment faire, quelle formule utiliser dans le fichier de base, (onglet clients), pour venir reporter les sommes dans chaque client ainsi que les passages, en fonction de la date.
Si mois <6 mois prendre en compte sinon ne plus prend en compte.
Cdt,
Cris
La solution la plus simple que je vois pour l'instant :
1) Dans la fichier secondaire créer une feuille clients avec en colonne A une liaison avec le la colonne des noms de feuille Clients du fichier principal (tu sais faire une liaison ?)
Après 12 colonnes pour les 12 mois où on rapatrie avec une formule SOMME.SI pour chaque client son total de chaque feuille mois
Après ces 12 colonnes, 2 autres colonnes : l'une où se font les totaux individuels des 6 derniers mois, l'autre ceux des 12 derniers mois
2) De nouveau une liaison mais dans l'autre sens dans les deux colonnes des mois glissants de la feuille Clients du fichier principal
Cdlmnt
Via
1) Dans la fichier secondaire créer une feuille clients avec en colonne A une liaison avec le la colonne des noms de feuille Clients du fichier principal (tu sais faire une liaison ?)
Après 12 colonnes pour les 12 mois où on rapatrie avec une formule SOMME.SI pour chaque client son total de chaque feuille mois
Après ces 12 colonnes, 2 autres colonnes : l'une où se font les totaux individuels des 6 derniers mois, l'autre ceux des 12 derniers mois
2) De nouveau une liaison mais dans l'autre sens dans les deux colonnes des mois glissants de la feuille Clients du fichier principal
Cdlmnt
Via
Via,
Tout est ok, je te remercie encore.
J'ai également ajouté l'ancienne formule, de se fait, j'ai l'historique venant du fichier de sauvegarde et également les passages et CA du mois en cours avant le RAZ.
C'est parfait!!!
Cette après midi, j'ai travaillé sur les stats, j'ai bien avancé, donc maintenant je me mets sur l'extraction. Je t'en dirais plus dès que je rencontrerais des difficultés...
Bien cordialement,
Cris
Tout est ok, je te remercie encore.
J'ai également ajouté l'ancienne formule, de se fait, j'ai l'historique venant du fichier de sauvegarde et également les passages et CA du mois en cours avant le RAZ.
C'est parfait!!!
Cette après midi, j'ai travaillé sur les stats, j'ai bien avancé, donc maintenant je me mets sur l'extraction. Je t'en dirais plus dès que je rencontrerais des difficultés...
Bien cordialement,
Cris
Bonjour Via, Le forum,
Bon finalement je n'ai pas fini, car en me plongeant aujourd'hui dans la partie comptable je me rends compte que je n'ai pas de valeur de stock.
Donc je reprends entièrement l'onglet réception, ainsi que celui du stock.
Là j'ai fini l'onglet réception dans la forme mais je me mets à programmer.
Donc voici ma question:
Pour une combo, comment puis je faire son row source en fonction du fournisseur que j'ai sélectionné dans la première combo "choix du fournisseur"?
Je pense que c'est relativement simple, si tu m'expliques, je devrais y arriver.
Merci d'avance,
Cdt,
Cris
https://mon-partage.fr/f/J3CJcli7/
Bon finalement je n'ai pas fini, car en me plongeant aujourd'hui dans la partie comptable je me rends compte que je n'ai pas de valeur de stock.
Donc je reprends entièrement l'onglet réception, ainsi que celui du stock.
Là j'ai fini l'onglet réception dans la forme mais je me mets à programmer.
Donc voici ma question:
Pour une combo, comment puis je faire son row source en fonction du fournisseur que j'ai sélectionné dans la première combo "choix du fournisseur"?
Je pense que c'est relativement simple, si tu m'expliques, je devrais y arriver.
Merci d'avance,
Cdt,
Cris
https://mon-partage.fr/f/J3CJcli7/
Bonjour Cris
Comme on a de la chance que les 2 fournisseurs ayant la même liste de produits j'ai opté pour la solution suivante :
- dans Parametre les listes de produits nommées listeZ, liste A .. c'est à dire liste suivi de l'initiale du fournisseur
- macro associé à un changement dans le combobox du chois du fournisseur pour modifier la propriété ListFillRange du combox2 en recomposant un nom de plage valide avec liste et initiale du fournisseur
https://mon-partage.fr/f/8SvWTAJJ/
Cdlmnt
Via
Comme on a de la chance que les 2 fournisseurs ayant la même liste de produits j'ai opté pour la solution suivante :
- dans Parametre les listes de produits nommées listeZ, liste A .. c'est à dire liste suivi de l'initiale du fournisseur
- macro associé à un changement dans le combobox du chois du fournisseur pour modifier la propriété ListFillRange du combox2 en recomposant un nom de plage valide avec liste et initiale du fournisseur
https://mon-partage.fr/f/8SvWTAJJ/
Cdlmnt
Via
Via,
ça fonctionne parfaitement,
mais encore une fois pour ma culture personnelle, peux tu m'expliquer:
ComboBox2.ListFillRange = "liste" & Left(ComboBox1.Value, 1):
"liste" & Left : comment cela se fait que ça va chercher les 4 listes, juste en écrivant liste et non listeA, listeZ, etc... Et quel est le rôle de Left?
Désolé mais je n'arrive pas à suivre là (et j'aime apprendre...)
Merci en tout cas, tu es super comme d'habitude!!!
Cdt,
Cris
ça fonctionne parfaitement,
mais encore une fois pour ma culture personnelle, peux tu m'expliquer:
ComboBox2.ListFillRange = "liste" & Left(ComboBox1.Value, 1):
"liste" & Left : comment cela se fait que ça va chercher les 4 listes, juste en écrivant liste et non listeA, listeZ, etc... Et quel est le rôle de Left?
Désolé mais je n'arrive pas à suivre là (et j'aime apprendre...)
Merci en tout cas, tu es super comme d'habitude!!!
Cdt,
Cris
Bonsoir Cris
Tu as bien raison de vouloir comprendre !
Alors, les 4 plages de listes étant nommées et présentes donc dans le Pensionnaire de noms, si on mettait dans la propriété ListFillRange du combox listeA il irait chercher la liste nommée ainsi, idem pour listeZ etc; donc il faut qu'à chaque changement de fournisseur dans le combo 1 cette adresse soit modifiée en concaténant le mot liste et l'initiale du nom du fournisseur par ex avec ZAO on doit avoir listeZ
par formule ce serait ="liste" & GAUCHE(nom fournisseur;1) pour prendre une lettre à la gauche du nom du fournisseur ce qui en VBA (puisque instruction en anglais) devient = "liste" & Left(ComboBox1.Value, 1)
Cdlmnt
Via
Tu as bien raison de vouloir comprendre !
Alors, les 4 plages de listes étant nommées et présentes donc dans le Pensionnaire de noms, si on mettait dans la propriété ListFillRange du combox listeA il irait chercher la liste nommée ainsi, idem pour listeZ etc; donc il faut qu'à chaque changement de fournisseur dans le combo 1 cette adresse soit modifiée en concaténant le mot liste et l'initiale du nom du fournisseur par ex avec ZAO on doit avoir listeZ
par formule ce serait ="liste" & GAUCHE(nom fournisseur;1) pour prendre une lettre à la gauche du nom du fournisseur ce qui en VBA (puisque instruction en anglais) devient = "liste" & Left(ComboBox1.Value, 1)
Cdlmnt
Via
Bonjour Via,
J'ai fini de codé (presque tout seul!) la réception.
Maintenant je travaille sur la validation de celle-ci qui va donc transférer les donnés dans le stock. Pour explication, je dois transférer la quantité, le prix d'achat et celui de vente.
Donc j'ai fait une boucle sur la colonne source, ça c'est ok.
Par contre voilà, j'ai un problème et une question.
Mon problème:
Lorsque je valide, voici le code:
If ComboBox1.Value = "ZAO" And Range("G" & f) = "Accessoire" Then .Range("E5") = .Range("E5") + Range("K" & f)
.Range("I5") = .Range("I5") + Range("H" & f)
.Range("K5") = .Range("K5") + Range("J" & f)
La première instruction se trouvant derrière "Then" fonctionne parfaitement en tenant compte des 2 instructions, il s'agit de la quantité.
Mais les 2 suivantes, (les tarifs) se reportent sans respecter les conditions.
Il y a t'il un mot supplémentaire à placer devant? (j'ai essayé And, Else...)
Puis ma question:
Je dois effectuer toutes cette ligne pour chaque produit de chaque fournisseur. Vois tu une façon de raccourcir? j'ai un peu peur de reprendre de la lenteur sinon, alors que je n'en ai plus du tout actuellement.
Merci d'avance Via,
Cordialement,
Cris
J'ai fini de codé (presque tout seul!) la réception.
Maintenant je travaille sur la validation de celle-ci qui va donc transférer les donnés dans le stock. Pour explication, je dois transférer la quantité, le prix d'achat et celui de vente.
Donc j'ai fait une boucle sur la colonne source, ça c'est ok.
Par contre voilà, j'ai un problème et une question.
Mon problème:
Lorsque je valide, voici le code:
If ComboBox1.Value = "ZAO" And Range("G" & f) = "Accessoire" Then .Range("E5") = .Range("E5") + Range("K" & f)
.Range("I5") = .Range("I5") + Range("H" & f)
.Range("K5") = .Range("K5") + Range("J" & f)
La première instruction se trouvant derrière "Then" fonctionne parfaitement en tenant compte des 2 instructions, il s'agit de la quantité.
Mais les 2 suivantes, (les tarifs) se reportent sans respecter les conditions.
Il y a t'il un mot supplémentaire à placer devant? (j'ai essayé And, Else...)
Puis ma question:
Je dois effectuer toutes cette ligne pour chaque produit de chaque fournisseur. Vois tu une façon de raccourcir? j'ai un peu peur de reprendre de la lenteur sinon, alors que je n'en ai plus du tout actuellement.
Merci d'avance Via,
Cordialement,
Cris
Bonjour Cris
Solution 1 :
If ComboBox1.Value = "ZAO" And Range("G" & f) = "Accessoire" Then .Range("E5") = .Range("E5") + Range("K" & f):.Range("I5") = .Range("I5") + Range("H" & f):.Range("K5") = .Range("K5") + Range("J" & f)
Lorsque plusieurs instructions suivent un IF il faut les séparer par 2 points
Solution 2 :
If ComboBox1.Value = "ZAO" And Range("G" & f) = "Accessoire" Then .Range("E5") = .Range("E5") + Range("K" & f)
.Range("I5") = .Range("I5") + Range("H" & f)
.Range("K5") = .Range("K5") + Range("J" & f)
End if
Si les instructions sont sur des lignes différentes on met End if après pour les instructions au dessus ne soient exécutées que lorsque la condition du If est vraie
Pour la simplification c'est sûrement possible par une boucle,
renvoie moi ton fichier avec ton code actuel
Cdlmnt
Via
Solution 1 :
If ComboBox1.Value = "ZAO" And Range("G" & f) = "Accessoire" Then .Range("E5") = .Range("E5") + Range("K" & f):.Range("I5") = .Range("I5") + Range("H" & f):.Range("K5") = .Range("K5") + Range("J" & f)
Lorsque plusieurs instructions suivent un IF il faut les séparer par 2 points
Solution 2 :
If ComboBox1.Value = "ZAO" And Range("G" & f) = "Accessoire" Then .Range("E5") = .Range("E5") + Range("K" & f)
.Range("I5") = .Range("I5") + Range("H" & f)
.Range("K5") = .Range("K5") + Range("J" & f)
End if
Si les instructions sont sur des lignes différentes on met End if après pour les instructions au dessus ne soient exécutées que lorsque la condition du If est vraie
Pour la simplification c'est sûrement possible par une boucle,
renvoie moi ton fichier avec ton code actuel
Cdlmnt
Via
Je t' avoue y voir beaucoup plus clair. Les " : " je ne connaissais absolument pas, on ne les avaient pas utilisé jusqu' à là, mais je ne comprenais jamais pourquoi des fois on utilisais End If et d''autre fois non...
Je te laisse le fichier et vais de ce pas corriger le code et tester.
https://mon-partage.fr/f/Mkid3RPP/
Vu que tu as le fichier, j'en profite, si tu trouves une idée pour sécuriser la réception. C'est à dire, j'ai un peu peur, vu qu'on a des noms de produits identiques dans différents fournisseurs, si par mégarde la personne change de fournisseur dans la combo1 alors qu'elle avait déjà commencé avec un autre, elle va générer des faux stocks.
Donc je me suis demandé, si nous pouvions bloquer la combo et qu'elle se re-débloque lors de la validation.
ou
Juste générer un message, Attention réception en cours, voulez-vous l'effacer, et on vide le tableau si ok.
Qu'en penses tu?
Cordialement,
Cris
Je te laisse le fichier et vais de ce pas corriger le code et tester.
https://mon-partage.fr/f/Mkid3RPP/
Vu que tu as le fichier, j'en profite, si tu trouves une idée pour sécuriser la réception. C'est à dire, j'ai un peu peur, vu qu'on a des noms de produits identiques dans différents fournisseurs, si par mégarde la personne change de fournisseur dans la combo1 alors qu'elle avait déjà commencé avec un autre, elle va générer des faux stocks.
Donc je me suis demandé, si nous pouvions bloquer la combo et qu'elle se re-débloque lors de la validation.
ou
Juste générer un message, Attention réception en cours, voulez-vous l'effacer, et on vide le tableau si ok.
Qu'en penses tu?
Cordialement,
Cris
Super merci Via,
Par contre je viens de penser, j'ai la solution la plus sécurisée pour ma dernière question. Je rajoute une colonne fournisseur de le détail de la réception, et celle-ci servira de référence lors de la validation et non la valeur de la combo. En plus de la sorte, on peut réceptionner plusieurs fournisseurs à la fois.
Je fais ça de suite.
Bon travaille et bonne aprém.
Cris
Par contre je viens de penser, j'ai la solution la plus sécurisée pour ma dernière question. Je rajoute une colonne fournisseur de le détail de la réception, et celle-ci servira de référence lors de la validation et non la valeur de la combo. En plus de la sorte, on peut réceptionner plusieurs fournisseurs à la fois.
Je fais ça de suite.
Bon travaille et bonne aprém.
Cris
Bonsoir Via,
Toute la journée, j'ai avancé sur la partie Statistique.
Tout est en forme ça y est, même si j'ai du rajouter beaucoup de paramètres pour analyser le nombre de fois qu'un code postal passe en caisse, ainsi qu'une liste dynamique sans doublon des codes postaux et d'un pourcentage de codes postaux afin d'avoir un rendu sur la zone de chalandise.
Ainsi elle pourra mieux diriger sa comm pub...
Par contre là je suis sur la partie anniversaire client, de façon à savoir quel client est né ce mois ci, et pouvoir lancer une offre si besoin d'activité.
Voici ma formule:
=SIERREUR(INDEX(Cherche1;EQUIV(Clients!K:K;"="&MOIS(AUJOURDHUI());0));"")
Cherche1 = liste des clients
K:K = mois de naissance (en nombre)
Mais aucun résultat... juste erreur "valeur" (si j'enlève SIERREUR).
Est ce que tu as une idée de mon erreur?
C'est à chaque fois qu'il y a une histoire de date (aujourd'hui) que je bloque...
Cdt,
Cris
Toute la journée, j'ai avancé sur la partie Statistique.
Tout est en forme ça y est, même si j'ai du rajouter beaucoup de paramètres pour analyser le nombre de fois qu'un code postal passe en caisse, ainsi qu'une liste dynamique sans doublon des codes postaux et d'un pourcentage de codes postaux afin d'avoir un rendu sur la zone de chalandise.
Ainsi elle pourra mieux diriger sa comm pub...
Par contre là je suis sur la partie anniversaire client, de façon à savoir quel client est né ce mois ci, et pouvoir lancer une offre si besoin d'activité.
Voici ma formule:
=SIERREUR(INDEX(Cherche1;EQUIV(Clients!K:K;"="&MOIS(AUJOURDHUI());0));"")
Cherche1 = liste des clients
K:K = mois de naissance (en nombre)
Mais aucun résultat... juste erreur "valeur" (si j'enlève SIERREUR).
Est ce que tu as une idée de mon erreur?
C'est à chaque fois qu'il y a une histoire de date (aujourd'hui) que je bloque...
Cdt,
Cris
Bonsoir Cris
Je suis de sortie ce soir, je regarderai ton fichier en rentrant si tu me le postes sur mon-partage
A+
Cdlmnt
Via
Je suis de sortie ce soir, je regarderai ton fichier en rentrant si tu me le postes sur mon-partage
A+
Cdlmnt
Via
Le plus simple en rajoutant des colonels dans Clients :
https://mon-partage.fr/f/ydiuNmRm/
Bien cdlmnt
Via
https://mon-partage.fr/f/ydiuNmRm/
Bien cdlmnt
Via
Bonjour Via,
J'ai passé la nuit à essayer d'extraire les stats... mais en vain.
Je n'arrive pas à comprendre, pourtant il s'agit de quelque chose déjà fait...
Peut être un peu de sommeil pour éclairer le cerveau.
Je te laisse les 2 fichiers si tu veux voir où j'en suis:
https://mon-partage.fr/f/5Deziyo3/
https://mon-partage.fr/f/g2segIP2/
Le but c'est en fonction de la sélection de USFextract on vienne remplacer les données dans le 2ieme fichier. Juste l' identité car après je ferais un lien pour les mails, téléphones, etc...
Si tu vois mon erreur, je suis preneur.
Je me remets dessus dés mon réveil.
Bonne journée à toi.
Cris
J'ai passé la nuit à essayer d'extraire les stats... mais en vain.
Je n'arrive pas à comprendre, pourtant il s'agit de quelque chose déjà fait...
Peut être un peu de sommeil pour éclairer le cerveau.
Je te laisse les 2 fichiers si tu veux voir où j'en suis:
https://mon-partage.fr/f/5Deziyo3/
https://mon-partage.fr/f/g2segIP2/
Le but c'est en fonction de la sélection de USFextract on vienne remplacer les données dans le 2ieme fichier. Juste l' identité car après je ferais un lien pour les mails, téléphones, etc...
Si tu vois mon erreur, je suis preneur.
Je me remets dessus dés mon réveil.
Bonne journée à toi.
Cris
Bonjour
1) il faut une instruction Workbooks (classeur) et non Window pour que cela fonctionne (je ne sais pas pourquoi)
2) Tu n'as pas mis les . devant les Range à l'intérieur du With
Remplace la partie de macro concernée par celle-là :
Bon WE
Via
1) il faut une instruction Workbooks (classeur) et non Window pour que cela fonctionne (je ne sais pas pourquoi)
2) Tu n'as pas mis les . devant les Range à l'intérieur du With
Remplace la partie de macro concernée par celle-là :
With Workbooks("Fichier extraction des stats.xlsm") .Activate .Sheets("MAIL").Select .Sheets("MAIL").Range("C2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End With
Bon WE
Via
Bonsoir Via,
Je ne sais pas si ça va être très compréhensif mais j'essaye.
J'ai crée un commandButton2 sur une page. Celui-ci est la validation d'un certain nombre de chose. Son code fonctionne parfaitement.
Maintenant, dans le tableau de bord, en validant une commande dans un userform, j'ai besoin d'écrire l'action d'exécuter le commandbutton2 de l'autre onglet.
J'ai essayé: .Click , .Activate , .select
Je te donne l'exemple:
Mais rien ne fonctionne.
Sais tu quelle fonction dois je utiliser?
Merci d'avance si tu as la réponse,
Cris
Je ne sais pas si ça va être très compréhensif mais j'essaye.
J'ai crée un commandButton2 sur une page. Celui-ci est la validation d'un certain nombre de chose. Son code fonctionne parfaitement.
Maintenant, dans le tableau de bord, en validant une commande dans un userform, j'ai besoin d'écrire l'action d'exécuter le commandbutton2 de l'autre onglet.
J'ai essayé: .Click , .Activate , .select
Je te donne l'exemple:
With Sheets("STATISTIQUE")
For i = 0 To 11
If Cbxmois.ListIndex = i Then .ComboBox1 = Cbxmois.Value
Next i
CommandButton2
Unload Me
End With
Mais rien ne fonctionne.
Sais tu quelle fonction dois je utiliser?
Merci d'avance si tu as la réponse,
Cris
Bonsoir Cris
A ma connaissance tu ne peux pas actionner un bouton d'une feuille depuis une autre feuille ou un UF
mais si tu veux utiliser la même macro il ne faut pas la mettre dans la sub du bouton mais en faire une macro dans un module ex :
Sub validations
tes lignes de codes
End Sub
Ensuite pour la lancer d'un bouton ou a partir d'une autre macro il suffit dans une ligne de code me mettre le nom de cette macro :
Pour le bouton :
Private Sub CommandButton1_Click()
validations
End Sub
Pour une autre macro
Sub macrotrucmachin
lignes de codes éventuellement à exécuter avant
validations
lignes de codes éventuellement à exécuter après
End Sub
Cdlmnt
Via
A ma connaissance tu ne peux pas actionner un bouton d'une feuille depuis une autre feuille ou un UF
mais si tu veux utiliser la même macro il ne faut pas la mettre dans la sub du bouton mais en faire une macro dans un module ex :
Sub validations
tes lignes de codes
End Sub
Ensuite pour la lancer d'un bouton ou a partir d'une autre macro il suffit dans une ligne de code me mettre le nom de cette macro :
Pour le bouton :
Private Sub CommandButton1_Click()
validations
End Sub
Pour une autre macro
Sub macrotrucmachin
lignes de codes éventuellement à exécuter avant
validations
lignes de codes éventuellement à exécuter après
End Sub
Cdlmnt
Via
Bonsoir Via,
Un merci tardif pour ta réponse, déplacement pro qui m'a empêché de continuer, désolé.
Je m'y remets là, mais il est vrai que le soir même, à la suite de ta réponse, qui en plus est très logique, je n'y arrivais pas. Surement la fatigue donc je regarde ça de suite et te fais un retour...
Merci encore,
Bonne soirée,
Cris
Un merci tardif pour ta réponse, déplacement pro qui m'a empêché de continuer, désolé.
Je m'y remets là, mais il est vrai que le soir même, à la suite de ta réponse, qui en plus est très logique, je n'y arrivais pas. Surement la fatigue donc je regarde ça de suite et te fais un retour...
Merci encore,
Bonne soirée,
Cris