Ajout d'un bouton pour récupérer données d'un fichier externe
Kivanc Messages postés 397 Statut Membre -
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.
- Ajout d'un bouton pour récupérer données d'un fichier externe
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Fichier rar - Guide
305 réponses
Objectif: ajouter un bouton dans la macro existante pour alimenter la colonne CMD du cadencier à partir du fichier fichier_alim_CMD, en récupérant la colonne U « Arr. Intégrées ». Actuellement, le bouton CMD ne se déclenche pas correctement et ne fonctionne que lorsque la macro principale qui ouvre le fichier est déjà lancée, affichant des erreurs telles que « l’indice n’appartient pas à la sélection » ou une erreur 400. Le code du bouton CMD a été copiée depuis celui du bouton « aliment stocks » et adapté par renaming des variables, mais les essais restent infructueux, avec des problématiques potentielles liées à la sélection des plages, au formatage des données et à une logique de calcul lourde. Des pistes avancées incluent la restructuration du programme pour en alléger l’exécution, et, le cas échéant, l’emploi d’un fichier d’extraction séparé, tout en tenant compte des paramètres hebdomadaires et des jours fériés qui complexifient le traitement.
If (I_Prev = 2 Or I_Prev = 3) Then 'Alerte pour le stock J+2, J+3
ElseIf (I_Prev = 1 Or I_Prev = 2) Then 'Alerte Tendance pour les prév J+1, J+2
Et pour étendre l'alerte stock faut il ajouter des I_Prev = 4,5,6 ?
Oui, dans le contexte actuel. Vous dites si faut ou pas a:
J+2 alerte tendance et J+3 a J+6 alerte stock
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe viens de regarder le fichier d'origine marco....Test que vous avez mis a dispo et y a kake chose pour cette colonne en commentaire !!!!!!
voyez-vous le calcul de la prev sur 14 jours ? voici la formule : Calcul_Prevision = (Somme_Ref / Nombre_Jours_Glissants) * Poids
Avez-vous bien cette macro de base Non, c'est:
Macro alim cadencier TEST.xlsm du 22/04/2015
Mais dans le dernier fichier .... lens 16 mars, le code est aussi en commentaire. Par contre, a force de rererelire le code, j'ai trouve pour alerte tendance J+2, c'est moi qui ait fait l'erreur de mettre un ElseIf, je vais corriger
Je vais tester avec le fichier .... lens 16 mars et je vous dirai de quoi il en retourne ....
En prenant le fichier macro_cadencier_ab_lens_16_mars_.xlsm, y a pas de mise a jour des colonnes PREV du cadencier, code en commentaire. Si j'active le code, erreur nombre de parametre (ce que j'ai eu sur "mon" fichier) et j'ai les memes erreur incompatibilite de type.
Par contre pas de probleme de temps d'execution !!!!!!
Z'etes sure que ca a deja marche votre affaire ??????
Ouvrez le cadencier que je viens de vous envoyer. Dernière mise a jour des ventes aujou'dhui donc ls prev sont jusque le 14 mai (vérifiez colonne PREV).
Maintenant mettez à jour le 02/05 avec la macro de ce matin et vous verrez que nous avons la PREV jusqu'au 16 mai maintenant !
Voilà ce que j'ai en plus dans votre code :
Dim x, xx, xxx
Puis
MFMP.Activate'On récupère la jour de la date
x = MFC.Cells(Ligne_Date, Colonne_Ref).Valuepuis
Debug.Print x, Jour
Ici c'est différent :
x = Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours"), 0)
xx = Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids"), 0)
xxx = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours"), x, xx)
puis
Dim LigTabl As Long, MonTableau()
Ici c'est different
If MFM.CheckBoxes("Check_Box_Date_du_Jour").Value = xlOn Then
MaDate = MFM.Range("Date_du_jour")
Else
MaDate = MFM.Range("MaDate")
End If
Il manqué : 'Mise à jour des prévision
Ligne_Ref = Ligne
Ce calcul :
Prevision = Calcul_Prevision(MFMP, MFC, Ligne_Ref, Col_Prev + (I_Prev * Nombre_Colonne_Jour), Jour_Ferie, Nombre_Colonne_Jour, Somme_Ref) '[V6]
Prevision = Round(Prevision, 0) 'Arrondi de la prévision à un entier
il ya une lettre en plus ici :
Prevision = Round(Calcul_Prevision(MFMP, MFC, Ligne_Ref, Col_Prev + (IPNCJr)
le r est en trop ?
En effet le r et en trop. J'ai fait du menage dans les codes, car pour trouve comment votre tracassin fonctionne, j'ai mis du code en plus mais qui ne derange pas les calculs (sauf le r). A certain endroit j'ai compresse les lignes d'instruction pour optimiser la vitesse d'execution vu le nombre de tours de calcul.
"mon" fichier: https://www.cjoint.com/c/EDEmKxuyHxl qui me sort des erreur de type
Votre fichier de base (macro_cadencier_ab_lens_16_mars_) lui me sort des erreurs 400 avec ce que j'ai en fichiers annexes
Donc avec quoi avez vous fait cette "magnifique" mise a jour top du top ??
tous mes fichiers sont là. faites la maj pour le 2 mai vous verrez les prev jusqu'au 16. actuellement elles sont jusqu'au 14
voici le fichier : https://www.cjoint.com/c/EDEojBdAc1o
mes prev sont calculés mais j'ai maintenant un pb avec le bouton entrées. il ne reconnait pas "MCommande.MaJ_Cadencier_Commande(MFM)"
ou l'avait vous déclarer ?
fichier de base Macro cadencier AB LENS 16 mars erreur 400 mais bon ne servira plus
fichier MACRO_AB_LENS_2904:
ceci doit aller, j'ai fait un peu de menage (sauf declarations variables) a priori pas la cause du probleme. Par contre, ce qui est plutot embetant ce sont ces erreurs de type car sur "mon" fichiers et les fichiers precedents c'etait la zone.
a vous de tester : https://www.cjoint.com/c/EDEoFSqSn7q
par contre je vois que dans le fichier Entrees2804 que je vous ai envoyé et que vous avez utlisé il y'a la ligne rapport a la fin...c'est peut être a cause de ça votre erreur ??
Utilisez 1150429 pour les entrées
Si je vous demande de retester car j'ai quand meme modifie le code. Pour moi c'est bon, mais c'est vous qui etes juge
Pour "mon" fichier, aucune importance, nous repartons avec le dernier que j'ai mis a jour (MACRO_AB_LENS_2904) si vraiment ok, avant de faire les autres modif parametres par Num d'entrepot