Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1417 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Excel 2002 - longueur à l'ouverture d'un fichier (résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Excel 2002 - longueur à l'ouverture d'un fichier (résolu)

n°1300676
watashi
La démotivation : JAMAIS !
Posté le 07-02-2006 à 17:46:19  profilanswer
 

Bonjour à tous,
 
J'ai un fichier excel avec macros (2 c'est pas enorme !) qui sont appellés à l'activation de 6 des 7 feuilles que contien ce classeur les 2 macros sont les suivantes :

Code :
  1. Sub MaJtab()
  2. 'Macro de mise à jour automatique de la ventilation
  3. 'Répartition des NC par imputation et par mois
  4.     Dim MesNc(7, 11)
  5.     Dim i As Integer, a As Integer
  6.     For i = 2 To Sheets(1).Cells(65536, 1).End(xlUp).Row
  7.         Select Case UCase(Sheets(1).Cells(i, 4).Value)
  8.             Case Is = UCase("à préciser" )
  9.                 a = 3
  10.             Case Is = UCase("Fabrication" )
  11.                 a = 4
  12.             Case Is = UCase("BE mécanique" )
  13.                 a = 5
  14.             Case Is = UCase("BE automatismes" )
  15.                 a = 6
  16.             Case Is = UCase("Commercial" )
  17.                 a = 7
  18.             Case Is = UCase("Client" )
  19.                 a = 8
  20.             Case Is = UCase("Fournisseur" )
  21.                 a = 9
  22.             Case Else
  23.                 a = 2
  24.         End Select
  25.         MesNc(a - 2, Sheets(1).Cells(i, 3).Value - 1) = CInt(MesNc(a - 2, Sheets(1).Cells(i, 3).Value - 1)) + 1
  26.     Next i
  27. 'Mise en place du tableau des ventillation par mois et par imputation
  28.     a = 2
  29.     For a = 3 To 9
  30.         i = 2
  31.         For i = 2 To 13
  32.             Sheets(3).Cells(a - 1, i) = CInt(MesNc(a - 2, i - 2))
  33.         Next i
  34.     Next a
  35. 'Mise en place du nombre de fiches en attente
  36.     Dim NbNcAttente As Integer
  37.     NbNcAttente = 0
  38.     i = 0
  39.     For i = 0 To 11
  40.         NbNcAttente = NbNcAttente + MesNc(0, i)
  41.     Next i
  42.     Sheets(3).Cells(11, 4).Value = NbNcAttente
  43. End Sub

et

Code :
  1. Sub MaJBeM()
  2. 'Macro de mise à jour automatique des ventilatiobns pour le BEM
  3. 'Mise à 0 de la table
  4. Sheets(4).Range("B2:B21" ).ClearContents
  5. Sheets(6).Range("B2:B21" ).ClearContents
  6. 'Comptage des NC et ventilation
  7. Dim i As Integer, WkSh As Worksheet, a As Integer
  8. For i = 2 To Sheets(1).Cells(65536, 1).End(xlUp).Row
  9.     'définition de la feuille
  10.     If UCase(Sheets(1).Cells(i, 4).Value) = UCase("BE mécanique" ) Then
  11.         Select Case Sheets(1).Cells(i, 3).Value
  12.                 Case 1 To 6
  13.                 Set WkSh = Sheets(4)
  14.                 Case 7 To 12
  15.                 Set WkSh = Sheets(6)
  16.                 Case Else
  17.                    
  18.         End Select
  19.     'définition de la ligne
  20.     If Sheets(1).Cells(i, 5) = "" Then a = 21 Else a = Sheets(1).Cells(i, 5)
  21.     'Ecriture
  22.     If Not IsEmpty(WkSh) Then WkSh.Cells(a, 2) = WkSh.Cells(a, 2).Value + 1
  23.     Else
  24.     End If
  25. Next i
  26. End Sub


J'ai en plus dans workbook_open un shets(1).activate (sachant que c'est la seule feuille qui ne déclenche pas l'appel d'une macro).
 
Mon problème est que ce fichier mets minimum 30 secondes à s'ouvrir... Je trouves ça un peu long vu le peu qu'il y a dedans (taille du fichier 100ko).
J'ai signé mes macros, mais ça n'accelère pas l'ouverture du fichier...  
Quelqu'un aurait une piste sur ce qui fait ramer son ouverture ?
 
Merci d'avance


Message édité par watashi le 09-02-2006 à 09:21:51

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
mood
Publicité
Posté le 07-02-2006 à 17:46:19  profilanswer
 

n°1300693
mareek
Et de 3 \o/
Posté le 07-02-2006 à 18:30:20  profilanswer
 

dans chaque macro tu execute 65535 la boucle et vu que tu fais un certain nombre d'accès en lecture et écriture aux cellules, ce n'est pas anormal que ta macros soit lente.  
Essaye de désactiver la mise à jour de l'affichage au début de chaque macro et de la réactiver à la fin, ça devrait améliorer les choses. Je ne me souviens plus comment on fait mais il me semble que c'est possible, au pire tu met la propriété visible de tes feuille de calcul à false pendant l'éxecution de la macro.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1301492
watashi
La démotivation : JAMAIS !
Posté le 08-02-2006 à 17:56:29  profilanswer
 

mareek a écrit :

dans chaque macro tu execute 65535 la boucle et vu que tu fais un certain nombre d'accès en lecture et écriture aux cellules, ce n'est pas anormal que ta macros soit lente.  
Essaye de désactiver la mise à jour de l'affichage au début de chaque macro et de la réactiver à la fin, ça devrait améliorer les choses. Je ne me souviens plus comment on fait mais il me semble que c'est possible, au pire tu met la propriété visible de tes feuille de calcul à false pendant l'éxecution de la macro.


 
Salut mareek,
 
D'abord merci de ta réponse.
 
Il est vrai que le changement de page est moins fluide que si je n'avais pas les macros et je vais mettre lui mettre un screenupdating à false comme tu le proposes :)
 
Je testerais donc ça demain en espérant que ça aie une influence sur l'ouverture du fichier en elle-même
;)
 
edit : par contre la boucle ne se fait que 4 fois en ce moment de la ligne 2 à 6...


Message édité par watashi le 08-02-2006 à 17:58:51

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1301808
watashi
La démotivation : JAMAIS !
Posté le 09-02-2006 à 09:21:15  profilanswer
 

Salut mareek,
 
Je confirme donc application.screenupdating a bien diminué le temps de passage d'un onglet à l'autre.
Ce matin l'ouverture du fichier a mis moins de 5 sec... Je devais avoir ma ram un peu saturée mardi.
 
:)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Excel 2002 - longueur à l'ouverture d'un fichier (résolu)

 

Sujets relatifs
[Excel] Fonction - appel a une macro comp.[ANT Resolu] cactus Ant Task
Vider un fichier en C++[vbs] pb ecriture dans un fichier
[resolu]Debutant en php - derniere connection[RESOLU]verification d'un formulaire
[CSS]css non reconnu par ie mais OK avec firefox et opera [Résolu][excel] Les useforms (en particulier les combobox)
suppression de fichier[Résolu] MVC
Plus de sujets relatifs à : Excel 2002 - longueur à l'ouverture d'un fichier (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR