Question Romai

Everlast03

XLDnaute Occasionnel
Bonjour,

J'ai un fichier excel que j'utilise pour rentrer les arrêts de travail etc, cependant le remplissage par les macros est très (très) long.

Pouvez-vous me dire comment alléger mes macros afin que le traitement soit plus rapide (sans changer le travail réalisé par les macros biensur :))

Merci d'avance pour votre aide,

PS : Je suis débutant et je fais certainement des choses réccurentes qui pourraient surement être remplacées par des formules plus générales.

Cijoint.fr - Service gratuit de dépôt de fichiers.

Je recréer un sujet, mon sujet n'étant pas traité ici. C'est plutôt le sujet de Romai qu'il l'est.
 
Dernière édition:

tbft

XLDnaute Accro
Re : Accélerer traitement macro

@Masterdico
Personnellement, j'utilise les lignes magiques uniquement en dernier recours.
Car je préfère optimisé au maximum le code d'abord...
Si je n'y arrive pas, je demande les conseils (sur ce site)
Puis enfin j'utilise les lignes magiques...
J'obtiens ainsi du traitement d'information quasi temps réel...
 

ROGER2327

XLDnaute Barbatruc
Re : Accélerer traitement macro

Re...
@Masterdico
Personnellement, j'utilise les lignes magiques uniquement en dernier recours.
Car je préfère optimisé au maximum le code d'abord...
Si je n'y arrive pas, je demande les conseils (sur ce site)
Puis enfin j'utilise les lignes magiques...
J'obtiens ainsi du traitement d'information quasi temps réel...
Toujours d'accord ! Les lignes magiques ne devraient être utilisées qu'après l'optimisation rationnelle du code et non pour tenter de masquer les défauts de structure.
Bonne journée,

ROGER2327
#4481


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T10:53:00Z
 

Romai

XLDnaute Junior
Re : Accélerer traitement macro

Bonjour le forum,

Moi aussi j'ai un problème avec une macro.
Cette macro m'importe 61 fichiers CSV de 10000 lignes dans 60 feuille excel
et ce matin, la macro a durée 28 minutes. :(
Code:
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(metre true à la fin de la macro.
    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

Si quelqu'un peut me dire comment faire pour accélérer cette macro,
merci
 

tbft

XLDnaute Accro
Re : Accélerer traitement macro

Bonjour Romai

Perso j'aurais préférééééé (comme d'hab) un bout de code....

Le ralentissement est peut être du à des problemes d'ouverture de fichier....
Met en commentaire les Application.ScreenUpdating = False et autre afin de pouvoir VOIR à quelle niveau ça m....
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Accélerer traitement macro

Re...
Bonjour Roger, tbft,

C'est bien pour ça que c'est mon point n°2, le n°1 étant l'optimisation du code, comme je l'ai précisé dans mon post précédant.

Mais pour optimiser un code, il est préférable de l'avoir...;)
Toujours d'accord ! Décidément, l'expérience semble nous menez les uns et les autres vers les mêmes conclusions…
ROGER2327
#4482


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T12:45:26Z
 

Romai

XLDnaute Junior
Re : Accélerer traitement macro

Bonjour Romai,

Tu dois créer un nouvelle discussion pour ce qui concerne ton problème.
Joins y toutes les informations utiles ainsi qu'un fichier exemple et tu auras des réponses.

En aucun cas il ne faut poster dans le fil d'un autre (cf. la charte du forum). Merci.

Oui mais ce fil etant sur le temps d'un macro et ma question étant sur le temps d'une macro j'ai pensé bon d'ecrire ici.
 

Everlast03

XLDnaute Occasionnel
Re : Accélerer traitement macro

Merci pour vos réponses, cependant j'ai l'impression que c'est plus vraiment mon problème qui est traité dans la conversation (sans vouloir faire le rabageois).

Les modules 2 et 3 sont très long, c'est a dire l'actualisation du TF et TG ainsi que le calcul des heures cumulées (boutons présents sur la feuille "Menu").

Merci d'avance.