(VBA) Problème de compte à rebours

Bonjour à tous!

Je suis stagiaire dans une entreprise et on me demande de faire du vba, je ne connaissais pas du tout donc j'apprend un peu sur le tas .

Dans le programme que vous trouverez en pièce jointe, je cherche à faire apparaître un compte a rebours en dans la colonne E correspondant à la mesure demandée (sur la feuil1 "Demandes").

Pour demander une mesure il faut aller double Click sur une des réf des feuilles suivantes et un compte à rebours de 50 seconde commence bien en E5. Il faut ensuite double Click sur la ref de la pièce pour la passer dans les pièces déjà mesurées. (Je vous laisse essayer pour mieux comprendre)

Mais je rencontre 2 problèmes (et j'en bava pas mal depuis 2 jours pour les résoudre, sans résultat ):

  • Quand je demande une deuxième réf, le premier compte a rebours s'arrête, et le deuxième va 2 fois plus vite que la normale (2sec/1). Vous verrez que j'ai essayé un système de i, j'avais pour idée de faire grandir i en même temps que le nombre de réf mais ça ne fonctionne pas.
  • Comme j'ai demandé de lancer mon Timer quand C5 (nom de la réf à mesurer) change, le timer de certaines mesures se remet à 50 quand je supprime une pièce

Merci de votre temps et merci d'avance pour votre aide!

Bonjour et sur le forum

Ta pièce jointe n'a visiblement pas été envoyée, du coup en plus de ne pas trop comprendre l'intérêt du timer, je ne peux pas visualiser le fichier

Merci!

J'avais oublié de l'insérer, voici le lien en question.

Re,

Je vois un peu mieux ton fichier et ton timer que j'ai pu tester, mais... Pourquoi tu as besoin de faire un compteur au juste? Ils sont sûr que leur idée est bonne? En clair j'ai l'impression qu'ils veulent faire une sorte de pointage de mesure avec heure de début et heure de fin, avec un timer... est-ce que le timer sert vraiment à la personne? Je veux dire, je ne crois pas que l'on ait de timers à côté des machines pour que l'opérateur soit stressé en permanence... Ils ont une raison particulière d'en vouloir un?

Je suis totalement d'accord avec toi!

C'est un outil de flicage, ils vont avoir des objectifs qu'ils ont pas pour l'instant et ça va les stresser c'est sur.

Mais même si je suis pas pour, je suis stagiaire, je veux valider mon stage et on m'a dit de faire ça.

Ils veulent faire un pourcentage de productivité à la semaine affiché en salle d'équipe.

Hum je suppose que le format est un peu libre, parce que pour le moment je n'en suis pas fan du tout

Je préfèrerais mettre une colonne "temps mesure" qui sera une valeur fixe, et une colonne en plus "temps écoulé" qui permettra de voir le temps qui est déjà passé depuis le lancement, il passera en rouge dès que le temps dépassera celui alloué.

Et quand il double cliquera ça mettra le temps alloué et le temps passé côté à côté, après libre à vous de calculer un écart.

Par contre ce qui va poser problème là-dedans, c'est qu'il peut truquer ça très facilement, moi on me met un chrono, je le lance, et je double clique sur la ligne quand ça va atteindre 0 peu importe si j'ai réellement finit ma mesure ou non, personne ne pourra vérifier qu'il a vraiment mis ce temps ou non pour mesurer

Ce que j'aurais plutôt fait dans ton entreprise c'est un objectif en nombre de mesures, que toutes les pièces soient mesurées à la fin de la journée, une zone pièces à mesure, et une zone pièces mesurées, à la fin de la journée tu passe pour voir si la zone pièces à mesurer est encore remplie ou non...

Enfin c'est eux qui te fixent l'objectif...

Dis moi au moins si ça te va de reprendre le format de la feuille et du reste

La colonne temps écoulé qui deviendrait rouge quand la demande est dépassé c'est vraiment une bonne idée, seulement je suis un peu juste pour coder quelque chose comme cela car on a pas un temps fixe pour toutes les mesures, on a 10 états de surface différents et 3 caractéristiques, donc 30 temps attendus différents selon ce que veut mesurer l'opérateur.

Et pour l'idée de la mesure à la journée je pense que c'est pas possible car le nombre de pièce varie beaucoup d'un jour à l'autre, et en fonction de la série du jour on ne mesurera pas les mêmes surface et donc on attendra des temps très différents.

Pas de problème pour changer des choses, je pense pas que ce soit une version finale de toute façon.

[...] seulement je suis un peu juste pour coder quelque chose comme cela car on a pas un temps fixe pour toutes les mesures, on a 10 états de surface différents et 3 caractéristiques, donc 30 temps attendus différents selon ce que veut mesurer l'opérateur. [...]

N'oublies pas que tu es sur un forum pour chercher de l'aide, niveau code on peut t'expliquer ce qu'on fait, et pour les temps, un tableau de 30 lignes avec les temps attendus et le tour est joué

Merci c'est vraiment cool.

Alors donc pour chaque bouton de ref, j'ajoute, quand l'opérateur double Click une InputBox qui lui demande la surface à mesurer et la caractéristique, de là, en fonction de sa réponse j'affiche le temps de mesure recommandé qui se trouvera comme tu l'a dis dans un tableau sur feuil5 ou feuil6 par ex.

Ensuite, il faut qu'un timer se lance et que quand il dépasse la valeur de temps recommandé il se mette en rouge, ça je pense pouvoir y arriver, seulement, je vais rencontrer le même problème qu'actuellement non? Quand j'aurais plus d'une pièce à mesurer, les 2,3,4,5 èmes pièces auront leur timer arrêté et la 1ère pièce ira plus vite que prévu?

Pour ton timer on verra après

Mais oui il devra indiquer ce qu'il souhaite mesure et on en déduira le temps de mesure.

J'ai commencé à revoir un peu le format du fichier, j'ai mis des tests pour que tu vois ce que ça donnerait, seul le double clique marche pour le moment, tu verras que ça calcule l'écart et met en rouge si le temps est dépassé, tu peux tester un peu pour voir comment ça agirait.

Le timer ne devrait pas être bien compliqué, par contre... quand tu mets plusieurs surfaces à mesure, les timers de toutes les lignes devront bouger? ou bien les lignes suivantes seront en liste d'attente?

Je te transmets le fichier:

Pour les couleurs j'ai fait de la mise en forme conditionnelle

Whaou merci! C'est vrai que je trouve ce format beaucoup mieux!

Tu parles du cas ou il y aurait plusieurs surfaces à mesurer sur la même pièce? Dans ce cas l'idéal serait qu'elles se mettent en attente oui. Si ça peut aider, deux pièces ayant la même réf ne peuvent pas demandé à être mesurés en même temps car on a qu'une machine de chaque type, donc on peut imaginer que dès que dans la colonne "pièce a mesurer", il y a deux fois la même réf, l'une des deux se met en attente, ou alors, les temps s'additionnent.

Re,

J'ai fait une boulette sur le temps, ça ne supporte pas les valeurs négatives, du coup j'ai rajouté une colonne qui indique si c'est du retard ou de l'avance, voici le nouveau fichier:

EDIT:

Oui c'est tout à fait faisable de regarder si tu as plusieurs fois la même valeur dans une colonne, il suffit de le coder

C'est vraiment bien! Merci beaucoup de m'aider! J'imagine pas le temps qu'il m'aurait fallu pour tout refaire.

Ca je devrais trouver, donc je met la condition "Si y'a deux fois la même valeur", faire: temps1 = temps1 + temps2 et donc supprimer ligne 2.

Re,

Hum non je ne pense pas qu'on devrait supprimer une ligne, ça fait de la perte d'information...

Ce qu'il va plutôt falloir faire c'est par rapport au timer: "si j'ai déjà croisé cette valeur sur une ligne précédente, alors ne pas incrémenter celle-ci"

qu'en penses-tu?

Pour ça j'utiliserais bien l'objet Dictionary qui possède une fonction capable de savoir si une valeur existe à un index donné

Je ne savais pas qu'il existait "ne pas faire" ça va pas mal m'aider ça!

Pareil pour la fonction Dictionary je la connaissais pas, je vais regarder un peu comment l'utiliser.

EDIT: Ah non! L'objet dictionary! C'est une bibliothèque de fonction qu'il faut appeler en début de programme?

Re,

ça marche, bonne lecture alors

Si tu as des questions n'hésite pas, je vais te laisser de débrouiller un peu sur ton fichier comme c'est le sujet de ton stage

Oui, encore merci de ton aide!

Rechercher des sujets similaires à "vba probleme compte rebours"