Bonjour à tous,
J'ai réalisé un fichier Excel pour des pilotes en usine de production mais après une semaine de test, je me suis rendu compte qu'il y avait encore certaines choses à revoir... Je me tourne donc vers vous et votre science infuse!
Après rajout d'une colonne "Fréquence", mon souhait serais:
Si la durée est mise ainsi que la Machine/Cause mais pas la fréquence, alors sur la feuille 'CalculsMacros' cette durée se rajoute à celle déjà présente (Durée totale) et que la fréquence augmente de +1 à la ligne correspondant à la Machine/Cause.
Si la fréquence est mise ainsi que la Machine/Cause (La durée dans ce cas n'est pas importante) alors sur la feuille 'CalculsMacros' la fréquence se rajoute à celle déjà présente et la durée totale augmente de 5min toujours à la ligne de la Machine/Cause.
Voici une partie de la macro de la feuille 'Saisie-pilote' qui me reportait la durée et rajoutait +1 à la fréquence:
A noter que sur la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 'la macro se déclenche à chaque fois qu'une valeur est entrée dans une cellule de la feuille Private Sub Worksheet_Change(ByVal Target As Range) 'définir les variables Dim Ligne As Variant Dim Plage As Range Dim Cel As Range Dim Chaine As String 'saisie en colonnes A à F non vides If Target.Column < 7 And Application.CountA(Cells(Target.Row, 3).Resize(, 6)) = 10 Then 'concatène le nom de la machine avec le nom du problème Chaine = Cells(Target.Row, 5) & Cells(Target.Row, 6) With Sheets("CalculsMacros") 'on cherche sur la feuille "CalculsMacros" le numéro de ligne correspondant à l'évènement et au nom de la machine Set Plage = .Range(.Cells(4, 2), .Cells(.Rows.Count, 2).End(xlUp)) For Each Cel In Plage If Cel.Value & Cel.Offset(, 1).Value = Chaine Then Ligne = Cel.Row Exit For End If Next Cel 'on additionne le nombre de la colonne C de la feuille "saisie-pilote" dans la colonne E ' de la feuille "CalculsMacros" .Cells(Ligne, 5) = .Cells(Ligne, 5) + Cells(Target.Row, 3) .Cells(Ligne, 8) = .Cells(Ligne, 8) + 1 End With End If End Subj'ai mis le comptage = 10 pour ne pas que le reste de la macro s'effectue pour éviter les erreurs ou les abérations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'saisie en colonnes A à F non vides If Target.Column < 7 And Application.CountA(Cells(Target.Row, 3).Resize(, 6)) = 10 Then
Merci de votre aide,
Cordialement
Blend
Partager