Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 07/09/2006, 18h44   #1 (permalink)
XLDnaute Junior
 
Date d'inscription: juillet 2006
Messages: 65
Par défaut lenteur d'une macro

Bonsoir le forum,

Voilà j'ai un fichier que voici :http://cjoint.com/?jhsK66XSUx

J'ai une macro, située dans le module 4 de mon fichier, qui est associée au bouton de commande situé en bas de la feuille macros_i.

Même si je ne remplis rien dans mes tableaux ma macro est super lente. Je connais le code screenupdating. Je l'ai essayé mais ça n'arrange rien. Peut être que je ne le mets pas au bon endroit...Qualqu'un peut-il m'aider à ce sujet?


Merci d'avance pour votre aide/

A plus
kevinch est déconnecté   Réponse avec citation
ANNONCES
Vieux 07/09/2006, 20h32   #2 (permalink)
XLDnaute Occasionel
 
Avatar de Sylvain
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 255
Par défaut Re : lenteur d'une macro

Bonjour,

regarde peut-être calculationmode pour éviter peut-être des recalculs inutiles.
Ce qui peut faire perdre du temps aussi ce sont les sélections :
Range("D40:E44").Copy
va beaucoup plus vite que :
Range("D40:E44").Select
Selection.Copy
pareil :
Range("D40:E44").Select
Selection.ClearContents
peut être remplacé par
Range("D40:E44").ClearContents
Même les copier collage spécial valeur peuvent être remplacés par
Range("D40:E44").value=range("A1:b5").value
Sylvain est déconnecté   Réponse avec citation
Vieux 07/09/2006, 21h01   #3 (permalink)
XLDnaute Junior
 
Date d'inscription: juillet 2006
Messages: 65
Par défaut Re : lenteur d'une macro

Salut

et merci pour ton aide,

Par contre tu peux m'en dire plus sur calculationmode?

Merci

A +
kevinch est déconnecté   Réponse avec citation
Vieux 07/09/2006, 22h44   #4 (permalink)
XLDnaute Accro
 
Avatar de Gorfael
 
Date d'inscription: avril 2006
Localisation: Basse Goulaine
Version Excel : Excel 2003 (PC)
Messages: 1 408
Par défaut Re : lenteur d'une macro

Citation:
Envoyé par kevinch
Bonsoir le forum,

Voilà j'ai un fichier que voici :http://cjoint.com/?jhsK66XSUx

J'ai une macro, située dans le module 4 de mon fichier, qui est associée au bouton de commande situé en bas de la feuille macros_i.

Même si je ne remplis rien dans mes tableaux ma macro est super lente. Je connais le code screenupdating. Je l'ai essayé mais ça n'arrange rien. Peut être que je ne le mets pas au bon endroit...Qualqu'un peut-il m'aider à ce sujet?


Merci d'avance pour votre aide/

A plus
Salut
je pense que ton problème de vitesse est généré par tes select.
Je suis un peu embêté parce que je ne connais pas le but de ta macro et que je pas trop envie de m'y plonger pour savoir si le résultat correspond :
par exemple tu fais des tests du style :

If ActiveCell = "0" Then
Cells(i, 7) = "1"

Pourquoi utiliser des chiffres (texte) et pas des nombres ?
If ActiveCell = 0 Then
Cells(i, 7) = 1
Marche aussi bien sinon mieux (je pense), sauf si tu travailles du texte

le début de ta macro devient avec moi :
Code:
Dim Lig As Long
Dim derligne1 As Long
Dim i As Long
    
'arrêt du rafraîchissement dès le début
    Application.ScreenUpdating = False
    
'Copies
'Désignation de la ligne de copie
    Lig = Sheets("taches_i").Range("A65536").End(xlUp).Row + 1
'copies directes
    With Sheets("macros_i")
        .Range("D40:E44").Copy (Sheets("taches_i").Range("A" & Lig))
        .Range("F40:F44").Copy (Sheets("taches_i").Range("D" & Lig))
        .Range("G40:H44").Copy (Sheets("taches_i").Range("F" & Lig))
        .Range("D40:H44").ClearContents
    End With
  
