Solution pour qu'un USF apparaisse une seule fois par tranche horaire

Bonjour à tous,

Je ne peux malheureusement pas joindre de fichier à ma demande car je n'ai pas d'idée de comment débuter.

Je m'explique, je bosse dans une usine de production de pièces et je cherche à créer un fichier Excel pour vérifier ma prod. L'usine tourne en 3 équipe de 8 heures et certains items ne sont à vérifier que une seule fois par équipe. J'aurais donc un userform qui récapitule des critères à vérifier toutes les heures qui ne change pas et une fois par équipe je voudrais qu'un autre Userform s'ouvre avec les vérifications à faire sur la machine.

Par exemple :

Equipe A : de 05h à 13h --> Userform qui s'ouvre toutes les heures pour le contrôle et une fois dans cette plage un autre userform qui s'ouvre quand on appuie sur le bouton valider du premier pour faire les vérif.

De même pour l'équipe B : de 13h à 21h

De même pour l'équipe N : de 21h à 05h.

Tout en sachant qu'à chaque fin de contrôle, le fichier Excel sera fermé puis réouvert à l'heure suivante etc... Et en sahcant également que le nb de contrôle par équipe n'est jamais le même (il peut aller de 6 contrôles à 9 contrôles mais le contrôle de vérif quant à lui ne varie pas et reste à 1 contrôle)

J'espère avoir été clair et vous remercie par avance.

Salut, si le fichier Excel est fermé, la macro ne se déclenchera pas. Tu devrais commencer par utiliser le plannificateur de tâche Windows pour être sûr d'ouvrir ton Fichier Excel toutes les Heures.

Ensuite avec Application.OnTime TimeValue("17:00:00") tu peux éxecuter tes macros à des heures précises, puis appeller une procédure différente si tes dans la premiere heure d'une nouvelle équipe.

J'espère t'avoir donné des premieres pistes de réflexions pour commencer.

A+

Le fichier sera ouvert par l'opérateur pour remplir ses contrôles et je voudrais que quand il clique sur le bouton valider de la feuille de contrôle cela lui ouvre un autre userform avec cette fois ci les vérifications mais que ce dernier ne 'ouvre qu'une seule fois par tranche horaire. Le soucis avec ta proposition est que l'opérateur n'ouvrira jamais le fichier à heure fixe ce sera en fonction de son temps donc peut être qu'il l'ouvrira à 13h05 ou alors à 13h25...etc c'est pour cela que j'aurais plutôt penser à un genre de compteur qui se remette à 0 à chaque équipe. ou une idée comme cela

Dans ce cas c'est encore plus simple, utilises Timer par exemple (ce n'est pas la seule solution)

Public Sub Bouton_click()
If 18000 <= Timer < 21600 Or 46800 <= Timer < 50400 Or 75600 <= Timer < 79200 Then
Call Premier_Controle_Equipe
Else
Call Controle_horaire
End If
End Sub

Normalement ca devrais fonctionner, mais faudras penser à avoir un débogueur dans le cas ou l'opérateur à raté le créneaux par exemple.

Le petit bémol c'est que si le deuxième controle est déclencher pendant la premiere heure ca coince si c'est possible d'arriver il faut revoir cette stratégie

A voir si d'autres ont de meilleures propositions :)

A+

Ah génial ta solution je connaissais pas du tout cette fonction !

Mais malheureusement comme tu le dis c'est possible que l'opérateur fasse 2 contrôles durant la première heure si jamais il a un aléa machine

Mais on est d'accord que l'opérateur feras systématiquement 8 controles par équipe ? Donc on peut imaginer une variable " n " qui compte le nombre de controles effectués.

Public Sub Bouton_click()
Static n As Integer
If n = 1 Then 'premier controle
n = n + 1
Call Premier_Controle_Equipe
Else 'Controle horaire
Call Controle_horaire
n = n + 1
If n = 9 Then n = 1
End If
End Sub

J'aurais du proposer ca dès le début c'est bien mieux que s'embeter avec les horaires etc. Qu'en penses tu ?

Public Sub Bouton_click()
Static n As Integer
If n = 1 Then 'premier controle
n = n + 1
MsgBox ("premier")
Else
MsgBox ("deuxieme")
n = n + 1
If n = 9 Then n = 1
End If
End Sub

Une excelente façon de tester avec des msg box

Je vais être chiant mais non le nombre de contrôle n'est jamais fixe.. si tu as des aléas dans ta journée tu peux facilement monter à plus de 8 contrôles..

Peut-être qu'en mixant les 2 programmes avec le timer et le n cela pourra le faire.

Par contre l'incrémentation du n, est ce que si je quitte le fichier Excel, Excel retient le dernier n utilisé ?

En effet la variable n devrait être sauvegardé dans un onglet caché du fichier Excel.

Public Sub Bouton_click()
Select Case Timer
    Case 0 To 18000
        If sheets("secret").Cells(1, 2).value <> "N" Then
            sheets("secret").Cells(1, 2).value = "N"
            sheets("secret").Cells(1, 1).value = 1
        end if
    Case 18001 To 46800
        If sheets("secret").Cells(1, 2).value <> "A" Then
            sheets("secret").Cells(1, 2).value = "A"
            sheets("secret").Cells(1, 1).value = 1
        end if
    Case 46801 To 75600
        If sheets("secret").Cells(1, 2).value <> "B" Then
            sheets("secret").Cells(1, 2).value = "B"
            sheets("secret").Cells(1, 1).value = 1
        end if
    Case 75601 To 86400
        If sheets("secret").Cells(1, 2).value <> "N" Then
            sheets("secret").Cells(1, 2).value = "N"
            sheets("secret").Cells(1, 1).value = 1
        end if
End Select

If sheets("secret").Cells(1, 1).Value = 1 Then
Call Premier_Controle_Equipe
sheets("secret").Cells(1, 1).Value = 2
Else
Call Controle_horaire
sheets("secret").Cells(1, 1).Value = sheets("secret").Cells(1, 1).Value + 1
End If
End Sub

Ici j'ai un onglet '"secret" dans le quel la cellule A1 correspond au nombre de controle réalisé pendant une équipe et la cellule B1 correspond a l'équipe en cours A, B ou N

Dans la premiere partie du code le select case detecte lorsqu'il y a changement d'équipe, donc réinitalise le compteur de controle effectué.

La deuxieme partie déclenche la macro qui convient en fonction de si c'est le premier controle ou non.

à tester ET à adapter bien sûr !

A+

Ah franchement génial ! Exactement ce que je recherchais ! Je te dis un grand merci Gabin !

Rechercher des sujets similaires à "solution usf apparaisse seule fois tranche horaire"