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 :
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
J'espère que vous pourrez m'aider.

Je vous remercie par avance pour vos réponses.