Problème macro

Signaler
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020
-
yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
-
Bonjour,
le fichier"compteur d'arrêt machine" calcule le nombre d'heures d'arrêt de machines chaque mois, à partir d'un fichier de production journalière
j'ai utilisé ce fichier pour l'année 2019 et ça marchait bien mais depuis un temps ça ne fonctionnait plus avec le fichier "production" de l'année 2020
j'ai essayé de connaitre la cause mais en vain merci de m'aider
lien vers le fichier "production"
https://mon-partage.fr/f/OQlQcnaB/
lien vers le fichier "compteur"
https://mon-partage.fr/f/X0BY8pQu/
merci encore
bien cordialement




Configuration: Windows / Chrome 80.0.3987.87

4 réponses

Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
533
bonjour,
le fichier production ne contient plus les mêmes données au même endroit qu'avant.
le programme est, pour le moment, tout bête, il ne cherche pas les donnés, il va les chercher à une place précise.
je pense que cela ira mieux en changeant ces deux lignes dans le code (je pense que tu trouveras facilement les lignes existantes):
hrtravjour = f.[R22]
tabloM = f.Range("AA9:AA21")

je remarque aussi que l'ordre des machines a changé, il n'est plus le même dans le ficher production et le fichier compteur. soit tu adaptes un des deux fichiers, soit on recommence la discussion pour que le programme trouve la bonne ligne pour chaque machine.
safach
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020
2
Rebonjour,
j'ai bien changé les deux lignes de la macro et ça calcule de nouveau les pourcentages d'arrêt mais j'espère que le programme trouve la bonne ligne de chaque machine c'est plus pratique au cas ou l'ordre des machines change non intentionnellement
car pour le moment j'ai en janvier une grande pourcentage d'arrêt qui me semble illogique
merci beaucoup de votre aide
lien du fichier compteur
https://mon-partage.fr/f/2KKqo5tY/
bien cordialement
yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
533 > safach
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020

comme expliqué ici, le tableau du fichier compteur contient des rendements, pas des pourcentage d’arrêt.
quelle valeur te semble-t'elle illogique?
dans le fichier production, j'ai vu que la machine SB2 a un rendement de 62700% le 22 janvier.
pour retrouver la bonne ligne de chaque machine, j'avais proposé de rajouter dans une colonne du fichier compteur la lettre symbole de chaque machine. n'est-ce pas possible?
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020
2
Re,
merci de votre retour
attendez svp je dois me concentrer un peu, merci d'avoir dégager cette remarque
mon but de ce fichier est de calculer les pourcentages d'arrêt mensuel de l'atelier
en faisant la somme de toutes les R22 d'un mois, on obtient le nombre d'heures d'ouverture de l'atelier
puis en calculant la formule R22*AAx ça nous donne les nombre d'heures de travail réel de la machine alors la formule doit être (R22*(100-AAx))/100 pour avoir le complémentaire de la formule précédente ce qui donne justement le nombre d'heures d'arrêt de la machine
le reste se calcule de la même façon qu'auparavant: on somme ,pour chaque machine, toutes les heurs d'arrêt pendant un mois puis on divise le résultat par la somme des R22 pendant le même mois et on obtient finalement le pourcentage d'arrêt pendent le mois considéré
en ce qui concerne la liste des machines, oui votre idée me parait efficace on peut utiliser la lettre symbole des machines pour les repérer dans les deux fichiers

merci beaucoup
bien cordialement
yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
533
pour calculer les pourcentages d’arrêts au lieu des pourcentages de travail, il suffit, en effet, de modifier la ligne pour faire (100-AAx):
tablo(i, nMois) = tablo(i, nMois) + (100 - tabloM(i, 1)) / 100 * hrtravjour

si tu me montres le fichier compteur avec les lettres symboles quelque part, je peux adapter le code pour utiliser cette lettre et trouver les bonnes lignes dans le fichier production.
(je trouve plus sympa de se tutoyer entre participants au forum)
safach
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020
2 > yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020

