XL 2010 Modification macro VBA (validation cellules non vierges)

Erakmur

XLDnaute Occasionnel
Bonjour,

La macro si dessous valide les formules des lignes de aj9 à aj7000. Cela prend 4 min. Sur les 6991 cellules, il est très rare qu'elles contiennent toutes des formules. Afin de diminuer les temps de calcul, est il possible d'avoir la même macro qui valide uniquement les formules des cellules non vierge de aj9 à aj7000.

Sub Validation()
Dim c As Range
Application.Calculation = xlManual
Application.ScreenUpdating = False
For Each c In [Aj9:Aj7000]
c = c.Formula
Next
Application.Calculation = xlAutomatic
End Sub


Cordialement
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Il n'y a aucune structure dans ces codes, c'est du bricolage. pas étonnant que ça fonctionne aussi mal.

Le problème principal vient de la macro Worksheet_Change, il faudrait la réécrire en respectant les fondamentaux :
  • N'utiliser que Target, pas ActiveCell.
  • Ne pas utiliser .Select (utiliser un objet range)
  • Éviter la récursivité , i.e. désactiver les évènements lorsque qu'on change une info sur la feuille.
  • Déclarer et typer toutes les variables (Option Explicit en début de module)
  • Gérer les erreurs en amont (éviter On Error Resume Next)
  • Après On Error Resume Next, rétablir dès que possible la gestion d'erreur (On Error Goto 0)
  • Structurer et commenter le code pour qu'il soit compréhensible par tous.

Et pour bien faire, il faudrait tout reprendre avec une analyse préalable.
 

Patrice33740

XLDnaute Impliqué
C'est pas là le problème !
Quand pour aller de La Varenne à Chennevières, on passe par Calais - Brest - Bayonne - Nice et Strasbourg, on peut gagner du temps en passant uniquement par Toulouse et Lyon mais c'est pas la bonne solution.

En révisant l'ensemble du code, la macro ne devrait prendre que quelques secondes voire moins.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
702