Lenteur execution macro

Bonjour,

Je viens de créer une de mes premières macros, qui fonctionne, mais qui s'exécute très lentement. Dans un tableau, contenant trois sortes de valeurs (A, EC, N), je veux modifier la police (la couleur notamment) en fonction du contenu de la cellule. Le code que j'ai péniblement réussi à trouver est le suivant.

Sub Modi_couleur()

'Modifie la police, couleur, etc...

Dim plage As Range

Set plage = [C24:V47]

For Each Cell In plage

Select Case Cell.Value

Case "A", "EC", "N"

Cell.Font.Name = "Menio Bold"

Cell.Font.Size = 36

Cell.HorizontalAlignment = xlHAlignCenter

Cell.Font.Bold = True

End Select

Select Case Cell.Value

Case "A"

'Target.Interior.ColorIndex = 1

Cell.Font.ColorIndex = 10

Case "EC"

'Target.Interior.ColorIndex = 3

Cell.Font.ColorIndex = 46

Case "N"

'Target.Interior.ColorIndex = 3

Cell.Font.ColorIndex = 3

End Select

Next

End Sub

Si quelqu'un peut m'expliquer pourquoi le programme tourne lentement, et cela dans des termes simples (j'ai mis le nez dans VBA il y a moins d'un mois !!!), cela me rendrait service.

Merci d'avance pour votre contribution.

Cédric

Bonsoir

Place

Application.ScreenUpdating = False

en debut de macro

et

Application.ScreenUpdating = True

en fin de macro

cela afin d'éviter le rafraichissement de chaque cellule

Bonjour et bienvenu(e)

Salut BOB71AU

Sans le fichier en cause pas facile

Ici je t'ai placé les "classiques"

Sub Modi_couleur()
'Modifie la police, couleur, etc...
Dim plage As Range
Dim ModeCalcul As Integer

  Application.ScreenUpdating = False

  ' Si beaucoup de formule :Replacer comme avant à la fin
  ModeCalcul = Application.Calculation
 Application.Calculation = xlCalculationManual
  ' Si des procédures événementielles : Replacer à True à la fin
  Application.EnableEvents = False 

  Set plage = [C24:V47]

  For Each Cell In plage
    Select Case Cell.Value
      Case "A", "EC", "N"
        Cell.Font.Name = "Menio Bold"
        Cell.Font.Size = 36
        Cell.HorizontalAlignment = xlHAlignCenter
        Cell.Font.Bold = True
    End Select

    Select Case Cell.Value
      Case "A"
        'Target.Interior.ColorIndex = 1
        Cell.Font.ColorIndex = 10
      Case "EC"
        'Target.Interior.ColorIndex = 3
        Cell.Font.ColorIndex = 46
      Case "N"
        'Target.Interior.ColorIndex = 3
        Cell.Font.ColorIndex = 3
    End Select
  Next

  Application.Calculation = ModeCalcul
  Application.EnableEvents = True    

End Sub

Pour cette macro il n'y a que

 Application.ScreenUpdating = False

de vraiment utile

Bonjour,

Une proposition qui utilise des styles de cellules.

Cdlt.

Bonsoir,

J'ai testé: ça marche bien mieux comme ça. Merci beaucoup pour votre contribution.

Rechercher des sujets similaires à "lenteur execution macro"