Problème macro

Résolu/Fermé
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 - 12 févr. 2020 à 15:33
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 - 11 mars 2020 à 16:32
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

A voir également:

4 réponses

yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
12 févr. 2020 à 16:07
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.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
12 févr. 2020 à 16:19
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
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021
Modifié le 12 févr. 2020 à 17:59
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?
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
12 févr. 2020 à 17:40
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
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
12 févr. 2020 à 17:58
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)
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2 > yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024
12 févr. 2020 à 19:26
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
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021
12 févr. 2020 à 22:59
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.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
13 févr. 2020 à 07:39
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
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
13 févr. 2020 à 08:48
il me semble que les machines n'ont pas les mêmes lettres dans les fichiers production et compteur.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
13 févr. 2020 à 09:06
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
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
14 févr. 2020 à 10:19
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
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2 > yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024
5 mars 2020 à 19:31
Bonjour yg_be
une rupture d'activité imprévue et me voilà de retour
tout d'abord merci beaucoup de votre solution!
j'ai rencontré un problème bizarre: j'ai ouvré le fichier production.xlsm puis j'ai activé la macro MettreAjour
alors j'ai obtienu un message d'erreur "Le classeur ''production'' doit être ouvert;" alors qu'il est déjà ouvert et se trouve dans le même répertoire que le fichier à macro
mais j'ai remarqué que dans l'explorateur VBA le classeur "production" n'existe pas
alors qu'auparavant l'explorateur affiche la totalité des fichiers ouverts
connaissez vous la cause de ce problème
merci encore
bien cordialement
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021
5 mars 2020 à 22:49
bonjour, le classeur production est bien un xlsm? je ne pense pas que ce soit nécessaire, mais c'est ce que la macro vérifie.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2 > yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024
10 mars 2020 à 16:14
Bonjour,
oui son extension est bien .xlsm j'ai vérifié cela et c'est pourquoi je ne comprends pas d'ou vient ce message d'erreur
les deux fichiers ci joint
production:
https://mon-partage.fr/f/q8thpP93/
compteur:
https://mon-partage.fr/f/TkKQMMVu/
merci beaucoup
bien cordialement
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021
10 mars 2020 à 16:27
chez moi, tout fonctionne, à condition que le fichier production soit bien ouvert, pas en attente d'une réponse à un message.
0