bonsoir le forum,
dans un classeur assez lourd... (ce commence bien)
j'ai une macro qui risque de tourner assez souvent selon les demandes de l'utilisateur.
Le problème est que cette macro est assez lente sur mon pc ..alors j'imagine pas ce que ca va donner sur un pc limite coté mémoire.
il y at-il une possibilité d'améliorer ce code svp ?
sa fonction: faire la liste des différentes valeurs dans une plage en stockant les valeurs dans une colonne précolorée. Cette colonne (X) défini donc des groupes avec une police et une couleur donnés.
puis dans une autre plage de données, la macro colorie les cellules en fonction de leur valeurs à l'identique de celle correspondante de la colonne (X).
La macro permet donc de colorier des cellules en fonction de groupe définis.
si quelqu'un peut m'aider sur la méthode pour accelerer cette macro svp
dans un classeur assez lourd... (ce commence bien)
j'ai une macro qui risque de tourner assez souvent selon les demandes de l'utilisateur.
Le problème est que cette macro est assez lente sur mon pc ..alors j'imagine pas ce que ca va donner sur un pc limite coté mémoire.
il y at-il une possibilité d'améliorer ce code svp ?
sa fonction: faire la liste des différentes valeurs dans une plage en stockant les valeurs dans une colonne précolorée. Cette colonne (X) défini donc des groupes avec une police et une couleur donnés.
puis dans une autre plage de données, la macro colorie les cellules en fonction de leur valeurs à l'identique de celle correspondante de la colonne (X).
La macro permet donc de colorier des cellules en fonction de groupe définis.
Code:
Application.Calculation = xlManual
Application.EnableEvents = False
Dim c as range
Dim I as integer
Dim Old as variant
I = 0
For Each C In Sheets("Exploitation").Range("result")
I = I + 1
If Sheets("Plaque finale").Range("extraction_plate_cplt").Item(I).Offset(n - 4, 0) = "" Then
C.Interior.ColorIndex = xlNone
C.Font.ColorIndex = xlNone
Cells(C.Row, C.Column).Offset(1, 0).Interior.ColorIndex = xlNone
Cells(C.Row, C.Column).Offset(1, 0).Font.ColorIndex = xlNone
GoTo cellule_suivante
End If
C = Sheets("Plaque finale").Range("extraction_plate_cplt").Item(I).Offset(n - 4, 0).Value
C.Offset(1, 0) = Sheets("Plaque finale").Range("extraction_plate_cplt").Item(I).Value
If C = oldC And I > 1 Then GoTo no_search_color
oldC = C
search_couleur:
With Sheets("listes").Range("Listes_info_plaque_en_cours")
Set d = .Find(C, LookIn:=xlFormulas, lookat:=xlWhole)
If Not d Is Nothing Then
Couleur = d.Interior.ColorIndex
couleur_font = d.Font.ColorIndex
Else
m = Sheets("listes").Cells(65535, Sheets("listes").Range("Listes_info_plaque_en_cours").Column).End(xlUp).Row + 1
Sheets("listes").Cells(m, Sheets("listes").Range("Listes_info_plaque_en_cours").Column) = C
GoTo search_couleur
End If
End With
no_search_color:
C.Interior.ColorIndex = Couleur
C.Font.ColorIndex = couleur_font
Cells(C.Row, C.Column).Offset(1, 0).Interior.ColorIndex = Couleur
Cells(C.Row, C.Column).Offset(1, 0).Font.ColorIndex = couleur_font
cellule_suivante:
Next C
si quelqu'un peut m'aider sur la méthode pour accelerer cette macro svp