Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code trop lent???

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Airone784

XLDnaute Occasionnel
Bonjour à tous,

Dans une UF, j'ai ce code qui s'éxecute lorsque je clique un commandbutton:

Code:
Private Sub CommandButton1_Click()
'Bouton créer

Application.ScreenUpdating = False

'Copie du nom de la course
Sheets("1ère").Range("A1") = Me.TextBox1
Sheets("Engagés").Range("A1") = Me.TextBox1
Sheets("Scratch").Range("A1") = "CLASSEMENT DU " & Me.TextBox1
Sheets("Clt points").Range("A1") = Me.TextBox1
Sheets("Classement_par_équipes").Range("A1") = Me.TextBox1
Sheets("Primes").Range("A1") = Me.TextBox1


'Copie de la date de l'épreuve
Sheets("Engagés").Range("A3") = CDate(Me.DTPDateDebut)
Sheets("Scratch").Range("B2") = CDate(Me.DTPDateDebut)
Sheets("1ère").Range("B3") = CDate(Me.DTPDateDebut)

'Copie du type de l'épreuve
Sheets("Scratch").Range("D2") = Me.TextBox2

'Copie des catégories de l'épreuve
Sheets("Scratch").Range("G2") = Me.TextBox3
Sheets("1ère").Range("G3") = Me.TextBox3

'Copie de toutes les infos sur la feuille d'émargement
Sheets("feuille_émargement").Range("A1") = Me.TextBox1 & Chr(32) & Chr(32) & Chr(32) _
& UCase(Format(CDate(Me.DTPDateDebut), "d mmmm yyyy")) & Chr(32) & Chr(32) & Chr(32) & "LISTE D'EMARGEMENT"

Unload Me
Application.ScreenUpdating = True
end if

Ce que je ne comprends pas c'est pourquoi mon code est assez lent à s’exécuter. Environ 30 secondes. Alors que le code ne me semble pas très compliqué...

Du fait de la lenteur j'aimerais intégrer ce code qu ej'ai récupéré sur le net :

Code:
Dim i As Long
For i = 1 To 1000000
' mon action

If i Mod 10000 = 0 Then
Application.StatusBar = Int(i / 10000) & "% effectués"
End If
Next i
Application.StatusBar = False

Comment faire pour intégrer ce code pour que mon pourcentage évolue au fur et à mesure que mes lignes de codes sont exécutées????

Merci pour le coup de main 🙂
 
Re : Code trop lent???

Bonsoir
Vous auriez probablement surtout intérêt à mettre Application.Calculation à xlCalculationManual au début de la procédure et à le remettre à xlCalculationAutomatic à la fin.
Cordialement.
 
Re : Code trop lent???

Ce n'est pas normal que ce soit si long pour un code qui descend tout droit (sans boucle).
Déroulez en pas à pas pour voir quelles sont les instructions qui prennent du temps.
Avez vous des Worksheet_Change un peu partout faisant de grosses opérations. Si oui, peut on ne pas les exécuter ?
Si c'est le cas ajoutez encore Application.EnableEvents = False au début et remettez le à True à la fin.
À+
 
Re : Code trop lent???

Ok avec le enablelEvents ca va bien plus vite!

Merci beaucoup.

Je reviens à la 2ème partie de ma question du coup. Y a-t-il moyen de compter le nombre de lignes à exécuter dans un code, que VBA compte en quelques sorte le nombre de ligne qu'il lui reste à exécuter dans la procédure. Ainsi, je pourrais avoir un % d'avancement dans la statusbar comme je l'évoquais plus haut???


Merci encore.
 
Re : Code trop lent???

Bonjour.
Je reste à votre disposition pour des explications à ce sujet. L'avez vous déjà mis en oeuvre ? Simple, ça non ?
Enfin c'est sûr qu'un minimum de commentaires serait le bienvenu je vais y rajouter:

VB:
Rem. Tâche([Texte],[NbrPrévus],[Unités])
'    Texte     String facultatif. Courte designation de la tâche. Si elle est précisée et
'              autre que "", elle est simplement affectée à une variable Public NomTâche.
'    NbrPrévus Long Facultatif. Nombre d'appels prévus de la procédure OùÇaEnEst.
'              Si < 2 ou non précisé, UfBarrav n'est pas affiché mais un message est émis
'              sur la barre d'état. Si NbrPrévus = 1: "NomTâche en cours…" y reste affiché,
'              si NbrPrévu <= 0 ou non précisé: "NomTâche lancé." affiché pendant 5 secondes.
'    Unités    String facultatif. Mot affiché dans la barre d'activité "n Unités/sec."
'              Par défaut "pixels" est assumé.
VB:
Rem. OùÇaEnEst
'     Aucun paramètre. Actualise l'affichage dans UfBarAv si au moins un quart de seconde
'     s'est écoulé depuis le dernier appel. S'il est appelé une fois de plus que NbrPrévus
'     spécifié à Tâche, un débogage du code est imposé.
Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
924
Réponses
33
Affichages
3 K
M
Réponses
15
Affichages
2 K
  • Question Question
Microsoft 365 îPb code VBA
Réponses
1
Affichages
671
M
  • Question Question
Réponses
11
Affichages
991
madoupa
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…