Bonjour,
La macro qui recopie les cellules provenant de plusieurs feuilles vers une feuille de Bilan est devenue tres lente, elle met une dizaine de secondes pour s'executer alors qu'avant c'etait quasi instantané.
Le classeur a simplement été modifié pour ajouter une feuille de menu et des macros pour afficher/masquer les onglets des feuilles.
Est il possible de voir le deroulement de la macro pour savoir quelle est la ligne qui ralentit la macro ?
La macro qui recopie les cellules provenant de plusieurs feuilles vers une feuille de Bilan est devenue tres lente, elle met une dizaine de secondes pour s'executer alors qu'avant c'etait quasi instantané.
Le classeur a simplement été modifié pour ajouter une feuille de menu et des macros pour afficher/masquer les onglets des feuilles.
Code:
Sub Recopie()
Application.ScreenUpdating = False
Sheets("Bilan").Select
'String destiné à lister les colonnes dont les formules doivent être repétées
form = "ABEGHJKMNQT"
'Première ligne où recopier dans la feuille Bilan
ligcop = 2
'Première colonne de récupération des données dans les feuilles "Mois"
debdate = 3
'Pour chaque feuille
For i = 1 To Sheets.Count
'à l'exclusion de la feuille Bilan
If Sheets(i).Name <> "Bilan" And Left(Sheets(i).Name, 5) <> "Graph" Then
'dernière colonne où récuperer les données
findate = Sheets(i).Range("IV1").End(xlToLeft).Column
'pour chaque colonne
For n = debdate To findate
'transfert dans la feuille Bilan
Sheets("Bilan").Range("C" & ligcop) = Sheets(i).Cells(1, n)
Sheets("Bilan").Range("D" & ligcop) = Sheets(i).Cells(2, n)
Sheets("Bilan").Range("F" & ligcop) = Sheets(i).Cells(41, n)
Sheets("Bilan").Range("I" & ligcop) = Sheets(i).Cells(7, n)
Sheets("Bilan").Range("L" & ligcop) = Sheets(i).Cells(8, n)
Sheets("Bilan").Range("O" & ligcop) = Sheets(i).Cells(13, n)
Sheets("Bilan").Range("P" & ligcop) = Sheets(i).Cells(16, n)
Sheets("Bilan").Range("R" & ligcop) = Sheets(i).Cells(42, n)
Sheets("Bilan").Range("S" & ligcop) = Sheets(i).Cells(27, n)
Sheets("Bilan").Range("U" & ligcop) = Sheets(i).Cells(29, n)
Sheets("Bilan").Range("V" & ligcop) = Sheets(i).Cells(32, n)
Sheets("Bilan").Range("W" & ligcop) = Sheets(i).Cells(33, n)
Sheets("Bilan").Range("X" & ligcop) = Sheets(i).Cells(34, n)
Sheets("Bilan").Range("Y" & ligcop) = Sheets(i).Cells(35, n)
'incrément de la ligne où copier
ligcop = ligcop + 1
'colonne suivante
Next n
End If
'feuille suivante
Next i
'dernière ligne de la feuille Bilan mise à jour
derling = Sheets("Bilan").Range("C65536").End(xlUp).Row
'utilisation du string form pour determiner la lettre de la colonne pour chaque lettre
For n = 1 To Len(form)
'dernière ligne remplie de la colonne
derlincol = Sheets("Bilan").Range(Mid(form, n, 1) & "65536").End(xlUp).Row
'sécurité dans le cas où la feuille Bilan n'aurait pas été mise à jour on sort de la boucle
If derlincol <> derling Then
'copie de la formule
Sheets("Bilan").Range(Mid(form, n, 1) & "65536").End(xlUp).Copy
'selection de la plage
Sheets("Bilan").Range(Mid(form, n, 1) & derlincol + 1 & ":" & Mid(form, n, 1) & derling).Select
'collage
ActiveSheet.Paste
End If
Next n
'Vide la mémoire du copier/coller
Application.CutCopyMode = True
Application.ScreenUpdating = True
End Sub
Est il possible de voir le deroulement de la macro pour savoir quelle est la ligne qui ralentit la macro ?