Optimisation code vba
Résolu
florebobosch
-
Mosca -
Mosca -
Bonjour,
J'ai un classeur qui constitue une grille tarifaire : chaque ligne représente une pièce et donne son prix en fonction de sa quantité. J'ai créé un code permettant de masquer les lignes inutiles (lignes dont la quantité de la pièce est à 0) de mes feuilles avant de les imprimer seulement l'algorithme parcours la feuille ligne par ligne et cela prend beaucoup de temps (plus de 30s), est-ce que quelqu'un saurait comment améliorer mon code qui est le suivant ?
Merci d'avance, bonne journée!
Flore
J'ai un classeur qui constitue une grille tarifaire : chaque ligne représente une pièce et donne son prix en fonction de sa quantité. J'ai créé un code permettant de masquer les lignes inutiles (lignes dont la quantité de la pièce est à 0) de mes feuilles avant de les imprimer seulement l'algorithme parcours la feuille ligne par ligne et cela prend beaucoup de temps (plus de 30s), est-ce que quelqu'un saurait comment améliorer mon code qui est le suivant ?
Sub imprimerfeuille()
Dim numerocol As Integer
Dim numerolig As Long
Dim Derlig As Long
Dim Cell As Range
Derlig = Split(ActiveSheet.UsedRange.Address, "$")(4)
numerocol = 2
For numerolig = 5 To Derlig
If Cells(numerolig, numerocol) = "0" Or IsEmpty(Cells(numerolig, numerocol)) Then
If Not Application.CountA(Cells(numerolig, numerocol).EntireRow) = 0 And Cells(numerolig, 3).Font.Bold = False And Not Cells(numerolig, 3).Interior.ColorIndex = 2 Then
Cells(numerolig, numerocol).EntireRow.Hidden = True
End If
End If
Next
ActiveSheet.PrintOut
With ActiveSheet.Cells
.EntireRow.Hidden = False
End With
End Sub
Merci d'avance, bonne journée!
Flore
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Optimisation code vba
- Optimisation pc - Accueil - Utilitaires
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
Merci encore,
Flore
J'ai une dernière question si vous avez le temps de me répondre, je voudrais maintenant créer un bouton "imprimer" dans la page d'entête qui imprime toutes les feuilles du classeur de la même façon que précédemment c'est-à-dire en supprimant toutes les lignes inutiles à chaque fois.
J'ai créé le code ci-dessous :
Sub toutimprimer()
Dim wks As Worksheet
If Worksheets("feuille1").Visible = True Then
Worksheets("feuille1").Activate
Call imprimerfeuille
ElseIf Worksheets("feuille2").Visible = True Then
Worksheets("feuille2").Activate
Call imprimerfeuille
End If
Worksheets("feuille3").Activate
Call imprimerfeuille
Worksheets("feuille3").Activate
Call imprimerfeuille
End Sub
Seulement encore une fois c'est très long et excel se place sur chaque feuille pour exécuter le code, est-il possible d'améliorer cela ?
Merci, bonne journée,
Flore
C'est intéressant de l'utiliser lorsque la macro affecte l'affichage comme c'est le cas ici, pour un grand nombre d’itérations.
Sinon, la macro imprimerfeuille est assez simple, on ne peut pas l'améliorer significativement.
L'environnement de travail peut aussi influer sur les temps d'exécution (taille du fichier, capacités de la machine, travail en réseau...)
Bonne continuation