Porblème de macro VBA

Bonjour,

Je suis actuellement en stage assistant ingénieur et j'ai un soucis avec le développement d'un fichier Excel.
L'objectif de ce fichier est de réaliser des graphiques de capacité et de charge par ilot de production. Or je suis encore novice sur Excel et rencontre quelques difficultés.

Mon fichier est composé de 4 feuilles. La première sert de base de donnée (pas encore complétée) avec des temps de référence. La deuxième correspond au carnet de commande qui sera importé tous les jours. La troisième permet de calculer les temps de production en fonction du nombre de pièces ainsi que les délais de livraison en semaines ouvrées. La quatrième feuille est la feuille synthèse avec toutes les informations.

Mon objectif est de réaliser une macro permettant de reporter les temps de chaque commande, sur chaque ilot de façon uniforme entre la date d'aujourd'hui et la date de livraison.

J'ai tenté de réaliser une macro très simple mais elle ne renvoie rien et je ne comprends pas trop.

Merci d'avance pour votre aide

Cordialement,

21fichier-forum.zip (624.14 Ko)

Bonjour

Impossible de travailler sur un fichier dont on ne peut pas afficher les feuilles.

Bonjour,

J'avoue ne pas comprendre les feuilles sont pourtant accessible. En utilisant les flèches en bas à gauche, ou en cliquant sur les 3 petits points.

Au temps pour moi je devais être un peu dans la lune. Désolé.

Le problème vient de tes tests

numSemaine = Sheets("TARIFICATION ET CHARGE").Range("I" & 3) ' "33/22"
dateEdition = Sheets("CHARGE PAR ARTICLE PAR ILOT").Range("V" & i) ' #18/08/2022#
dateLivraison = Sheets("CHARGE PAR ARTICLE PAR ILOT").Range("X" & i) ' #17/06/2022#

If Sheets("TARIFICATION ET CHARGE").Range("I" & 3) > Sheets("CHARGE PAR ARTICLE PAR ILOT").Range("V" & i) And Sheets("TARIFICATION ET CHARGE").Range("I" & 3) < Sheets("CHARGE PAR ARTICLE PAR ILOT").Range("X" & i) Then
      Sheets("TARIFICATION ET CHARGE").Range("I" & 4) = Sheets("TARIFICATION ET CHARGE").Range("I" & 4) + Sheets("CHARGE PAR ARTICLE PAR ILOT").Range("AE" & i)
end if

Tu compare une variable string à une variable date le résultat est forcément faux donc aucun résultat.

Voici une proposition largement optimisée. Le code est plus simple en utilisant des boucles et il est extraordinairement plus rapide en utilisant des tableaux structurés et en faisant les calculs en mémoire plutôt que sur la feuille. Voici donc deux versions.

J'ai un peu extrapolé pour deviner quelles étaient les bonnes colonnes c'est à vérifier mais le principe reste correct

Bonjour, excuse moi de ne répondre qu'aujourd'hui.

Alors je ne sais pas quoi dire à par merci, tu me sors d'une prise de tête interminable tu n'imagines même pas.

Bon courage pour la suite

Cordialement,

Re bonjour,

Petite question, j'ai rajouté des colonnes afin de pouvoir visualiser les graphiques jusqu'en 2023, or lorsque j'actualise, le tableau s'actualise uniquement sur 2022. Et ce malgré le ''Resize'' et le fait que j'ai rajouté les semaines également sur la feuille 1. Une explication ?

Cordialement,

Dans le fichier transmis juste avant, dans la feuille charge j'ai rajouté les semaines jusqu'à fin 2023. (J'ai également rajouté ces semaines sur la feuil 1)

Je comprends bien que je dois étendre mes colonnes mais je ne comprends pas comment.

Je comprends bien que je dois étendre mes colonnes mais je ne comprends pas comment.

Dans le ruban onglet Formules -> Gestionnaire de noms

Selectionner "pl_charge" puis Modifier. Corriger les références.

capture d ecran 2022 08 22 122640 capture d ecran 2022 08 22 122743

En effet, j'ai désormais des valeurs en 2023 mais en actualisant, je n'ai aucun retour avant la semaine 34 de 2023. Et ceux que j'obtiens entre la semaine 34 de 2023 et la semaine 52 de 2023 est une copie des valeurs entre la semaine 34 de 2022 et 52 de 2022. J'ai l'impression que le programme ne sait pas faire la différence entre l'année 2022 et 2023

(Encore merci pour ton aide et le temps accordé j'ai l'impression d'être un boulet et ne rien comprendre)

Le problème ne vient pas du programme mais des données. En colonne 4 du tableau 1 tu n'as qu'une seule valeur : "34/22". Je penses que c'est plutôt là qu'il y a un souci.

En y réfléchissant un peu plus je ne suis pas sûr de l'affirmation ci-dessus donc je vais fouiller un peu plus.

Bon ben il y a un souci avec l'encodage des colonnes Y et Z du tableau 1 et les entêtes de la plage charges. Pour le moment la comparaison que fait le programme n'a aucun sens. Je cherche une solution.

Un peu tordu comme problématique mais il me semble que voici la solution

En effet, je n'ai pas réussi à retrouver des valeurs cohérentes avec ton code. J'ai donc tenté d'aborder le problème autrement en passant les dates en nombre. Faut simplement arriver à récupérer les valeurs de base. J'obtiens tout le temps la même valeur sur chaque ligne je n'ai pas encore réussi à comprendre pourquoi.

3test.zip (683.47 Ko)

Bonsoir

Allez encore un essai, on finira bien par y arriver.

Bonjour, ça a l'air de fonctionner merci mille fois pour ton temps et ton aide !

Bonjour

Comme son nom l'indique pour moi la dernière version précédente n'était pas finalisée. Voici donc la version finale. J'ai profondément remodelé le tout pour le rendre un peu plus cohérent.
Il te reste à reconstruire tes graphiques.
Il y encore quelque chose que je trouve bizarre. A chaque fois que tu lance la macro "capa_charge" tu fais un cumul même si tes données de base n'ont pas changées.

PS Les références An/Semaine pour les graphiques sont en dernière colonne du Tableau3

Je vois un autre problème potentiel au changement d'année. Si le 31/12 tombe un mercredi par exemple, les données du vendredi 1er janvier seront imputées à quelle semaine, semaine 52/22 ou 01/23? Et n'y aura t'il pas deux semaines incomplètes?

Rechercher des sujets similaires à "porbleme macro vba"