Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Execution lente en VBA

apb

XLDnaute Occasionnel

Bonjour à Tous
Merci d'avance pour votre aide.

Je vous joins mon fichier exemple pour documenter mon problème.

Dans ce fichier, en fonction des codes de la feuil2 col B saisie dans la feuille planning, je change la couleur de fond de la case grâce à une zone de saisie définie et un code VBA.

Le problème est que, quand il n'y que Janvier, c'est rapide, mais sur les 12 mois de l'année cela devient très long à l'exécution.

Je cherche de l'aide pour optimiser cette procédure.

D'avance je vous en remercie.
 

apb

XLDnaute Occasionnel
apb écrit:
 

apb

XLDnaute Occasionnel
apb écrit:
 

apb

XLDnaute Occasionnel
apb écrit:

Excuse moi pour ces doublons le fichiers joint ne voulais pas passer
 

apb

XLDnaute Occasionnel
apb écrit:

Il y avait un espace !!!! [file name=essai2_20060219111121.zip size=44031]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai2_20060219111121.zip[/file]
 

Pièces jointes

  • essai2_20060219111121.zip
    43 KB · Affichages: 24

ERIC S

XLDnaute Barbatruc
re

le pb j epense est que dans un premier temps tu détectes la zone à gérer mais que ta macro 'condition...' balaie tous les mois

en passant un paramètre du style

Call condition_select_case_multiple_rapide_screenupdating('zone_de_saisie_Janvier')

et en le récupérant

Sub condition_select_case_multiple_rapide_screenupdating(zone)
...
For Each c In Range(zone)
Select Case c
Case Is = 'ap'
c.Interior.Color = RGB(255, 153, 204)
Case Is = 'ca', 'bd', 'jtl', 'cm', 'asa', 'rc', 'cet', 'rtt', 'tc'
c.Interior.Color = RGB(255, 255, 0)
Case Is = 'G'
c.Interior.Color = RGB(255, 102, 0)
Case Is = 'S2', 'PR', 'ast'
c.Interior.Color = RGB(51, 102, 255)
Case Is = 'S1'
c.Interior.ColorIndex = 8
Case Is = 'fx'
c.Interior.ColorIndex = 4
Case Is = 'S'
c.Interior.Color = RGB(204, 204, 255)
Case Else
c.Interior.ColorIndex = 2
End Select
Next
end sub

devrait être plus rapide

A+
 

michel_m

XLDnaute Accro
Bonjour à tous,

Si j'ai bien compris, tu déclenches ta macro sur un worksheet_change...

Dans ce cas, pourquoi ne pas traiter le cas de la cellule active (target)? cela t'éviterait de parcourir toutes les zones.

En espèrant ne pas être à coté de la plaque

Michel_M
 

chris

XLDnaute Barbatruc
Bonjour
J'ai simplifié ton code car tu mettais toute la feuille à jour et non seulement la plage.
Mais on peut sans doute se limiter à la cellule comme le suggère michel_m que je salue au passage.
 

apb

XLDnaute Occasionnel
Bonjour, et merci pour votre aide,

J'ai modifié mon fichier VBA, mais je pense faire une erreur, Pouvez vous m'aider à deboguer?
Merci


Bon appétit

Encore Merci [file name=essai2_20060219113851.zip size=43592]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai2_20060219113851.zip[/file]
 

Pièces jointes

  • essai2_20060219113851.zip
    42.6 KB · Affichages: 19

apb

XLDnaute Occasionnel
chris écrit:
Bonjour
J'ai simplifié ton code car tu mettais toute la feuille à jour et non seulement la plage.
Mais on peut sans doute se limiter à la cellule comme le suggère michel_m que je salue au passage.

Bonjour et merci pour votre aide

Je ne touve pas de fichier joint avec le code simplifié!!!
Merci
 

ERIC S

XLDnaute Barbatruc
re

essaie le fichier joint

effectivement une autre solution par target, sur la cellule seule est possible

A+ [file name=essai2TdB.zip size=42706]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai2TdB.zip[/file]
 

Pièces jointes

  • essai2TdB.zip
    41.7 KB · Affichages: 28

Discussions similaires

Réponses
12
Affichages
265
Réponses
12
Affichages
400
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…