Re,
j'ai bien modifié la ligne de la code, merci
voici le lien vers le fichier " compteur" , j'ai y ajouté à la colonne A l'alphabet correspondant à chaque machine
https://mon-partage.fr/f/sbNL8Yj5/
merci encore
bien cordialement
yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
533 > safach
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020

je ne comprends pas le lien entre les lettres et les machines:
dans le fichier production, je vois
F TSUGAMI le 12/2
mais I TSUGAMI le 6/2
je pensais que la même lettre était toujours liée à la même machine.
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020
2
Bonjour,
ce document du réseau est utilisé par plusieurs personnes
il est altéré depuis le 6/2, j'ai rétabli l'ordre des lettres des feuilles de 6/2 jusqu'à 12/6
maintenant l'ordre est le même dans toutes les feuilles
voila le lien
https://mon-partage.fr/f/n9eN0vB1/
merci beaucoup
bien cordialement
yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
533
il me semble que les machines n'ont pas les mêmes lettres dans les fichiers production et compteur.
Messages postés
217
Date d'inscription
jeudi 27 août 2015
Statut
Membre
Dernière intervention
13 février 2020
2
Rebonjour,
désolée j'ai oublié de changer la liste des lettres dans "compteur"
il s'agit maintenant de la même liste dans les deux fichiers
lien vers "compteur
https://mon-partage.fr/f/T7Y7NRQl/
merci encore
bien cordialement
yg_be
Messages postés
9690
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
533
ceci devrait chercher les bonnes lignes, en tenant compte des lettres des machines:
Option Explicit

Sub MettreAjour()
Dim wbR As Workbook, f As Worksheet, tablo, tabloM, destination As Range
Dim nomF As String, nMois As Integer, i As Integer, hrtravmois(12) As Integer, hrtravjour As Integer
Dim nmachines As Integer, lettresdest, dest As Worksheet, lettressrc, source As Range, pmachine As Integer
Dim idest As Integer, posmachine As Integer
nomF = "production.xlsm"
On Error Resume Next
Set wbR = Workbooks(nomF)
If Err.Number > 0 Then
    MsgBox "Le classeur ''production'' doit être ouvert;", 16
    Exit Sub
End If
Set dest = ActiveSheet
Set destination = dest.Range("C7:N19")
destination.ClearContents
tablo = destination
nmachines = UBound(tablo, 1)
lettresdest = destination.Offset(0, 1 - destination.Column).Resize(, 1)
For i = 1 To 12
    hrtravmois(i) = 0
Next i
For Each f In wbR.Worksheets
    If IsDate(f.Name) Then
        If Year(CDate(f.Name)) = ActiveSheet.Range("A5") Then
            nMois = Month(CDate(f.Name))
            hrtravjour = f.[R22]
            hrtravmois(nMois) = hrtravmois(nMois) + hrtravjour
            Set source = f.Range("AA9:AA21")
            tabloM = source
            lettressrc = source.Offset(0, 1 - source.Column).Resize(, 1)
            For i = 1 To UBound(tabloM, 1)
                posmachine = 0
                For idest = 1 To nmachines
                    If lettressrc(i, 1) = lettresdest(idest, 1) Then
                        posmachine = idest
                        Exit For
                    End If
                Next idest
                If posmachine > 0 Then
                    tablo(idest, nMois) = tablo(idest, nMois) + (100 - tabloM(i, 1)) / 100 * hrtravjour
                End If
            Next i
        End If
    End If
Next f
For i = 1 To UBound(tablo, 1)
    For nMois = 1 To 12
        If hrtravmois(nMois) <> 0 And tablo(i, nMois) <> 0 Then
            tablo(i, nMois) = tablo(i, nMois) / hrtravmois(nMois)
        Else
            tablo(i, nMois) = ""
        End If
    Next nMois
Next i
destination = tablo
End Sub