[EXCEL] Reduire/Minimiser la taille d'un fich

Kinslown Messages postés 25 Statut Membre -  
HUGO BASS Messages postés 20 Statut Membre -
Bonjour,

J'ai un probleme tout bête mais assez penible: mon fichier Excel fait plus de 100 Mo!!! Et je dois encore rajouter des lignes de données... Ca me pose probleme pour les sauvegardes, transferts de données (ex: Copier-Coller) et mouvement du fichier en questions.

Je me demandais si il n'y avait pas des trucs ou petites magouilles pour économiser des octets ou diminuer la taille du fichier.
Dans la meme veine: es-ce que les macros prennent beaucoup de place?

Merci d'avance.

--
K.
Configuration: Windows XP
Firefox 1.5.0.1

11 réponses

  1. Farfadet88 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   1 402
     
    Enlève les images s'il y en a. normalement les macros ne prennent pas énormément de place
    0
  2. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    dans ton fichier tu as plein de lignes dans les feuilles et aussi des macros ? quel genre de macro est ce ?
    0
  3. Kinslown Messages postés 25 Statut Membre 2
     
    Mon fichier ne possède pas d'image. Mais effectivement mon fichier comporte beaucoup de lignes (plusieurs feuilles avec facile plus de 30000 lignes et une dizaine de colonnes)

    Les macros font surtout de la recherche et de la copie.
    0
  4. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    tu peu essayer de copier/coller l'ensemble de tes lignes et macro dans un nouveau fichiers et enregistrer celui ci
    normalement ca devrai réduire le poid du fichier car il n'y aura pas l'historique du fichier d'origine (sppécialité de la suite office, les copier/coller et autres traitement reste dans le fichier)
    mais avec 30 000 lignes (soit 300 000 cellules) c'est normal que le fichier pèse lourd
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Kinslown Messages postés 25 Statut Membre 2
     
    Je vais essayer mais je savais que j'arriverais pas à le faire maigrir de jusqu'à 2 Mo :D
    Mais chaque Mo gagné me facilite la vie.
    0
  7. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    sur 30 000 lignes, c'est pas possible de le ramener a 2 Mo ^^
    0
  8. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut tout le monde,
    100Mo!! Boudiou...
    Vois ce lien : ici

    FichierObèse-Commentaire-procédure-Laurent Longre
    Il apporte un élément de réponse à tester. C'est sous forme de macro supprimant tout ce qui est inutile. Laurent Longre l'explique mieux que moi. Voici sa macro qui peux toujours servir :

    Sub Nettoie()
    Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
    On Error Resume Next
    Calc = Application.Calculation
    With Application
    .Calculation = xlCalculationManual
    .StatusBar = "Nettoyage en cours..."
    .EnableCancelKey = xlErrorHandler
    .ScreenUpdating = False
    End With
    For Each Sht In Worksheets
    If Sht.UsedRange.Address Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
    If Not DCell Is Nothing Then
    Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
    Set DCell = Nothing
    Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(,2)
    If Not DCell Is Nothing Then _
    Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
    End If
    Rien = Sht.UsedRange.Address
    End If
    Next Sht
    Application.StatusBar = False
    Application.Calculation = Calc
    End Sub


    Sinon vois du côté de tes macros, possibilités d'allègement.
    Ou encore scinder ton classeur en 2 : le classeur excel et le classeur macro...
    0
  9. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    par contre il manque un application.screenupdating.true a la fin

    sinon ca a l'air utile comme macro
    0
  10. Kinslown Messages postés 25 Statut Membre 2
     
    je vais regarder et voir ce que ca donne
    merci pour l'info :]
    0
  11. Kinslown Messages postés 25 Statut Membre 2
     
    j'ai fait un joli C/C de la macro et comme je comprend la synthaxe qu'a moitié, je n'arrive pas a déboguer la ligne qui commence par trois asterisque (notez que j'ai pas mis les astériques dans le code ^^).

    Belgarion pourait tu m'expliquer ce que tu voulais dire par : "il manque un application.screenupdating.true a la fin "

    EDIT: oui le fichier a été grassement nourris à la donné super calorique, mais comme il sert de base de donnée comparative pour la codification de réference de composante éléctronique. (je suis pas sûr d'avoir été clair :/ )

    Merci d'avance

    Sub Nettoie()
    Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
    On Error Resume Next
    Calc = Application.Calculation
    With Application
    .Calculation = xlCalculationManual
    .StatusBar = "Nettoyage en cours..."
    .EnableCancelKey = xlErrorHandler
    .ScreenUpdating = False
    End With
    For Each Sht In Worksheets
    ***If Sht.UsedRange.Address Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
    If Not DCell Is Nothing Then
    Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
    Set DCell = Nothing
    Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
    If Not DCell Is Nothing Then _
    Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
    End If
    Rien = Sht.UsedRange.Address
    End If
    Next Sht
    Application.StatusBar = False
    Application.Calculation = Calc
    End Sub
    0
  12. HUGO BASS Messages postés 20 Statut Membre
     
    Bonjour à toutes et tous,

    Je relance cet ancien post, car après avoir utilisé le code ci dessous copié et ci dessus cité, certes il fonctionne très bien mais j'ai remarqué le problème suivant.
    La macro efface toutes les colonnes à partir de IV (L1C256) certainement ce qui était la limite du nombre de colonne maxi avant excel 2007.
    malgré mes essais je n'arrive pas à adapter ce code pour tenir compte que mon fichier utilise des colonnes au delà de IV

    Auriez vous une solution ?

    Merci
    Cordialement
    Hugues

    Sub Nettoie()
    Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
    On Error Resume Next
    Calc = Application.Calculation
    With Application
    .Calculation = xlCalculationManual
    .StatusBar = "Nettoyage en cours..."
    .EnableCancelKey = xlErrorHandler
    .ScreenUpdating = False
    End With
    For Each Sht In Worksheets
        • If Sht.UsedRange.Address Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)

    If Not DCell Is Nothing Then
    Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
    Set DCell = Nothing
    Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
    If Not DCell Is Nothing Then _
    Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
    End If
    Rien = Sht.UsedRange.Address
    End If
    Next Sht
    Application.StatusBar = False
    Application.Calculation = Calc
    End Sub
    0