julien974
XLDnaute Occasionnel
Bonjour le forum,
J'ai conçu une macro pour effectuer mon classement ABC de produits ds mon stock.
Je débute en VBA mais j'ai quand même réussi à faire quelque chose qui tourne. Mais ma macro ne fonctionne plus alors que je n'ai rien touché, c'est à n'y rien comprendre. Je vous mets le code ci dessous.
De plus pensez vous qu'il serait possible d'améliorer ce code pour une plus grande exécution de la macro?
Merci de votre aide,
Juli3n974
J'ai conçu une macro pour effectuer mon classement ABC de produits ds mon stock.
Je débute en VBA mais j'ai quand même réussi à faire quelque chose qui tourne. Mais ma macro ne fonctionne plus alors que je n'ai rien touché, c'est à n'y rien comprendre. Je vous mets le code ci dessous.
De plus pensez vous qu'il serait possible d'améliorer ce code pour une plus grande exécution de la macro?
HTML:
Sub rotations()
'ROTATIONS
'J'aimerai ici supprimer tout sauf la première ligne
Sheets("Maj rot.").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
'Copier coller des colonnes de données dans le feuille d'analyse
Sheets("Base EP").Select 'problème à ce niveau "Execution interrompue"
Columns("A:G").Select
Selection.Copy
Sheets("Maj rot.").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Tri décroissant
ActiveSheet.UsedRange.Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("G2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Classement ABC (Loi de PARETO 80/20)
Range("H2").Select
Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-5],MATRICECONTENANTS,4,0)"
Range("H2").Offset(0, 1).FormulaR1C1 = "=RC[-4]/RC[-1]"
Range("H2:I" & Range("A65536").End(xlUp).Row).FillDown
ActiveSheet.UsedRange.Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("I2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("J2").FormulaR1C1 = "=RC[-1]"
Range("J3").FormulaR1C1 = "=RC[-1]+R[-1]C"
Range("J3:J" & Range("A65536").End(xlUp).Row).FillDown
Dim Ligne As Long
Ligne = ActiveSheet.Range("A65536").End(xlUp).Row + 1
ActiveSheet.Range("I" & Ligne).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
ActiveSheet.Range("I" & Ligne).Name = "hihi"
Range("K2").FormulaR1C1 = "=RC[-1]/hihi"
Range("K2:K" & Range("A65536").End(xlUp).Row).FillDown
Dim Ligne2 As Long
Ligne2 = ActiveSheet.Range("A65536").End(xlUp).Row + 1
ActiveSheet.Range("E" & Ligne2).FormulaR1C1 = "=COUNTA(R2C:R[-1]C)-1"
ActiveSheet.Range("E" & Ligne2).Name = "haha"
Range("L2").FormulaR1C1 = "=1/haha"
Range("L2:L" & Range("A65536").End(xlUp).Row).FillDown
Range("M2").FormulaR1C1 = "=RC[-1]"
Range("M3").FormulaR1C1 = "=RC[-1]+R[-1]C"
Range("M3:M" & Range("F65536").End(xlUp).Row).FillDown
Range("N2").FormulaR1C1 = "=IF(RC[-3]="""","""",IF(RC[-3]<=0.8,""A"",IF(RC[-3]>=0.95,""C"",""B"")))"
Range("N2:N" & Range("A65536").End(xlUp).Row).FillDown
End Sub
Merci de votre aide,
Juli3n974