Optimisation performance d'une macro simple ?

Bonjour,

J'ai un tableau dont le nombre de lignes est variable et je souhaite mettre une date sur l'ensemble des lignes

J'ai réalisé le code ci-dessous mais je le trouve lent (même pour mettre à jour 5 lignes alors que je peux en avoir plus de 3500). J'ai même interrompu avec une exécution sur 1000 lignes.
Y'a-t-il une méthode plus performante ?

Merci pour votre aide

Sub Validation()
    Dim date_du_jour As Date
    Dim i, NbLignes
    date_du_jour = Date 'Récupère la date du jour
    'NbLignes = Range("Tableau1").Rows.Count 'Compte le nb de ligne du tableau
    NbLignes = 10

    If MsgBox("Vous allez tout valider." & Chr(10) & "Confirmez-vous ?", 33, "Demande de confirmation") = vbOK Then
        For i = 2 To NbLignes
            Range("E" & i).Value = date_du_jour
        Next i
        MsgBox "Validation global OK"
    Else
        MsgBox "Validation globale annulée"
    End If
End Sub

Hello,

Essaie ça :

Sub Validation()
    Dim date_du_jour As Date
    Dim i, NbLignes

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

    date_du_jour = Date 'Récupère la date du jour
    'NbLignes = Range("Tableau1").Rows.Count 'Compte le nb de ligne du tableau
    NbLignes = 10

    If MsgBox("Vous allez tout valider." & Chr(10) & "Confirmez-vous ?", 33, "Demande de confirmation") = vbOK Then
        For i = 2 To NbLignes
            Range("E" & i).Value = date_du_jour
        Next i
        MsgBox "Validation global OK"
    Else
        MsgBox "Validation globale annulée"
    End If

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

Merci Baroute78 pour ton aide,

C'est un peu mieux. J'ai testé avec 100 lignes, 200 lignes et 300 lignes et je suis à 5s par paquet de 100 lignes, donc 1 200 lignes par minute (sachant que je peux avoir jusqu'à 3 500/3 600 lignes).

La méthode que j'emploie n'est peut-être pas la bonne pour mettre à jour un si grand nombre de lignes ?

Bonjour,

Comme tu travailles avec un Tableau Structuré, tu peux utiliser les codes qui vont bien

Et outre les 2 instructions que t'a données Baroute (Application....), tu remplis ta colonne (dont l'en-tête est "Date") comme ceci :

Range("Tableau1[Date]").Value = Date

Plus tes msgbox, si tu veux les conserver...

Bonne apm

cousinhub (de la famille des Montmirail? )... tout simplement splendide !!!!!

Merci beaucoup

Rechercher des sujets similaires à "optimisation performance macro simple"