Bonjour à tous,
Je vous présente le problème.
Je travailles actuellement sur un fichier Excel qui comprend plusieurs Sheets.
Dans ce fichier, il y a plusieurs macro de filtrage en VBA.
L'objectif est de copier le contenu du fichier d'origine vers un nouveau fichier en conservant le format mais en ne gardant que les données non filtrées (c'est à dire en excluant toutes les données en Visible = 0).
Pour cela j'ai fait une macro qui fonctionne seulement quand des Sheets sont cachées mais quand des lignes ou colonnes sur certaines Sheets sont cachées, j'ai un soucis de mémoire qui apparait : "la mémoire est insuffisante pour effectuer cette action" (je suis sous Excel 32 bits).
Le fichier n'est pas lourd au point d'atteindre les limites de Excel (du moins je ne pense pas). Du coup je pense que c'est un soucis dans mon code.
Voici mon code :
J'espère que vous pourrez m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub fonction_de_copie() Dim name As String Dim Export As String Dim newWorkbook As Workbook Dim tab_Count As Integer Dim itab As Integer name = "Nom_du_fichier.extension" Export = ActiveWorkbook.Name tab_Count = ActiveWorkbook.Sheets.Count Set newWorkbook = Workbook.Add For itab = 1 To tab_Count If Workbooks(Export).Worksheets(itab).Visible = -1 Then Workbooks(Export).Worksheets(itab).Cells.SpecialCells(xlCellTypeVisible).copy newWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count()) newWorkbook.ActiveSheet.Name = Workbooks(Export).Worksheets(itab).Name selection.PasteSpecial xlPasteAll ' l'idéal serait de pouvoir récupérer les liens hypertextes (donc de récupérer les noms donnés aux cellules si c'est possible) Else End If Next itab Application.CutCopyMode = False newWorkbook.SaveAs name, 52 End Sub
Je vous remercie par avance pour vos réponses.
Partager