Bonjour à tous,
J'ai un problème avec une macro et je n'arrive pas à trouver une solution...
je vous explique :
J'ai un bouton "MiseAJour" qui effectue l'enchainement de macro suivant:
Tout fonctionne très bien jusqu'à la macro MiseEnForme. Même si celle ci fonctionne, à chaque fois que je l'active, celle ci fait grossir mon fichier (+80K environ à chaque utilisation), le rendant de plus en plus lent et au final inutilisable.
Sur les conseil d'une personne j'ai rajouté le code suivant, pour voir ou s'exécute la macro:
Et celle ci s'exécute bien dans les dimension voulue...
Je ne sais pas d'où viens le problème et j'ai cherché sans trop trouver de solution convenable. j'ai donc besoin de votre aide
Je suis désolé si je ne me fait mal comprendre ou si mon code est pas lisible ou mal opti, je suis en apprentissage . Si jamais je reformulerai en cas de besoin
Un grand merci d'avance à ceux qui voudrons bien m'aider, je mets en pièce jointe un fichier test avec le problème en question.
J'ai un problème avec une macro et je n'arrive pas à trouver une solution...
je vous explique :
J'ai un bouton "MiseAJour" qui effectue l'enchainement de macro suivant:
Code:
Sub RemplissageTableau()
Application.ScreenUpdating = False
Dim c As Range
Dim EffNec
EffNec = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"
For I = 11 To Sheets.Count
With Sheets(I)
.Columns("T:U").ClearContents
For Each c In .Range("T1:U" & .Range("S" & Rows.Count).End(xlUp).Row)
c.Formula = EffNec
Next c
End With
Next I
Total
End Sub
_____________________________________________________
Sub Total()
Dim LastLig As Long, Deb As Long, Fin As Long
Dim T As Double, U As Double
Dim Prem As String
Dim c As Range
For I = 11 To Sheets.Count
With Sheets(I)
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
Set c = .Range("B2:B" & LastLig).Find("Total*", LookIn:=xlValues, lookat:=xlPart)
Deb = 2
If Not c Is Nothing Then
Prem = c.Address
Do
Fin = c.Row - 1
.Range("T" & Fin + 1).Formula = "=SUMIF(E" & Deb & ":E" & Fin & ",""<>"",T" & Deb & ":T" & Fin & ")"
.Range("U" & Fin + 1).Formula = "=SUM(U" & Deb & ":U" & Fin & ")"
Deb = Fin + 2
T = T + .Range("T" & Fin + 1)
U = U + .Range("U" & Fin + 1)
Set c = .Range("B2:B" & LastLig).FindNext(c)
Loop While Not c Is Nothing And c.Address <> Prem
End If
.Range("T" & LastLig).Resize(, 2) = Array(T, U)
T = 0
U = 0
End With
Next I
MiseEnForme
End Sub
_______________________________________________________________
Sub MiseEnForme()
For I = 11 To Sheets.Count
With Sheets(I)
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("E1:E" & LastLig).Copy
.Range("D1:V" & LastLig).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'.Columns("A:V").AutoFit
.Range("A1:Q" & LastLig).HorizontalAlignment = xlLeft
.Range("T1:U" & LastLig).HorizontalAlignment = xlRight
.Range("R1:S" & LastLig).EntireColumn.Hidden = True
.Range("R1:S" & LastLig).EntireColumn.Hidden = True
.Range("V1:V" & LastLig).ColumnWidth = 40
.Range("L1:L" & LastLig).NumberFormat = "m/d/yyyy"
.Range("H1:H" & LastLig).NumberFormat = "m/d/yyyy"
.Range("O1:O" & LastLig).NumberFormat = "m/d/yyyy"
.Range("Q1:Q" & LastLig).NumberFormat = "m/d/yyyy"
.Range("D1:D" & LastLig).EntireColumn.Hidden = True
'Mise en forme Ligne
.Rows("1:1").HorizontalAlignment = xlCenter
.Rows("1:1").VerticalAlignment = xlCenter
End With
Next I
End Sub
Tout fonctionne très bien jusqu'à la macro MiseEnForme. Même si celle ci fonctionne, à chaque fois que je l'active, celle ci fait grossir mon fichier (+80K environ à chaque utilisation), le rendant de plus en plus lent et au final inutilisable.
Sur les conseil d'une personne j'ai rajouté le code suivant, pour voir ou s'exécute la macro:
Code:
MsgBox .UsedRange.Address
Et celle ci s'exécute bien dans les dimension voulue...
Je ne sais pas d'où viens le problème et j'ai cherché sans trop trouver de solution convenable. j'ai donc besoin de votre aide
Je suis désolé si je ne me fait mal comprendre ou si mon code est pas lisible ou mal opti, je suis en apprentissage . Si jamais je reformulerai en cas de besoin
Un grand merci d'avance à ceux qui voudrons bien m'aider, je mets en pièce jointe un fichier test avec le problème en question.