guiguigui69008
XLDnaute Nouveau
Bonjour, je vous écris car j'ai un petit soucis, avec une macro.
Cette macro a été créée par mon prédécesseur, elle sert à créer une synthèse de stocks. dans un première feuille,a chaque entrée de stock, on créé une ligne. puis la synthèses analyses ces lignes, tri les pièces, supprime les doublons en additionnant les quantités, et effectue une mise en forme. jusque là tout va bien. le problème c'est que la macro me fait une mise en forme que je ne vois pas dans le code, et qui m'embête assez. voila le code. je vous explique le problème après:
Vers la fin du code, un paragraphe s'intitule "'définition de la couleur et du quadrillage des cellules remplies"
ce paragraphe me met 3 groupe de colonne en couleur, comme indiqué dans le code. Les colonnes 1 à 6 d'une couleur, 7 à 10 d'une autre couleur, et 11à 15 d'une dernière couleur. le problème est que la 16ème Colonne, est coloré en Orange, et que toutes les lignes situé en dessous de mon tableau (de la ligne 1059 à la ligne 64558) sont aussi colorées en orange sur les colonnes 1 à 16 ...
comprenez vous pourquoi? j'ai parcouru le programme, mais je n'ai pas compris pourquoi cela arrivait.
Merci d'avance.
Guillaume
Cette macro a été créée par mon prédécesseur, elle sert à créer une synthèse de stocks. dans un première feuille,a chaque entrée de stock, on créé une ligne. puis la synthèses analyses ces lignes, tri les pièces, supprime les doublons en additionnant les quantités, et effectue une mise en forme. jusque là tout va bien. le problème c'est que la macro me fait une mise en forme que je ne vois pas dans le code, et qui m'embête assez. voila le code. je vous explique le problème après:
Code:
Sub Synthese_stocks()
'Génération de la fiche des stocks partagés
Dim Rep As Integer
Rep = MsgBox("Voulez-vous effacer les données actuelles et créer la nouvelle fiche des stocks ?", vbYesNo + vbQuestion, "Attention !")
If Rep = vbYes Then
'réponse positive
Application.ScreenUpdating = False
'effacement des données précédentes
Worksheets("synthese des stocks").Range("A6:J65000").ClearContents
Worksheets("synthese des stocks").Range("A6:J65000").Select
'remise a zéro du format des cellules
Range("A6:P65000").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'remise a zéro de l'alignement des cellules
Range("A6:A65000").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("B6:B65000").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C6:C65000").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D65000").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("E6:E65000").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("F6:I65000").Select
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("J6:N65000").Select
With Selection
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("O6:O65000").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'Nombre de lignes à analyser
Message1 = "Vous devez indiquer ici le nombre de lignes de la feuille 'gestion des stocks MCE-5' que vous souhaitez analyser"
Titre1 = "Veuillez indiquer le nombre de lignes à analyser"
nivdef = "2000"
nivaff = InputBox(Message1, Titre1, nivdef)
'Numéro de ligne initial dans stock DE
j = 6
For i = 9 To nivaff
'référence MCE-5 et révision
If Sheets("gestion des stocks MCE-5").Cells(i, 5).Value <> "" And Sheets("gestion des stocks MCE-5").Cells(i, 6).Value <> "" And Sheets("gestion des stocks MCE-5").Cells(i, 10).Value <> "" Then
'référence mce-5
Sheets("synthese des stocks").Cells(j, 1).Value = Sheets("gestion des stocks MCE-5").Cells(i, 5).Value
'révision
Sheets("synthese des stocks").Cells(j, 2).Value = Sheets("gestion des stocks MCE-5").Cells(i, 6).Value
'Référence 2
Sheets("synthese des stocks").Cells(j, 3).Value = Sheets("gestion des stocks MCE-5").Cells(i, 7).Value
'désignation réduite
Sheets("synthese des stocks").Cells(j, 4).Value = Sheets("gestion des stocks MCE-5").Cells(i, 10).Value
'désignation complémentaire
Sheets("synthese des stocks").Cells(j, 5).Value = Sheets("gestion des stocks MCE-5").Cells(i, 11).Value
'type de pièce
Sheets("synthese des stocks").Cells(j, 6).Value = Sheets("gestion des stocks MCE-5").Cells(i, 12).Value
'quantité stock mce-5
Sheets("synthese des stocks").Cells(j, 7).Value = Sheets("gestion des stocks MCE-5").Cells(i, 42).Value
'quantité stock multi DE
Sheets("synthese des stocks").Cells(j, 8).Value = Sheets("gestion des stocks MCE-5").Cells(i, 43).Value
'quantité stock mono DE
Sheets("synthese des stocks").Cells(j, 9).Value = Sheets("gestion des stocks MCE-5").Cells(i, 44).Value
'quantité stock mono certam
Sheets("synthese des stocks").Cells(j, 10).Value = Sheets("gestion des stocks MCE-5").Cells(i, 45).Value
j = j + 1
End If
Next
'Premier tri
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Add _
Key:=Range("A5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Suppression des doublons
For c = 6 To nivaff
If Sheets("synthese des stocks").Cells(c, 1).Value <> "" Then
If Sheets("synthese des stocks").Cells(c, 1).Value = Sheets("synthese des stocks").Cells(c + 1, 1).Value And Sheets("synthese des stocks").Cells(c, 2).Value = Sheets("synthese des stocks").Cells(c + 1, 2).Value And Sheets("synthese des stocks").Cells(c, 4).Value = Sheets("synthese des stocks").Cells(c + 1, 4).Value And Sheets("synthese des stocks").Cells(c, 5).Value = Sheets("synthese des stocks").Cells(c + 1, 5).Value Then
Sheets("synthese des stocks").Cells(c, 7).Value = Sheets("synthese des stocks").Cells(c + 1, 7).Value + Sheets("synthese des stocks").Cells(c, 7).Value
Worksheets("synthese des stocks").Range(Cells(c + 1, 1), Cells(c + 1, 10)).Select
Selection.Delete Shift:=xlUp
c = c - 1
End If
End If
Next
'Second tri
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Add _
Key:=Range("C5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Suppression des doublons
For c = 6 To nivaff
If Sheets("synthese des stocks").Cells(c, 1).Value <> "" Then
If Sheets("synthese des stocks").Cells(c, 1).Value = Sheets("synthese des stocks").Cells(c + 1, 1).Value And Sheets("synthese des stocks").Cells(c, 2).Value = Sheets("synthese des stocks").Cells(c + 1, 2).Value And Sheets("synthese des stocks").Cells(c, 4).Value = Sheets("synthese des stocks").Cells(c + 1, 4).Value And Sheets("synthese des stocks").Cells(c, 5).Value = Sheets("synthese des stocks").Cells(c + 1, 5).Value Then
Sheets("synthese des stocks").Cells(c, 7).Value = Sheets("synthese des stocks").Cells(c + 1, 7).Value + Sheets("synthese des stocks").Cells(c, 7).Value
Worksheets("synthese des stocks").Range(Cells(c + 1, 1), Cells(c + 1, 10)).Select
Selection.Delete Shift:=xlUp
c = c - 1
End If
End If
Next
'Troisième tri
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Add _
Key:=Range("B5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Suppression des doublons
For c = 6 To nivaff
If Sheets("synthese des stocks").Cells(c, 1).Value <> "" Then
If Sheets("synthese des stocks").Cells(c, 1).Value = Sheets("synthese des stocks").Cells(c + 1, 1).Value And Sheets("synthese des stocks").Cells(c, 2).Value = Sheets("synthese des stocks").Cells(c + 1, 2).Value And Sheets("synthese des stocks").Cells(c, 4).Value = Sheets("synthese des stocks").Cells(c + 1, 4).Value And Sheets("synthese des stocks").Cells(c, 5).Value = Sheets("synthese des stocks").Cells(c + 1, 5).Value Then
Sheets("synthese des stocks").Cells(c, 7).Value = Sheets("synthese des stocks").Cells(c + 1, 7).Value + Sheets("synthese des stocks").Cells(c, 7).Value
Worksheets("synthese des stocks").Range(Cells(c + 1, 1), Cells(c + 1, 10)).Select
Selection.Delete Shift:=xlUp
c = c - 1
End If
End If
Next
'tri final par référence mce-5
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort.SortFields.Add _
Key:=Range("A5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("synthese des stocks").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Suppression des doublons
For c = 6 To nivaff
If Sheets("synthese des stocks").Cells(c, 1).Value <> "" Then
If Sheets("synthese des stocks").Cells(c, 1).Value = Sheets("synthese des stocks").Cells(c + 1, 1).Value And Sheets("synthese des stocks").Cells(c, 2).Value = Sheets("synthese des stocks").Cells(c + 1, 2).Value And Sheets("synthese des stocks").Cells(c, 3).Value = Sheets("synthese des stocks").Cells(c + 1, 3).Value And Sheets("synthese des stocks").Cells(c, 4).Value = Sheets("synthese des stocks").Cells(c + 1, 4).Value Then
Sheets("synthese des stocks").Cells(c, 7).Value = Sheets("synthese des stocks").Cells(c + 1, 7).Value + Sheets("synthese des stocks").Cells(c, 7).Value
Worksheets("synthese des stocks").Range(Cells(c + 1, 1), Cells(c + 1, 10)).Select
Selection.Delete Shift:=xlUp
c = c - 1
End If
End If
Next
'Calcul du nombre d'articles
lignevide = Worksheets("synthese des stocks").Range("A12000").End(xlUp).Row + 1
MsgBox "Calcul de la fiche terminé" & Chr(13) & Chr(10) & Chr(10) & "Nombre d'articles = " & lignevide - 6
t = lignevide - 1
'définition de la couleur et du quadrillage des cellules remplies
Worksheets("synthese des stocks").Range(Cells(6, 1), Cells(t, 6)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Worksheets("synthese des stocks").Range(Cells(6, 7), Cells(t, 10)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Worksheets("synthese des stocks").Range(Cells(6, 11), Cells(t, 15)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
'bordures
Worksheets("synthese des stocks").Range(Cells(6, 1), Cells(t, 16)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End If
'Si on a pas une PAP alors on barre la case n° de lot
For d = 6 To nivaff
If Sheets("synthese des stocks").Cells(d, 1).Value <> "" Then
If Sheets("synthese des stocks").Cells(d, 6).Value <> "PAP" Then
Worksheets("synthese des stocks").Cells(d, 12).Select
With Selection.Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End If
End If
Next
'inutile
Worksheets("synthese des stocks").Range("A1").Select
Application.ScreenUpdating = True
End Sub
Vers la fin du code, un paragraphe s'intitule "'définition de la couleur et du quadrillage des cellules remplies"
ce paragraphe me met 3 groupe de colonne en couleur, comme indiqué dans le code. Les colonnes 1 à 6 d'une couleur, 7 à 10 d'une autre couleur, et 11à 15 d'une dernière couleur. le problème est que la 16ème Colonne, est coloré en Orange, et que toutes les lignes situé en dessous de mon tableau (de la ligne 1059 à la ligne 64558) sont aussi colorées en orange sur les colonnes 1 à 16 ...
comprenez vous pourquoi? j'ai parcouru le programme, mais je n'ai pas compris pourquoi cela arrivait.
Merci d'avance.
Guillaume