Programmation en VBA

Bonsoir,

Je dois utiliser la fonction "ScreenUpdating". Le prof nous demande de prendre l'exemple de l'aide, le recopier et indiquer les différentes phases de l'application.

J'ai bien pris l'application dans l'aide mais lorsque je lance la macro, j'ai un message d'erreur.

Quelqu'un pourrait-il m'aider à créer la macro dans une feuille Excel et m'indiquer à quoi correspond chaque étape de l'application?

Je débute en programmation VBA. Soyez indulgent.

Merci d'avance

bonsoir,

de quel exemple parles-tu ?

celui-ci ?

Dim elapsedTime(2)
Application.ScreenUpdating = True
For i = 1 To 2
    If i = 2 Then Application.ScreenUpdating = False
    startTime = Time
    Worksheets("Sheet1").Activate
    For Each c In ActiveSheet.Columns
        If c.Column Mod 2 = 0 Then
            c.Hidden = True
        End If
    Next c
    stopTime = Time
    elapsedTime(i) = (stopTime - startTime) * 24 * 60 * 60
Next i
Application.ScreenUpdating = True
MsgBox "Elapsed time, screen updating on: " & elapsedTime(1) & _
        " sec." & Chr(13) & _
        "Elapsed time, screen updating off: " & elapsedTime(2) & _
        " sec."

il faut lui rajouter un sub <nomdesub> et end sub pour que cela fonctionne.

Bonjour h2so4,

Merci pour ta réponse.

oui c'est cet exemple. Par contre il fut que je commente l'utilité de cette fonction. Peux-tu m'aider?

bonsoir,

as-tu exécuté la macro ?

oui je viens de l'executer mais elle ne fonctionne pas.


quand je lance la macro il me dit que la variable i n'est pas définie.

avoici une version qui devrait fonctionner

Sub test()
Dim elapsedTime(2), i, starttime, stoptime
Dim c As Object
Application.ScreenUpdating = True
For i = 1 To 2
    If i = 2 Then Application.ScreenUpdating = False
    starttime = Time
    Worksheets("Sheet1").Activate
    For Each c In ActiveSheet.Columns
        If c.Column Mod 2 = 0 Then
            c.Hidden = True
        End If
    Next c
    stoptime = Time
    elapsedTime(i) = (stoptime - starttime) * 24 * 60 * 60
Next i
Application.ScreenUpdating = True
MsgBox "Elapsed time, screen updating on: " & elapsedTime(1) & _
        " sec." & Chr(13) & _
        "Elapsed time, screen updating off: " & elapsedTime(2) & _
        " sec."
End Sub

En effet cela fonctionne. Peux-tu me dire en quelques mots à quoi correspond les différents mots clés utilisés? Je pense que la fonction utilisé permet un rafraîchissement.

rebonsoir

Sub test()
' definition des variables qui sont utilisées dans la macro
Dim elapsedTime(2), i, starttime, stoptime
Dim c As Object
' on autorise le rafraichissement d'écran excel
Application.ScreenUpdating = True
' on démarre une boucle qui s'exécutera 2 fois
For i = 1 To 2
   ' si i=2 on interdit le rafraichissement d'écran
    If i = 2 Then Application.ScreenUpdating = False
    ' on prend note de l'heure dans starttime (on démarre un chrono)
    starttime = Time
   'on active la feuil1
    Worksheets("Sheet1").Activate
    ' on passe en revue chque colonne de la feuille active
    For Each c In ActiveSheet.Columns
    ' si le numéro de colone est pair
        If c.Column Mod 2 = 0 Then
        'on cache la colonne
            c.Hidden = True
        End If
    Next c
' on prend note de l'heure de fin
    stoptime = Time
' on calcule le temps écoulé pour masquer une colonne sur 2, pour chque exécution de la boucle i
    elapsedTime(i) = (stoptime - starttime) * 24 * 60 * 60
Next i
' on réautorise le rafraichissement d'écran
Application.ScreenUpdating = True
MsgBox "Elapsed time, screen updating on: " & elapsedTime(1) & _
        " sec." & Chr(13) & _
        "Elapsed time, screen updating off: " & elapsedTime(2) & _
        " sec."
End Sub

en gros la macro démontre le gain de performance que l'on peut obtenir en désactiavant le rafraichissement d'écran, lorsque l'on fait des opérations sur des cellules excel.

Rebonsoir,

Je te remercie pour toutes ces informations. Comme je te l'ai dit, je débute sur la programmation VBA et comme mon niveau en informatique n'est pas très élevé je pense que je vais venir souvent sur ce forum pour avoir des explications.

Merci encore et bonne soirée.

Rechercher des sujets similaires à "programmation vba"