Probleme macro de transfert de données

Résolu/Fermé
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 - Modifié le 19 déc. 2019 à 16:57
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:24
Bonjour,
j'ai un classeur Excel qui contient une macro qui fait le transfert à partir d'un autre classeur nommé "rendement"
mais le classeur "rendement" a été remplacé par un autre classeur nommé "production" qui enregistre la production journalière d'un ensemble de machines
alors je veux que le transfert sera à partir du nouveau classeur "production" et je ne sais pas comment adapter la macro à ce changement
le transfert a pour but de compter les arrêts de production de chaque machine pendant chaque mois
j'ai besoin de votre aide svp les amis j'ai pas de grandes connaissances la dessus
merci par avance
le lien vers le classeur production (source de données):
https://mon-partage.fr/f/Ss0oMrs2/
le lien vers le classeur compteur d'arrêt machine:
https://mon-partage.fr/f/Bu2BCJfh/
bien cordialement


Configuration: Windows / Firefox 56.0


A voir également:

20 réponses

yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
19 déc. 2019 à 18:19
bonjour, peux-tu aussi partager le fichier "rendement"?
peux-tu expliquer les différences entre le fichier rendement et le fichier production?
1
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
23 déc. 2019 à 17:40
je suggère ceci:
Option Explicit
Sub MettreAjour()
Dim wbR As Workbook, f As Worksheet, tablo, tabloM
Dim nomF As String, nMois As Integer, i 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
ActiveSheet.Range("C7:N23").ClearContents
Debug.Print ActiveSheet.Name
tablo = ActiveSheet.Range("C7:N23")
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))
            tabloM = f.Range("AA18:AA30")
            For i = 1 To UBound(tabloM, 1)
                If tabloM(i, 1) = 0 Then
                    tablo(i, nMois) = tablo(i, nMois) + 1
                End If
            Next i
        End If
    End If
Next f
ActiveSheet.Range("C7").Resize(UBound(tablo, 1), 12) = tablo
End Sub
1
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
20 déc. 2019 à 11:01
Bonjour,
merci de votre réponse
le lien vers le fichier rendement
https://mon-partage.fr/f/YwBoSb1H/
normalement le nombre des arrêts sont calculé à partir les zéro rendement en colonne AA dans le classeur production et qui est en colonne Q dans le classeur rendement
je pense que c'est la différence entre les deux classeurs
le classeur "compteur d'arrêt machine" fait la somme des zéro rendement pendant chaque mois et envoie la valeur vers les cellules des machines correspondantes
merci de m'aider je me bloque la dessus
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
20 déc. 2019 à 11:32
je vois que certaines machines présentes dans le fichier production sont absentes dans le fichier compteur.
est-ce volontaire?
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
20 déc. 2019 à 11:39
Rebonjour,
oui je veux calculer les machines présentes dans le fichier compteur arrêt machine
merci de votre réactivité
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
20 déc. 2019 à 12:01
dans le fichier compteur, je vois trois machines, BIGLIA, MUTI BROCHE, et MULTI BROCHE NV.
cela correspond à quelles machines dans le fichier production?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
20 déc. 2019 à 14:40
Rebonjour,
je veux calculer l'arrêt des machines existantes dans le classeur "production" qui sont les suivantes
SST16
SB16
BIGLIA 301 SM
BIGLIA 42 S2M-bitourelle
L32
TSUGAMI
MORI SEIKI 3 axes
MORI SEIKI 5 axes
HARDING
KITAMURA
MULTI BROCHE
NAKAMURA
TOUR WEILER

j'aurais du modifier la liste des machines dans le classeur compteur excusez moi
merci encore
bien cordialement

0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
20 déc. 2019 à 15:30
pourrais-tu alors partager le fichier compteur adapté avec la nouvelle liste des machines au bon endroit?
0
macbernic Messages postés 2104 Date d'inscription samedi 14 décembre 2019 Statut Membre Dernière intervention 23 octobre 2024 500
20 déc. 2019 à 16:19
Bonjour,
Dans le classeur compteur d'arrêt machine dans la macro "mettreajour" tu dois remplacer : nomF = "rendement.xlsm" par : nomF = "production.xlsm"
puis : MsgBox "Le classeur ''rendement'' doit être ouvert;", 16 par : MsgBox "Le classeur ''production'' doit être ouvert;", 16
alors ta macro ira chercher les infos dans le fichier "production".
@+
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
Modifié le 23 déc. 2019 à 16:01
Bonjour les amis,
je suis désolée pour le retard c'était imprévu
voici le lien vers le fichier compteur avec la liste de machines mise à jour
https://mon-partage.fr/f/xyYUv3Tj/
merci yg_be pour votre aide si précieuse
merci à vous aussi macbernic mais la structure des deux classeurs n' est pas la même alors ça ne donnera pas le bon résultat
bien cordialement

