Ajout d'un bouton pour récupérer données d'un fichier externe

Fermé
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020 - 22 avril 2015 à 10:54
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020 - 21 sept. 2016 à 15:03
Bonjour à tous,

Je fais appel à votre amabilité et connaissance éventuelle en VBA pour m'aider à ajouter un bouton à ma macro.

A la base j'ai 3 fichiers :
  • Un premier nommé « cadencier » contenant tous mes articles reconnu par un code IFLS colonne J
  • Une macro « Macro alim cadencier » qui permet de récupérer des fichiers sur mon disque dur et d'alimenter la colonne Ventes du cadencier aves les boutons
  • Le fichier contenant les données qui vont être intégré dans le cadencier grâce à la macro : « fichier_pour_alim_ventes »


Je souhaiterai ajouter un bouton dans ma macro du même type que le deuxième « indiquer le fichier stocks » `qui alimente la colonne Ventes de mon fichier cadencier à partir de Qté Unités colonne L du fichier »SUM( [FLDC-Qté unites] ) »). Cette fois-ci je veux aller chercher un fichier Commandes prendre la colonne U « Arr. Intégrées » du fichier «fichier_alim_CMD »(dossier test macro) et la coller dans le fichier nommé Cadencier à la colonne CMD.

J'ai tout d'abord dans excel recopié la partie pour aller chercher le fichier créer le bouton et je l'ai affecté à une nouvelle macro « Sub CommandButton3_Click() »

Ensuite dans le code j'ai cherché à peu près tout le code ou y avait stock dedans et je l'ai recopié pour « commandes » en changeant le nom de toutes les variables...

PS: quand on appuie sur le bouton mettre a jour le cadencier ça marche ça alimente la colonne ventes. Mais mon bouton CMD ne marche pas... par contre avant d'appuyer sur mettre a jour faut qu'il y ait que la macro d'ouverte sur le pc.

Le dossier ci-joint contient donc : le cadencier, la macro de base, la macro test (contenant le code que j'ai ajouté qui se trouve entre des commentaires `TEST Bouton & `end test bouton pour pouvoir se repérer facilement ; le fichier pour alimenter les stocks avec le 2ème bouton et celui pour alimenter les commandes (nouveau bouton).
... je n'ai fait que reprendre la méthode de création du bouton 2. Je pense avoir fait le plus gros mais n'ayant que des connaissances très basiques de VBA, je suis incapable de rectifier.

Voici tous les fichiers :
https://www.cjoint.com/c/EDwleLoGB1Z
Merci par avance et bonne journée.
A voir également:

305 réponses

Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 09:53
Merci beaucoup ! mais après avoir fait plusieurs recherche de codes IFLS présents dans le fichier alim_cmd je l'ai retrouve TOUS dans le cadencier... donc la macro ne marche pas à ce niveau là... elle ne retrouve pas les articles !donc je pense qu'elle recherche pas au niveau des codes IFLS. ou code IFLS plus autre donnée ?
merci à vous
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 10:01
Bonjour,

tableau pour recherche:

'Cree un tableau pour concaténer Article et entrepôt
ReDim MonTableau(MaxLigne)
'boucle for - next pour alimenter le tableau
For Ligne = 1 To MaxLigne
  MonTableau(Ligne) = Application.Text(MFC.Cells(Ligne, Col_DEPOT_Cad), "000") & "-" & _
  Application.Text(MFC.Cells(Ligne, Col_IFLS_Cad), "000000")
Next


test pour recherche:

'Cherche la bonne ligne dans le tableau virtuel
'Le "-1" à la fin correspond à un décalage
        Ligne = Application.Match(Depot & "-" & IFLS, MonTableau, 0) - 1

et ceci qui ne devrait pas etre ici puisque c'est une seule cellule qui n'evolue pas:
'Modifier ici la ligne si la date n'est pas sur la ligne Ligne1Cadencier
        Colonne = Application.Match(CLng(CDate(MaDate)), MFC.Rows(Ligne1Cadencier), 0)


A+
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 10:16
Je n'ai pas compris.. dois-je supprimer ces lignes de code ?
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 10:24
Re,

non, c'est seulement pour vous montrer le code qui sert a faire les recherches et qui pour une raison encore indeterminee ne trouve pas tous les articles.
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 10:43
Je dirai même n'en retrouve aucun...
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713 > Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
Modifié par f894009 le 24/04/2015 à 11:21
Re,

Si, je joint un classeur recap des colonnes IFLS des trois classeurs
https://www.cjoint.com/c/EDylCU5BXmn

la recherche se faisant (bel emplume) correctement vous n'avez que 128 articles dans le cadencier, donc tout le reste n'est pas trouve. Je ne dis pas que c'est normal, mais c'est ce qui se passe au vu du code VBA

Peut-il y avoir plusieurs entrepots ??
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 11:28
Pour le moment oui je ne gère que l'entrepot 730. Au futur il y en aura 3 de plus..
Mais quand je lance ma macro pour le fichier commande elle n'en reconnait 0 de IFLS. La colonne CMD du cadencier reste inchangée... et vous ?
0

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

Posez votre question
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 12:02
Re,

0 de IFLS en effet, c'est peut etre un probleme de format

La colonne CMD cadencier a priori rien ne se passe !!!
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 12:12
Re,

0 de IFLS fichier CMD: pas probleme de format, y a pas de colonne code-entrepot mais ARUE-Code Secteur qui n'a rien a voir
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 12:15
Oui j'ai mis cette colonne en pensant sans avoir vraiment réfléchi au pourquoi... c'est ce que je vous disais hier! donc ça vient de là ??
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
Modifié par f894009 le 24/04/2015 à 12:29
Re,

c'est ce que je vous disais hier! Oui, mais ce qui prend du temps, c'est de comprendre le code, trouver ce qu'il fait, ce qu'il devrait faire en fonction de vos explications, trouver la ou ca coince et nous ne somme pas aider avec ceci:
Oui j'ai mis cette colonne en pensant sans avoir vraiment réfléchi au pourquoi...

Colonne CMD du calencier pas mise a jour

A+
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 12:54
Oui... je suis désolée. Ne suffit il pas de supprimer les colonnes que j'ai mis au hasard.. comme code secteur ?
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 13:49
Re,

Oui... je suis désolée Y a pas de lezard, c'etait juste pour vous "chambrer" un peu (l'occasion etait vraiment trop bonne).

Pour le recherche dans le fichier CMD, ne pas mettre le code entrepot c'est sans probleme, mais quand vous aurez x entrepots y aura-t-il la meme code article dans plusieurs entrepots ????

Pour la colonne CMD de calendrier, je cherche (vous nous avez tout dit ??)
A+
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 14:05
Oui au futur il y'aura le même IFLS dans plusieurs entrepots. ça risque de poser problème ?
Je pense vous avoir tout dit : mon bouton va chercher le fichier récupère la colonne de alim_cmd « Arr. Intégrées » et l'incrémente dans CMD. Et il doit reconnaitre chaque article grâce à son code IFLS, ensuite s'il a trouvé l'article il met MAJ OK dans la colonne Comments de alim_cmd, sinon il écrit non trouvé.
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713 > Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 14:38
Re,

Ok pour la description. Hier (moi aussi), j'avais trouve que les deux boucles

For LigStock = Ligne1Stock + 1 To fin0
    For LigCommande = Ligne1Commande + 1 To fin


etaient ce qui occasionnait un temps si long d'execution, je confirme aujourd'hui c'est pas comme ca qu'il faut faire. Je m'explique: a chaque tour de la boucle

For LigCommande = Ligne1Commande + 1 To fin


tous les calculs sont fait pour le fichier stock et les calculs de prevision pour un seul article de la boucle

For LigStock = Ligne1Stock + 1 To fin0


Donc il faut revoir l'empilage du code pour eviter ca
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 15:06
Alors là... ça devient compliqué pour moi. Il faudrait faire une seule boucle For ?
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 15:39
Re,

Je reviens sur votre description du fonctionnement, le code ne fait pas que ca et vous pouvez expliquer en detail ce que vous voulez car il y a maldonne
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 16:01
Effectivement le code fait plusieurs calculs mais je pense que ça n'entre pas dans la colonne CMD.
La macro calcule une alerte stock (colonne A du cadencier). Celle-ci dépend de la sensibilité des articles (car un article sensible par ex tel que la banane par exemple peut rester 1 jour en entrepot alors que la pomme de terre, solide, jusque 5 jours). Elle indique si le stock disponible sera trop important ou trop faible en fonction de la PREV de ventes. D'ailleurs actuellement la macro n'alerte que jusque J+3 et j'aimerai l'étendre jusque J+6...
Voici les explications plus détaillées au niveau du code :
Dans alerte_stock

1. Pour récupérer la sensibilité de l'article
=> Sensibilite = MFC.Cells(Ligne_Ref, Colonne_Sensibilite)

2. Pour récupérer le coef de marges inférieures et supérieures de stock
=> Marge_Sup = Application.WorksheetFunction.Index(MFMP.Range("Parametre_sensibilite"), Application.WorksheetFunction.Match(Sensibilite, MFMP.Range("Sensibilite"), 0) + 1, Application.WorksheetFunction.Match("Marge Sup", MFMP.Range("Valeurs_stock_marges"), 0))
=> Marge_Inf = Application.WorksheetFunction.Index(MFMP.Range("Parametre_sensibilite"), Application.WorksheetFunction.Match(Sensibilite, MFMP.Range("Sensibilite"), 0) + 1, Application.WorksheetFunction.Match("Marge Inf", MFMP.Range("Valeurs_stock_marges"), 0))

3. Cosntruction de la formule
=> Formule_Partie_1 = "=If((" & Split(Columns(Colonne_Ref).Address(ColumnAbsolute:=False), ":")(1) & Ligne_Ref & "*100/" & Split(Columns(Colonne_Ref - 3).Address(ColumnAbsolute:=False), ":")(1) & Ligne_Ref & ">" & Marge_Sup & "),2,"
=> Formule_Partie_2 = "If((" & Split(Columns(Colonne_Ref).Address(ColumnAbsolute:=False), ":")(1) & Ligne_Ref & "*100/" & Split(Columns(Colonne_Ref - 3).Address(ColumnAbsolute:=False), ":")(1) & Ligne_Ref & "<" & Marge_Inf & "),1,0))"

Dans la fonction principale
4. Insertion de la formule dans la cellule
=> MFC.Cells(Ligne, Col_Prev + (I_Prev * Nombre_Colonne_Jour) + 1).Formula = Alerte_Stock(MFMP, MFC, Ligne_Ref, Col_Prev + (I_Prev * Nombre_Colonne_Jour), Col_Sensibilite)

On peut donc voir dans le cadencier la formule dans les cellules alerte stock qui ont un conditionnal formatting sur la valeur renvoyée.

La prévision elle est calculée grâce à une formule : (Somme des ventes de J-1 à J-6 précédents)/6*Poids des jours.
Le poids du jour est l'impact de vente il est différent pour un jour férié. La macro (lorsqu'on coche jour férié) est capable de modifier cette formule.
La prévision a également une alerte, la cellule s'encadre en rouge si elle est estimée comme peu fiable (par rapport aux ventes des 6 jours ou 2 semaines précédentes)

Je pense avoir fait le tour de tout ce que la macro fait. J'espère avoir été claire
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 16:23
Je viens de rajouter un même article (même IFLS) pour des entrepots différents dans la macro de base. elle tourne mais marque pour les entrepots autre que le 730 "non trouvé". La macro recherche donc dans alim_ventes par rapport a IFLS et entrepot. Faut-il ajouter une colonne entrepot dans alim_cmd ?
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 16:29
Re,
Oui, mais dans le cadencier comment sera-ce gere, a l'entrepot ou au global ??
Plus generalement, quel est la fonction du cadencier ? parce que j'ai l'impression que le probleme a ete pris a l'envers
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 16:41
Voici le cadencier pour plusieurs entrepots que je pense construire... c'est juste un essai: https://www.cjoint.com/c/EDyqxTFVKE9

La fonction du cadencier est de récupérer toutes les ventes du jour et commandes fournisseurs. De calculer le stock restant pour le lendemain : stock jour J = (stock veille + commades veille) - vente veille. De calculer l'alerte pour voir si le stock est suffisant...
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
24 avril 2015 à 16:55
Re,

Oui, ce sera une gestion a l'entrepot. Donc si l'ai compris, normalement dans le cadencier il y aura tous les articles de tous les entrepots, mais comment ils y entrent ...

Sur un fichier que je modifie pour optimiser le temps d'execution, je suis un peu freiner par des erreurs excel intempestives, mais je persiste

A+
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
24 avril 2015 à 17:20
4 entrepots max par cadencier. Comment ils y entrent.. bonne question pour le moment rien n'est sur...

merci beaucoup. vous modifiez quel fichier ? pour l'histoire des colonnes secteur... ?
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
Modifié par f894009 le 24/04/2015 à 17:27
Re,
Non, le fichier macro_alim_cadencier, comme son nom l'indique, y a les macros
pour la colonne sup entrepot vous faites et vous dites

pour l'instant mise a jour CDM ok, mais y a kake chose qui modifie la date du jour dans le cadencier au 239 eme tour sur le fichier stock !!!!!!
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
27 avril 2015 à 08:52
Bonjour,

Excusez le retard... "mise a jour CDM ok" ?? les valeurs s'incrément dans le cadencier ? Pouvez vous m'envoyer le fichier svp ? "qui modifie la date"
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
27 avril 2015 à 09:00
Bonjour,
"mise a jour CDM ok" ?? c'est le fichier CMD, l'ai modifie le code pour inclure le code entrepot "730" et le fichier est mis jour avec les ok ou pas trouve.

fichier que je modifie pour optimiser l'execution:
https://www.cjoint.com/c/EDBjnFMQLnG
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
27 avril 2015 à 09:09
Re,

Encore erreur 400 !!!!!!!!!!!!!!!!!
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
27 avril 2015 à 09:19
Re,
Je viens de tester votre fichier pour le 18/04. La colonne CMd ne s'alimente pas et j'ai une erreur "incompatibilité de type"
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
27 avril 2015 à 09:24
Et aucun commentaire dans la colonne Comments pour vous aussi ? Si non envoyez moi votre dossier complet
0
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 1 713
27 avril 2015 à 09:36
Re,

C'est pire que tout, plus rien ne marche par rapport a vendredi !!!!!

Je vais redecortiquer la chose pour trouver le schmilblick
0
Kivanc Messages postés 390 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 13 août 2020
27 avril 2015 à 09:45
Alors là je tombe de haut... je suis désolée mais tout doit changer !
Je m'explique.. je me rends compte avoir mal compris la demande !!! Je pensais devoir créer un bouton seulement pour changer de fichier CMD mais en fait les deux mises à jour ne doivent pas se faire en même temps. Donc il faudrait 2 boutons de mise à jour !! (dans 2 onglets)
0