Macro excel super lente ?????

lalalie3

XLDnaute Nouveau
Bonjour,
ci dessous le lien aux documents qui me posent problèmes.
Cijoint.fr - Service gratuit de dépôt de fichiers

Mon problème est que je ne comprend pas pourquoi ces 2 documents mettent autant de temps (min 2h00) pour s'ouvrir alors qu'il y a 2 jours tout etait bien (5min).

Je me suis débrouillé comme j'ai pu pour les créer mais là, la source d'idée s'est tarie.
Est ce que qqu pourrait m'aider ?

P.S il faut ouvrir le classeur "calendrier" et clik que le bouton puis le reste suit ou presque.


Dans l'attente de vos réponses
Au plaisir de vous lire.
 

Staple1600

XLDnaute Barbatruc
Re : Macro excel super lente ?????

Bonjour

Chez moi, tes classeurs s'ouvrent normalement (enfin je l'ai ouvert en désactivant les macros)

Un question en passant:
Ta macro MEF_calendrier crée un calendrier classique ou pas ?

EDITION: Bonsoir et Bonne Nuit SoftMama ;)
 
Dernière édition:

Softmama

XLDnaute Accro
Re : Macro excel super lente ?????

Bonsoir lalalie3, Staple1600 :)

Effectivement 2 heures, cela me parait très long, mais 5 minutes en temps normal, c'est déjà beaucoup trop, vu ce que je sens que la macro doit faire (elle commence par modifier +100.000 cellules ( +15.000 lignes et 7 colonnes) une à une !!). Dans un premier temps je te conseille de les modifier colonne par colonne, ce qui devrait prendre à la place des 5 minutes, environ 1 seconde.

Et je n'ai regardé que les 20 premières lignes de la macro... sans présumer de la suite donc.


Si tu ne vois pas comment faire, fais le savoir : je m'y mettrai demain, pque là c'est l'heure du dodo :)

EDIT: je viens de regarder la macro MEF, et là encore,tu effectues la mise en forme des cellules en les regardant une par une ! ça me parait normal qu'il faille du temps... Ca peut là aussi être largement optimisé
 
Dernière édition:

lalalie3

XLDnaute Nouveau
Re : Macro excel super lente ?????

Bonjour et merci de me consacrer du temps !

Depuis mon poste j'ai un peu travaillé dessus ...
Ci dessous le lien correspondant il y a des explications dans les classeurs : Calendrier et planning_caisse_original_avec_onglet.
Le planning caisse original est la pour faire les tests au cas où ...

Cijoint.fr - Service gratuit de dépôt de fichiers

Je reste dispo.
Au plaisir de vous lire !
Cdt
 

lalalie3

XLDnaute Nouveau
Re : Macro excel super lente ?????

Bnjour,
Oups j'ai fais ma blonde .... :)
Oui comme vous connaisez une manière plus rapide il n'y a pas de souci pour optimiser le temp de création de cette "Bdd".
Attentiion cette "application" sera utilisée sous excel 2003.

Au plaisir de vous lire
 

hellnar

XLDnaute Junior
Re : Macro excel super lente ?????

Bonour Lalalie3,

J'ai ouvert le fichier (mac2011) sans problème.
Je n'ai pas testé la macro, mais rien qu'en la lisant on peut faire quelques commentaires.
Le premier est que la recherche du numéro de semaine est facilité puisque il existe une fonction pour le faire NO.SEMAINE()
Je ne sais pas par contre si elle est en standard dans ta version de Excel. Si ce n'est pa sle cas charger les macros complémentaires (dans Outils).
Ensuite, tu prends chaque ligne pour écrire la même chose, par exemple "standard".
On peut faire beaucoup plus vite en écrivant :
Range("C5:C100000").Value = "Standard"...
Ceci dit quel est l'intérêt d'écrire partout la même chose ??? A toi de voir.
Il en est de même pour presque toutes les autres lignes qui pourraient être écrites d'une seule fois.

Enfin pour accélérer le traitement d'une macro toujours demander de ne pas montrer ce qui se passe
Application.ScreenUpdating = False

Enfin dans ton cas, on pourrait traiter tout cela sans macro, directement dans Excel si cela en vaut la peine : ie recalcul fréquent.

Bonne journée

Hellnar
 

Softmama

XLDnaute Accro
Re : Macro excel super lente ?????

Bonjour à tous,

Comme je te l'ai effectivement dit, il est largement possible d'optimiser le temps de traitement de ta macro, en gérant les formules et les formats colonne par colonne, plutôt que cellule par cellule. Si je ne me suis pas trompé, le résultat est en fichier joint. J'ai juste modifié la macro MEF_Calendrier, sans chercher à optimiser plus avant. (j'ai même pas jeté un coup d'oeil à la suite). Vois si déjà cette partie te parait plus rapide ??
EDIT : Ha le site ci-joint est en maintenance, je te mets la macro MEF_CAlendrier à recopier dans ton fichier d'origine alors. (tu vois, il n'y a plus de boucle de 5 à 15470...) :
RE-EDIT : Petite astuce sur la colonne F pour éviter un modulo et une boucle sur +15000 cellules, j'utilise une formule un peu barbare mais qui devrait faire pareil ^^. Du coup, le variable dateorigine ne sert plus dans cette macro (à moins que tu en aies besoin dans la suite ?)

VB:
Sub MEF_calendrier()
    Dim i As Double
    Dim datorigine As Date
    Dim lWorkbook As Workbook
    Dim lFound As Boolean
    Dim chemin As String
    Dim nbcol As Integer
    Dim nblg As Integer
    
    Dim wksCALEND As Worksheet
    
    
    Application.ScreenUpdating = False
    
    Set wksCALEND = ActiveWorkbook.Sheets("calendrier")
    
    
    dateorigine = DateSerial(Sheets("calendrier").Cells(1, 2), 1, 1)
With Sheets("Calendrier").Range("F5:F15670")
  .FormulaR1C1 = "=DATE(R1C2,1,INT((ROW()-5)/42))+1"
  .Value = .Value
  .NumberFormat = "mm/d/yyyy"
End With
With Sheets("calendrier").Range("E5:E15670")
  .FormulaR1C1 = "=MANOSEM(RC[1])"
  .Value = .Value
End With
Sheets("Calendrier").Range("D5:D15670").Value = "Standard"
With Sheets("Calendrier").Range("C5:C15670")
  .FormulaR1C1 = "=month(RC[3])"
  .Value = .Value
End With
With Sheets("Calendrier").Range("B5:B15670")
  .FormulaR1C1 = "=weekday(RC[4])"
  .Value = .Value
  .NumberFormat = "dddd"
End With
With Sheets("Calendrier").Range("A5:A15670")
  .FormulaR1C1 = "=weekday(RC[5])"
  .Value = .Value
  .NumberFormat = "dddd"
End With

'G PAS REGARDE LA SUITE.....

Call MEF
    Call copcol

    Application.ScreenUpdating = True
    Set wksCALEND = Nothing
    Set wksPLANNING = Nothing
End Sub

EDIT2 : Ha les 2 derniers pavés (colonne A et B) font la même chose, j'aurais pu optimiser ça en un seul code, mais bon.
 
Dernière édition:

Statistiques des forums

Discussions
312 299
Messages
2 086 993
Membres
103 422
dernier inscrit
victus5