0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
24 déc. 2019 à 20:01
Bonsoir,
merci yg_be pour votre aide
est ce que c'est possible qu'au lieu de compter les jours d'arrêts on raisonne par heure d'arrêt
on somme le temps d'ouverture de l'atelier pour chaque mois (en heure) ça se trouve en bas du tableau et puis selon le rendement on en déduit les heures de travail réels (machine qui produit réellement )
par exemple la machine A a 50% de rendement pour un temps d'ouverture de 12h alors c'est 12*0,5 =6h de travail réel sur 12h pour un jour jj-mm-aa puis pour un mois c'est la somme des heures de travail réel sur la somme des heures d'ouverture de l'atelier
si vous pouvez le faire ça sera très gentil de votre part
merci encore
bien cordialement



0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
24 déc. 2019 à 20:09
avant d'aller plus loin, merci d'indiquer si la suggestion fonctionne.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
24 déc. 2019 à 20:19
Re,
oui ça fonctionne parfaitement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
24 déc. 2019 à 21:44
l'exemple que tu donnes n'est pas assez précis. merci de prendre le temps de réfléchir et d'expliquer précisément.
tu écris" le temps d'ouverture de l'atelier pour chaque mois (en heure) ça se trouve en bas du tableau": en bas de quel tableau: quel classeur, quelle feuille, quelle cellule?
tu donnes l'exemple "la machine A a 50% de rendement pour un temps d'ouverture de 12h": quel classeur, quelle feuille, quelle cellule? merci d'aller jusqu'au bout de l'exemple, en faisant tous les calculs.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
25 déc. 2019 à 09:18
Bonjour,
merci de votre retour
le temps d'ouverture journalier de l'atelier se trouve dans la cellule R31 et R32 il y a quelques feuilles qui ne contiennent pas cette information je vais les rectifier en les convertissons en heure un exemple se trouve dans la feuille 18-12-19 du fichier ci joint
https://mon-partage.fr/f/xWANrvaN/
donc dans chaque feuille de rapport journalier de production il y a le temps d'ouverture ,en faisant la somme pour un mois ça donne le nombre d'heures d'ouverture pendant ce mois
puis en colonne AA des rendements on calcule le temps de travail réel de chaque machine par exemple pour la machine A SST16 en AA18 on en déduit le temps de travail réel de cette façon
(R31+R32)*A18=le nombre d'heures de travail réel de la machine considérée et ainsi de suite pour les autres machine
donc dans le fichier compteur au lieu de transférer le nombre de jour d'arrêt on transfère le nombre d'heure de travail réel de chaque machine pendent le mois qu'on divise par le nombre d'heure d'ouverture pendent le même mois
j'espère que j'étais plus claire je suis disponible pour toute autre clarification
je suis très reconnaissante pour votre dévouement un grand merci à vous
bien cordialement

0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
25 déc. 2019 à 09:50
je suggère alors ceci:
Option Explicit
Sub MettreAjour()
Dim wbR As Workbook, f As Worksheet, tablo, tabloM
Dim nomF As String, nMois As Integer, i As Integer, hrtravmois(12) As Integer, hrtravjour 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
ActiveSheet.Range("C7:N23").ClearContents
tablo = ActiveSheet.Range("C7:N23")
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.[R31] + f.[R32]
            hrtravmois(nMois) = hrtravmois(nMois) + hrtravjour
            tabloM = f.Range("AA18:AA30")
            For i = 1 To UBound(tabloM, 1)
                tablo(i, nMois) = tablo(i, nMois) + tabloM(i, 1) / 100 * hrtravjour
            Next i
        End If
    End If
Next f
For i = 1 To UBound(tablo, 1)
    For nMois = 1 To 12
        If hrtravmois(nMois) <> 0 Then
            tablo(i, nMois) = tablo(i, nMois) / hrtravmois(nMois)
        Else
            tablo(i, nMois) = ""
        End If
    Next nMois
Next i
ActiveSheet.Range("C7").Resize(UBound(tablo, 1), 12) = 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
25 déc. 2019 à 11:51
Re,
j'ai essayé votre code et ça donne le calcul dans le fichier ci joint
https://www.cjoint.com/c/ILzkU5Wwt6m
pourquoi il y a des zéro aux cellules M20 M21 M22 et N20 N21 N22
bien cordialement

