Créer une version light d'un gros fichier

Bonjour à tou(te)s,

Je travaille avec un fichier excel dans 2010 qui a pris des proportions énormes car il contient une très large base de données ainsi que des TCD d'analyse.

Je dois l'envoyer à des destinataires et cela pose des soucis car il pèse 11 Mo quand même.

Je souhaiterais créer une macro qui crée un nouveau fichier avec une copie valeur et format de certaines pages afin d'en faire un fichier prêt à être envoyé par mail. Je ne veux envoyer en fait qu'une copie des TCD.

C'est un fichier boulot donc je ne peux pas vous l'envoyer. Au besoin je peux essayer de créer un exemple.

Merci par avance pour vos idées / suggestions.

Bonne journée,

Alci

J'ai trouvé un code qui va bien

Private Sub CommandButton1_Click()

Dim srcBook As Workbook

Dim tgtBook As Workbook

Dim iSheet As Integer

Dim srcSheet As Worksheet

Dim tgtSheet As Worksheet

Dim rngData As Range

Dim iRow As Integer

' Créer un nouveau classeur

Set srcBook = Application.ThisWorkbook

Set tgtBook = Application.Workbooks.Add

' Sur la liste des onglets du classeur en cours

For Each srcSheet In srcBook.Worksheets

' Créer un nouvel onglet si nécessaire

iSheet = srcBook.Worksheets(srcSheet.Name).Index

If iSheet > tgtBook.Worksheets.Count Then

Set tgtSheet = tgtBook.Worksheets.Add(, tgtBook.Worksheets(iSheet - 1))

Else

Set tgtSheet = tgtBook.Worksheets(iSheet)

End If

' Déprotéger l'onglet source et copier les cellules renseignées

srcSheet.Unprotect

Set rngData = srcSheet.Range("A1", srcSheet.Cells.SpecialCells(xlLastCell))

rngData.Copy

' Recopier dans le nouvel onglet la valeur des celules, leur format et le format des colonnes

With tgtSheet.Range("A1")

.PasteSpecial Paste:=xlPasteValues

.PasteSpecial Paste:=xlPasteFormats

.PasteSpecial Paste:=xlPasteColumnWidths

End With

' Recopier son nom

tgtSheet.Name = srcSheet.Name

tgtSheet.Visible = srcSheet.Visible

' Masquer les lignes cachées ou recopier leur hauteur

If tgtSheet.Visible Then

For iRow = 1 To rngData.Rows.Count

If rngData.Rows(iRow).Hidden Then

tgtSheet.Rows(iRow).Hidden = tgtSheet.Rows(iRow).Hidden

Else

tgtSheet.Rows(iRow).RowHeight = rngData.Rows(iRow).RowHeight

End If

Next iRow

End If

' Reprotéger la source

Application.CutCopyMode = False

srcSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _

, AllowFormattingCells:=False, AllowFormattingColumns:=True, _

AllowFormattingRows:=True

Next srcSheet

End Sub

Rechercher des sujets similaires à "creer version light gros fichier"