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

Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention   -  
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
Je n'ai pas compris.. dois-je supprimer ces lignes de code ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
Je dirai même n'en retrouve aucun...
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Alors là... ça devient compliqué pour moi. Il faudrait faire une seule boucle For ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

Encore erreur 400 !!!!!!!!!!!!!!!!!
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Et aucun commentaire dans la colonne Comments pour vous aussi ? Si non envoyez moi votre dossier complet
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
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   Statut Membre Dernière intervention  
 
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