0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
25 déc. 2019 à 12:23
ceci devrait être mieux (il est préférable d'éliminer tous les dim que tu laisses avant la sub):
Option Explicit

Sub MettreAjour()
Dim wbR As Workbook, f As Worksheet, tablo, tabloM, source As Range
Dim nomF As String, nMois As Integer, i As Integer, hrtravmois(12) As Integer, hrtravjour 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 source = ActiveSheet.Range("C7:N19")
source.ClearContents
tablo = source
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.[R31] + f.[R32]
            hrtravmois(nMois) = hrtravmois(nMois) + hrtravjour
            tabloM = f.Range("AA18:AA30")
            For i = 1 To UBound(tabloM, 1)
                tablo(i, nMois) = tablo(i, nMois) + tabloM(i, 1) / 100 * hrtravjour
            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
source = 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
2 janv. 2020 à 08:18
Bonjour yg_be
tout d'abord je vous souhaite une très bonne année 2020
a propos votre code j'ai une petite question
pour la machine TSUGAMI elle est en arrêt planifié depuis septembre mais en mois 11 et 12 j'ai deux valeurs différentes de zéro (cellules en jaunes dans le fichier compteur ci joint)
https://mon-partage.fr/f/cUrGaqss/
merci de votre aide
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
2 janv. 2020 à 09:59
je suppose que cela vient des données dans le classeur production.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
3 janv. 2020 à 11:05
Bonjour,
si vous voyez le fichier production dans e colonne AA le rendement de cette machine est zéro dans toutes les feuilles du classeur
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
3 janv. 2020 à 12:05
quand je teste avec le fichier production que j'ai reçu il y a un certain temps, les deux valeurs restent vides.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
7 janv. 2020 à 16:21
Bonjour,
les autres valeurs étant correctes je ne trouve pas de problème concernant les rendements tous nuls
merci de votre aide
j'ai une petite demande pouvez vous rendre la liste déroulante des années infinie (peut contenir toutes les années à venir)
merci beaucoup
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
7 janv. 2020 à 16:44
en ce qui concerne les valeurs bizarres pour la machine TSUGAMI, le mieux serait de partager le fichier production qui donne cette anomalie.
pour la liste déroulante, pourquoi ne pas simplement taper l'année en A5? je ne sais pas comment rendre une liste déroulante infinie, et cela ne me semble pas très utile.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
9 janv. 2020 à 14:18
Bonjour,
merci de votre retour
ceci est le fichier production ou le rendement de la machine TSUGAMI est nul partout (machine en arrêt)
https://mon-partage.fr/f/aTfsd3lk/
alors si je tape l'année en A5 la macro s'exécute normalement
merci encore
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
9 janv. 2020 à 15:02
il me semble que les machines ne sont pas dans le même ordre dans les deux classeurs, je pense que c'est cela qui fait que les chiffres ne sont pas corrects.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
9 janv. 2020 à 15:11
Re,
j'ai mis les machines dans le même ordre dans les deux classeurs mais toujours pour la machine en arrêt j'ai deux valeurs non nulles pour les mois de septembre et octobre (valeurs en jaunes)
ceci le lien du fichier
https://mon-partage.fr/f/he5V7Abn/
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
9 janv. 2020 à 15:20
dans le classeur production, l'ordre des machines n'est pas le même en septembre et en décembre.
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
9 janv. 2020 à 15:32
Re,
ah j'ai compris mais chaque machine est désignée par une lettre alphabet
ça ne résout pas le problème ?
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
9 janv. 2020 à 18:04
en effet, le programme pourrait utiliser ces lettres, si elle étaient aussi présentes dans une colonne du classeur compteur.
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 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024
12 févr. 2020 à 13:16
Bonjour yg_be
sil vous plait je suis désolée pour le dérangement mais le fichier "compteur" ne fonctionne pas avec le fichier "production" de l'année 2020 pourtant je n'ai rien changé dans les deux
j'ai essayé de connaitre la cause mais en vain merci de m'aider
fichier "production"
https://mon-partage.fr/f/OQlQcnaB/
fichier "compteur"
https://mon-partage.fr/f/X0BY8pQu/
bien cordialement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554 > 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 à 14:20
il n'y a pas de dérangement, c'est moi qui choisit de participer, ou pas.
"ne fonctionne pas": peux-tu préciser ce qui se passe ou ne se passe pas?
peux-tu créer une nouvelle discussion?
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 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024
12 févr. 2020 à 15:24
Re,
merci beaucoup de votre retour
ça ne calcule rien le tableau reste vide
ok je lancerai un nouveau sujet
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
9 janv. 2020 à 18:16
Re,
OK dorénavant je garderai le même ordre des machines et les calculs seront exactes
merci beaucoup
bien cordialement

0