Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Ouvrir un fichier Excel rapidement en VBA

iliess

XLDnaute Occasionnel
Je suis actuellement chargé de la gestion comptable sur un logiciel de comptabilité qui me donne la capacité de générer des états financiers sous forme de fichiers Excel. Cependant, un inconvénient notable est la lenteur d'ouverture de ces rapports.
Est-il possible de réduire le temps d’ouverture du classeur en VBA en important, par exemple, l’intégralité de la feuille 1 sans ouvrir le fichier source pour un traitement personnalisé ?
Cordialement.



Est-il possible de joindre mon fichier de démonstration qui fait 12 Mo en taille ?
 
Dernière édition:
Solution
Voici un code ("Power Query") avec un temps de 6,48 secondes.
VB:
sub Macro1()
Dim t
t = Timer
    ActiveWorkbook.Queries.Add Name:="JournalAuxExcel", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Excel.Workbook(File.Contents(""C:\Users\ilies\Desktop\JournalAux.xlsx""), null, true)," & Chr(13) & "" & Chr(10) & "    JournalAuxExcel_Sheet = Source{[Item=""JournalAuxExcel"",Kind=""Sheet""]}[Data]," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(JournalAuxExcel_Sheet,{{""Column1"", type any}, {""Column2"", type any}, {""Column3"", type text}, {""Column4"", type" & _
        " text}, {""Column5"", type text}, {""Column6"", type text}, {""Column7"", type text}, {""Column8"", type text}, {""Column9"", type any}, {""Column10""...

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Est-ce que je peux partager avec vous mon fichier réel pour faire un test ?
Est-ce que tu parles bien d'un des états financiers générés par le logiciel de comptabilité ?

Ce logiciel de comptabilité te permet-il de choisir le format d'exportation ?



Est-il possible de joindre mon fichier de démonstration qui fait 12 Mo en taille ?
Si ledit fichier est anonymisé, oui tu peux, mais pas directement joint à ton message.
Il te faut passer par un hébergeur et donner le lien vers le fichier.
 

iliess

XLDnaute Occasionnel
bonsoir
merci a tous ce qui participe a ce sujet
Effectivement, j'ai testé la macro de M. Job75 et le fichier s'ouvre lentement et en plus, il n'importe pas toutes les données de la feuille.
Oui, ce sont des états financiers générés par le logiciel de comptabilité uniquement au format Excel.
Comment je peux passer par un hébergeur et donner le lien vers le fichier.

Je suis enthousiaste à l’idée de vous présenter le fichier et de vous donner la possibilité de prendre le contrôle vous-même.
 

job75

XLDnaute Barbatruc
A partir du lien du post #19 j'ai téléchargé le fichier puis exécuté cette macro :
VB:
Sub Copier()
Dim fichier As Variant, t, chemin$, feuille$, form$, nlig&, ncol%
fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx")
If fichier = False Then Exit Sub
t = Timer
chemin = Left(fichier, InStrRev(fichier, "\"))
fichier = Mid(fichier, InStrRev(fichier, "\") + 1)
feuille = "JournalAuxExcel" 'nom de la feuille à copier
form = "'" & chemin & "[" & fichier & "]" & feuille & "'!"
nlig = ExecuteExcel4Macro("MATCH(""zzz""," & form & "C3)") 'textes en colonne C
ncol = ExecuteExcel4Macro("MATCH(""zzz""," & form & "R5)") 'ligne des en-têtes
Application.ScreenUpdating = False
Cells.Delete 'RAZ
With [A1].Resize(nlig, ncol)
    .FormulaArray = "=" & form & "R1C1:R" & nlig & "C" & ncol 'formule matricielle
    .Value = .Value 'supprime la formule
    .Replace 0, "", xlWhole 'efface les valeurs zéro
End With
MsgBox "Durée " & Format(Timer - t, "0.00 \sec")
End Sub
Elle s'exécute en 34 secondes chez moi, 207 791 lignes sont copiées.
 

Pièces jointes

  • Pilote.xlsm
    17.5 KB · Affichages: 9

iliess

XLDnaute Occasionnel
Merci beaucoup
Chez moi. S'exécute en 142 secondes et c'est un temps très court par rapport à l'ouverture ordinaire. Et ce temps demain au bureau, je pense qu'il sera moins, car mon PC de bureau est très puissant.
 

TooFatBoy

XLDnaute Barbatruc
Il n'y a qu'une seule feuille dans le classeur et elle fait... 289 Mo !

Il doit y avoir un problème dans la mise en forme des données (trop de fusions, etc.) car si on copie les cellules du classeur et qu'on colle dans un nouveau classeur les valeurs de ces cellules (on perd les fusions de cellules), le nouveau fichier est un peu moins gros (8,6 Mo au lieu de 13,3 Mo) mais surtout il s'ouvre immédiatement (la feuille passe de 289 Mo à 62 Mo).
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Chez moi le fichier .xlsx téléchargé fait 12,6 Mo, il faut environ 3 minutes pour l'ouvrir.
Voui, c'est qu'est-ce que j'dis : le fichier fait 13,3 Mo mais la feuille en elle-même, une fois décompressée, fait 289 Mo.
Je parle ici du fichier d'origine.


Pas vu de cellules fusionnées.
Il y en a pourtant des centaines, à commencer par A1:B1 (si je me rappelle bien).
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…