Probleme durée de traitement d'une macro

  • Initiateur de la discussion Initiateur de la discussion Romai
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Romai

XLDnaute Junior
Bonjour le forum,

J'ai une macro qui me permet d'importé des fichiers CSV (60 fichiers de 10000lignes). Cette macro fonctionne correctement.
Le problème est que ma macro a mis 28 minute a se faire ce matin.

VB:
 Dim Message, Style, Titre
Dim DossierCsv, K As String
i = 0

On Error GoTo fin
Sheets("HOME").Select
Columns("K:K").Select
Selection.ClearContents

Message = "Please specify the folder containing the CSV files" & vbCrLf & "Press OK to select the folder"
Style = vbOK
Titre = "Importation CSV"
Response = MsgBox(Message, Style, Titre)

If Response = vbOK Then    ' L'utilisateur a choisi OK.

    Application.FileDialog(msoFileDialogFolderPicker).Show
    DossierCsv = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)

'Arrêt du rafraichissement de l'écran
    Application.ScreenUpdating = False

'Incrementation du numero de fichier.
    For i = 0 To 60
        
        varnomfichier = "SA0000" & i
        If i >= 10 Then
        varnomfichier = "SA000" & i
        End If
        If i >= 100 Then
        varnomfichier = "SA00" & i
        End If
        
    Sheets(varnomfichier).Select
   
    'Destignation à la ligne trouvé précèdement.
        K = "$A$3"
        
    'Importation du fichier préselectionné à la place prédefini.
        With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & DossierCsv & "\" & varnomfichier & ".csv", _
            Destination:=Range(K))
            .Name = varnomfichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(5, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        
    'Apres importation, on supprime la premier ligne du fichier contenant le nom des colonnes.
        Rows(3).Select
        Selection.Delete Shift:=xlUp
    
        
    'extraire sans doublon
        'Columns("R:R").Select   'vider la colonne pour extraire
        'Selection.ClearContents
        
        'J = 3
        ' valcell = ActiveSheet.Range("R3").Value  'valcell est la valeur de la celule precedente
    
        'For Nbligne = 3 To 10004 
        '    valligne = Cells(Nbligne, 1)
            
        '    If valligne <> valcell Then
        '    valcell = valligne
        '    numcell = "R" & J
        '    Range(numcell).Formula = valcell
        '    J = J + 1
        '    End If
            
        '    If valligne = "" Then Exit For
        'Next Nbligne
    

    'copier la liste des dates sur la feuille acceuil
        'Range("R3:" & numcell).Select
        'Selection.Copy
        'Sheets("HOME").Select
        'NBdate = Cells(1, 13)
        'NBdate = NBdate + 1
        'Range("K" & NBdate).Select
        'ActiveSheet.Paste
    Next i
End If

fin:
Sheets("HOME").Select

MsgBox ("Number of imported files :" & i)

End Sub

Comment faire pour gagner du temps?
si quelqu'un peu m'aider merci beaucoups
 
Re : Probleme durée de traitement d'une macro

Re

Bon maintenant, il ne te reste plus qu'à modifier ta macro pour les ouvrir classiquement.

Utilise Henry pour cela, ce sera plus simple pour avoir le code exact.

Un conseil, pour ne pas perdre trop de temps, pour ton fichier test, renomme le en .txt.
 
Re : Probleme durée de traitement d'une macro

J'ai trouvé les codes suivant dans les différents liens que l'on ma donnée sur le forum.
Code:
Application.Calculation = xlCalculationManual     'au début
Application.WindowState = xlMinimized             'au début
Application.EnableEvents = False                  'au début

Application.Calculation = xlCalculationAutomatic  'à la fin
Application.EnableEvents = True                   'à la fin
Application.WindowState = xlMaximized             'à la fin


Mais ça m'aide pas beaucoup...
...
 
Re : Probleme durée de traitement d'une macro

Re

Tu peux essayer de remplacer le code

Code:
[COLOR=#0000fc]With[/COLOR] ActiveSheet.QueryTables.Add(Connection:=[COLOR=#800000]"TEXT;"[/COLOR] & DossierCsv & [COLOR=#800000]"\"[/COLOR] & varnomfichier & [COLOR=#800000]".csv"[/COLOR], _
            Destination:=Range(K))
           ....
        [COLOR=#0000fc]End[/COLOR] [COLOR=#0000fc]With[/COLOR]
par

Code:
Sub importe_CSV_test()
    Workbooks.OpenText Filename:= _
        "C:\CSV\SA00000.csv", Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma:=True, _
        Space:=False, Other:=True, OtherChar:="""", FieldInfo:=Array(Array(1, 1) _
        , Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)), _
        TrailingMinusNumbers:=True
    
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
233
Réponses
4
Affichages
177
Réponses
8
Affichages
466
Réponses
7
Affichages
163
Réponses
3
Affichages
672
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Retour