Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  LOGICIELS


|||-  

Macro tableau lent

 

2 utilisateurs anonymes et 177 utilisateurs inconnus
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

Macro tableau lent

RÉSOLU
Prévenir les modérateurs en cas d'abus 
JBARBE
jbarbe
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 27/02/2017 à 20:02:43  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour à tous,
Comment faire avec une macro tableau ubound pour que cette macro simple puisse être plus rapide :

Sub Supprimer_Zero()
Dim i As Long, j As Long, derniere_ligne As Long
Application.ScreenUpdating = False
With Sheets(1)
derniere_ligne = Range("A1" ).End(xlDown).Row 'Dernière ligne de la base de données
For i = 1 To derniere_ligne
For j = 1 To 40
If .Cells(i, j) = 0 And .Cells(i, j).Interior.ColorIndex = xlNone Then .Cells(i, j) = ""
Next j
Next i
End With
Application.ScreenUpdating = True
End Sub

http://www.cjoint.com/c/GBBtcn​Yu0V8

Merci à l'avance !

willyplaisir
Expert Excel Habitué (de 5 000 à 9 999 messages postés)
  1. Posté le 28/02/2017 à 10:13:15  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bjr JBARBE

le programme fonctionne bien et met moins de 4s pour supprimer les données non colorées et égales à 0.
tu as surement un problème (memoire ou vitesse du microprocesseur mal refroidi... autres?)

une autre façon de faire la macro de même durée

Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Sub willy()
  2. Dim li As Integer
  3. Application.ScreenUpdating = False
  4. With Sheets(1)
  5.   li = .Range("A1").End(xlDown).Row 'Dernière ligne de la base de données
  6.   .Range("A1:AN" & li).Select
  7.  
  8. For Each Cel In Selection
  9.   If Cel = 0 And Cel.Interior.ColorIndex = xlNone Then range(Cel.Address) = ""
  10. Next
  11. End With
  12. Application.ScreenUpdating = True
  13. End Sub



 :hello:


---------------
[:ahlefoufou] Merci de sauver les chats abandonnés en aidant cette association : [:tazounet:5]
- Pension MillePattes
(Publicité)
jbarbe
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 28/02/2017 à 11:29:47  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Re,
Merci Willy!
Bonne journée !

willyplaisir
Expert Excel Habitué (de 5 000 à 9 999 messages postés)
  1. Posté le 28/02/2017 à 17:24:52  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Au fait, combien de temps met la macro pour effacer les donnée?

cela peut -être très lent >2mn si tu as des millions de cellules à effacer
 :hello:


---------------
[:ahlefoufou] Merci de sauver les chats abandonnés en aidant cette association : [:tazounet:5]
- Pension MillePattes
jbarbe
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 02/03/2017 à 14:53:30  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour,
Avec cette macro que l'on ma donné (0,4726563)

Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Sub Supprimer_Zero()
  2. Dim Plage As Range, Cel As Range, T(), L&, C&, temp As Single
  3. Application.ScreenUpdating = False
  4. temp = Timer
  5. Set Plage = Application.Range(Sheets(1).[AN1], Sheets(1).[A65536].End(xlUp))
  6. T = Plage.Value
  7. For L = 1 To UBound(T, 1): For C = 1 To UBound(T, 2)
  8. If T(L, C) = 0 Then If Plage(L, C).Interior.ColorIndex = xlNone Then T(L, C) = Empty
  9. Next C, L
  10. Plage.Value = T
  11. MsgBox Timer - temp
  12. Application.ScreenUpdating = True
  13. End Sub
Et avec ma macro ( 5,332031)

Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Sub Supprimer_ZeroA()
  2. Dim i As Long, j As Long, derniere_ligne As Long, temp As Single
  3. Application.ScreenUpdating = False
  4. temp = Timer
  5. With Sheets(1)
  6. derniere_ligne = Range("A1").End(xlDown).Row 'Dernière ligne de la base de données
  7. For i = 1 To derniere_ligne
  8. For j = 1 To 40
  9. If .Cells(i, j) = 0 And .Cells(i, j).Interior.ColorIndex = xlNone Then .Cells(i, j) = ""
  10. Next j
  11. Next i
  12. End With
  13. MsgBox Timer - temp
  14. Application.ScreenUpdating = True
  15. End Sub
Ya pas photo !
Bonne journée !
Message édité par JBARBE le 02/03/2017 à 14:58:38
(Publicité)
 Page :
1

Aller à :
 

Sujets relatifs
macro désactivée pc devenu lent
Macro pour interdire l'actualisation d'une date et heure Astuce dans macro Excel
Macro "Recherche" sur zone définie ! Création tableau récapitulatif à partir de deux autres
Faire une macro Excel "remplacer"  
Plus de sujets relatifs à : Macro tableau lent

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
bouton parcourir bloque 3
Pilote média manquant 0
disparition texte de World sur mac 1
Incrémenter un compteur sous Libre Office Calc 4
Date DIF inverse 3