'Feuille taches_i:étendre formule dans colonne 3 ****************
Sheets("taches_i").Select
  
'Boucle
    For i = 3 To 2000 Step 1
        
        derligne1 = Sheets("Paramètres").SpecialCells(xlLastCell).Row
        
        Select Case Range("B" & i)
            Case 1
                Range("C" & i) = Sheets("Paramètres").Range("I" & derligne1)
            Case 2
                Range("C" & i) = Sheets("Paramètres").Range("J" & derligne1)
            Case 3
                Range("C" & i) = Sheets("Paramètres").Range("K" & derligne1)
            Case 4
                Range("C" & i) = Sheets("Paramètres").Range("L" & derligne1)
            Case Else
                'si la valeur est différente, on peut mettre un message
        End Select
  
  'Feuille taches_i:étendre formule dans colonne 5
   If Range("D" & i) <> "" Then _
             Range("E" & i) = Sheets("Paramètres").Range("E" & derligne1) / Range("D" & i)
  
 'Feuille taches_i:étendre formule dans colonne 8 et 9
   
    Select Case Range("G" & i)
        Case 0
            Range("H" & i) = 1
            Range("I" & i) = Range("C" & i) * Range("E" & i) * Range("F" & i) * _
                                Range("G" & i) + 1
        Case ""
            Range("H" & i) = ""
            Range("I" & i) = ""
        Case Else
            Range("H" & i) = 0
            Range("I" & i) = Range("C" & i) * Range("E" & i) * Range("F" & i) * Range("G" & i)
    End Select
    
   Next i
......
Screenupdatig : tu le mets à FALSE une fois en début et une fois à TRUE en fin, pas besoin de le remettre à treu/false au milieu

Je préfère utiliser Range que cells, c'est plus lisible pour moi, mais question vitesse, je n'ai rien mis en évidence sur différents tests

Tu fais une boucle de i=3 à 200 : il y a une raison ? pourquoi de 3 à dernière utilisée ?

Select case est plus rapide que elseif.
le problème est que je ne suis pas sûr que ça ne plante pas avec 1 à la place de "1" et vice-versa

A+

Dernière modification par Gorfael ; 08/09/2006 à 08h15.
Gorfael est déconnecté   Réponse avec citation
Vieux 07/09/2006, 23h29   #5 (permalink)
XLDnaute Occasionel
 
Avatar de Sylvain
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 255
Par défaut Re : lenteur d'une macro

Désolé, c'était calculation tout seul.

Objet Application : renvoie ou définit le mode de calcul. Il peut s'agir de l'une des constantes XlCalculation suivantes : xlCalculationAutomatic, xlCalculationManual ou xlCalculationSemiautomatic.
Ca correspond à ce qu'on fait quand on fait outils option/calcul/mode de calcul.
Sylvain est déconnecté   Réponse avec citation
Vieux 08/09/2006, 07h03   #6 (permalink)
XLDnaute Junior
 
Date d'inscription: juillet 2006
Messages: 65
Par défaut Re : lenteur d'une macro

Salut Sylvain, Salut Gorfael,

Merci de votre aide.

Gorfael, je vais essayer ton code qui m'a l'air beaucoup plus simple que le mien.Si problème je reposte ce soir.

Bonne journée

A+
kevinch est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
lenteur macro michel33 Forum Excel 20 15/05/2005 11h22
Validation - lenteur ! andré Forum Excel Downloads - Archives 14 14/10/2004 23h41
lenteur jacques Forum Excel Downloads - Archives 1 17/08/2004 14h30
Ouverture et fermeture de fichier d'une lenteur digne d'un 486 G'Claire Forum Excel Downloads - Archives 2 15/01/2004 23h50
fichier trop gros? trop de macro? énorme lenteur pour ouvrir le fichier sam Forum Excel Downloads - Archives 1 18/12/2002 08h10


Fuseau horaire GMT +2. Il est actuellement 08h30.


(C) 2006 Excel Downloads