Bug macro Excel après passage en 2012
bonjour,
Depuis le passage en 2012 j'ai un problème avec le fichier excel en pièce jointe (fichier de suivi EG).
Ce fichier permet le suivi de livraison de différents produit.
L'utilisateur upload sont planning de production (EG- DC SLG Men) et la liste produits recu dans la semaine (reception S01) (je fournirai un fichier de chaque type).
Je pense qu'il y a un problème avec le passage en 2012, notament a cause du dimanche 1er janvier.
Il me dis erreur de type 1004, erreur definie par l'application ou pas l'objet dans cette sub du module 1 et surligne la ligne jaune :
Sub Matrix()
MyWB = ActiveWorkbook.Name
MyWS = ActiveWorkbook.ActiveSheet.Name
Sheets("Dates").Visible = True
Sheets("Prod2").Visible = True
Sheets("Matrix").Visible = True
Sheets("Matrixnoncumule").Visible = True
Dim a As Integer
Dim i As Integer
Dim j As Integer
Nblignes = 3 * Sheets("Calculation").Range("C23").Value + 1
Calculate
Sheets("Matrix").Select
Cells.Select
Selection.ClearContents
Selection.Borders.LineStyle = xlNone
p = 801
Range("A1").Value = "REF"
Range("B1").Value = "CODE-SITE"
Range("C1").Value = "SITE"
Range("D1").Value = "TYPE"
Range("E1").Select
Range("E1").Value = Sheets(MyWS).Range("S1").Value
a = Range("E1").Value
Sheets("Dates").Select
Range("I1").Select
Do While p <> a - 1
p = Selection.Value
ActiveCell.Offset(1, 0).Select Loop
Sheets("Matrix").Select
Range("F1").Select
i = 1
Sheets("Dates").Select
ActiveCell.Offset(1, 0).Select
Do While p <> a + 300
p = Selection.Value
Sheets("Matrix").Cells(1, i + 5).Value = p
ActiveCell.Offset(1, 0).Select
i = i + 1
Loop
Range("I1").Select
Sheets("Matrix").Select
Range("A1").Select
For i = 0 To Sheets("Calculation").Range("C23").Value - 1
Rows(3 * i + 2).Borders(xlEdgeTop).LineStyle = xlContinuous
Cells(3 * i + 2, 4).Value = "Cumul Jalons"
Cells(3 * i + 3, 4).Value = "Cumul Plan gelé"
Cells(3 * i + 4, 4).Value = "Cumul Suivi Livraison"
Rows(3 * i + 4).Borders(xlEdgeBottom).LineStyle = xlContinuous
Next i
f = -2
j = 2
k = 1
g = 3
Sheets("Matrix").Select
Range("E1").Select
Selection.End(xlToRight).Select
u = Selection.Column
Range("A1").Select
For i = 0 To Sheets("Calculation").Range("C23").Value - 1
g = 3
m = Sheets("Prod2").Cells(j, 1).Value
If m <> "SEMAINE" Then
Sheets("Matrix").Cells(3 * i + 2, 1).Value = Sheets("Prod2").Cells(j, 1)
Sheets("Matrix").Cells(3 * i + 3, 1).Value = Sheets("Prod2").Cells(j, 1)
Sheets("Matrix").Cells(3 * i + 4, 1).Value = Sheets("Prod2").Cells(j, 1)
Sheets("Matrix").Cells(3 * i + 2, 2).Value = Sheets("Prod2").Cells(j, 2)
Sheets("Matrix").Cells(3 * i + 3, 2).Value = Sheets("Prod2").Cells(j, 2)
Sheets("Matrix").Cells(3 * i + 4, 2).Value = Sheets("Prod2").Cells(j, 2)
Sheets("Matrix").Cells(3 * i + 2, 3).Value = Sheets("Prod2").Cells(j + 1, 2)
Sheets("Matrix").Cells(3 * i + 3, 3).Value = Sheets("Prod2").Cells(j + 1, 2)
Sheets("Matrix").Cells(3 * i + 4, 3).Value = Sheets("Prod2").Cells(j + 1, 2)
j = j + 4
f = f + 4
Else
k = j
Sheets("Matrix").Cells(3 * i + 2, 1).Value = Sheets("Prod2").Cells(j + 1, 1)
Sheets("Matrix").Cells(3 * i + 3, 1).Value = Sheets("Prod2").Cells(j + 1, 1)
Sheets("Matrix").Cells(3 * i + 4, 1).Value = Sheets("Prod2").Cells(j + 1, 1)
Sheets("Matrix").Cells(3 * i + 2, 2).Value = Sheets("Prod2").Cells(j + 1, 2)
Sheets("Matrix").Cells(3 * i + 3, 2).Value = Sheets("Prod2").Cells(j + 1, 2)
Sheets("Matrix").Cells(3 * i + 4, 2).Value = Sheets("Prod2").Cells(j + 1, 2)
Sheets("Matrix").Cells(3 * i + 2, 3).Value = Sheets("Prod2").Cells(j + 2, 2)
Sheets("Matrix").Cells(3 * i + 3, 3).Value = Sheets("Prod2").Cells(j + 2, 2)
Sheets("Matrix").Cells(3 * i + 4, 3).Value = Sheets("Prod2").Cells(j + 2, 2)
j = j + 5
f = f + 5
End If
For l = 5 To u
s = Sheets("Matrix").Cells(1, l).Value
If s = Sheets("Prod2").Cells(k, g).Value Then
Sheets("Matrix").Cells(3 * i + 2, l).Value = Sheets("Prod2").Cells(f + 1, g)
Sheets("Matrix").Cells(3 * i + 3, l).Value = Sheets("Prod2").Cells(f + 2, g)
Sheets("Matrix").Cells(3 * i + 4, l).Value = Sheets("Prod2").Cells(f + 3, g)
g = g + 1
End If
If Right(Str(s), 2) = 53 Then
Sheets("Matrix").Cells(3 * i + 2, l).Value = Sheets("Matrix").Cells(3 * i + 2, l - 1)
Sheets("Matrix").Cells(3 * i + 3, l).Value = Sheets("Matrix").Cells(3 * i + 3, l - 1)
Sheets("Matrix").Cells(3 * i + 4, l).Value = Sheets("Matrix").Cells(3 * i + 4, l - 1)
End If
Next l
Next i
Sheets("Matrix").Select
Range("A1").Select
Selection.End(xlToRight).Select
fincol = Selection.Column
Sheets("Matrixnoncumule").Select
Cells.Select
Selection.ClearContents
Selection.Borders.LineStyle = xlNone
Range("A1").Formula = "=" & Sheets("Calculation").Range("C24").Value
Range("A1").Select
Selection.Copy
Range(Range("A1"), Cells(1, u)).Select
ActiveSheet.Paste
Calculate
Application.CutCopyMode = False
Range("D1").Formula = "=" & Sheets("Calculation").Range("C26").Value
Range("A1:E1").Select
Selection.Copy
Range(Selection, Range(Cells(Nblignes, 1), Cells(Nblignes, 5))).Select
Selection.PasteSpecial xlPasteFormulas
Calculate
Application.CutCopyMode = False
Range("F2").Formula = "=" & Sheets("Calculation").Range("C25").Value
Range("F2").Select
Selection.Copy
Range(Range("F2"), Cells(Nblignes, fincol)).Select
Selection.PasteSpecial xlPasteFormulas
Range("A1").Select
Calculate
Range(Range("A1"), Cells(Nblignes, fincol)).Select
Selection.Copy
Selection.PasteSpecial xlPasteValues
Sheets("Matrix").Select
Cells.Select
Selection.Copy
Sheets("Matrixnoncumule").Select
Cells.Select
Selection.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Sheets("Prod").Visible = False
Sheets("Prod2").Visible = False
Sheets("Matrix").Visible = False
Sheets("Matrixnoncumule").Visible = False
Sheets("Dates").Visible = False
Sheets(MyWS).Select
End Sub
Je ne sais vraiment pas comment résoudre ce problème.
Merci pour votre aide
Rebonjour,
Impossible de joindre mes fichiers car ils sont trop gros.
Si vous avez des conseils pour me permettre de trouver la cause du bug, je suis preneur.
Merci
Bonjour
Un fichier aurait été souhaitable car pas évident de "deviner" pourquoi ça plante
Juste un avis
P toujours <> de a-1 donc tu es en bas de la page et tu essayes de descendre encore
Mais si ce n'est cela
xonatos a écrit :Impossible de joindre mes fichiers car ils sont trop gros.
Tu as CiJoint
Bonjour,
Merci beaucoup pour votre réponse si rapide.
Voila les liens vers les fichiers d'origines.
Fichier ou il y a le bug :
Fichier ou il va chercher le planning de production:
Fichier ou il va chercher les livraisons :
Vraiment merci beaucoup,
Enzo
Bonjour
Pas facile à suivre
La macro Matrix n'est pas appelée directement par un bouton
Alors je voudrais savoir quelle est la valeur de
MyWS = ActiveWorkbook.ActiveSheet.Namepour connaitre Sheets(MyWS).Range("S1").Value
A suivre
Je pense qu'il s'agit de l'onglet "date".
Pour vous expliquer le fonctionnement :
L'utilisateur se rend dans l'onglet recap et selectionne les projets qu'il veut suivre.
Puis il se rend dans l'onglet output, il choisi la semaine de reception qu'il veut suivre, puis il clique sur new week, puis il clique sur update en cochant les deux cases (en général) (c'est la que le bug se produit) puis il clique sur calcultae report, et enfoin sur export to tdb.
J'espère que ça pourra vous aider.
Merci beaucoup pour votre aide et votre temps.
Enzo
Bonjour
Cela ne va pas être pratique
Je ne peux rien exécuter (pas de périphérique P:, répertoire inexistant)
Le mieux c'est quand cela plante de regarder quelques valeurs
Quand la macro plante
Debuggage
dans la fenêtre Execution
Tapes : ? ActiveCell.address
Tu sauras où tu te situes dans la page
? MyWS
Tu connaitras exactement le nom de la page active
Parce que de mon côté je ne peux rien faire (sinon à rectifier tous les chemins)
A suivre