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
- Code ascii - Guide
- Optimisation pc - Accueil - Utilitaires
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - 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