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

probleme de code vba

  • Initiateur de la discussion Initiateur de la discussion pasquetp
  • Date de début Date de début

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 !

pasquetp

XLDnaute Occasionnel
Bonjour,

je tente de faire apparaitre une barre de progression mais celle ci s’interrompt des le début.

T = Timer
For I = 1 To Max
UserForm1.ProgressBar1.Value = I
UserForm1.Label1.Caption = "In Progress" & Chr(10) & Format(I / Max, "0%")
DoEvents

je ne comprends pas du tout pourquoi il stoppe.

Pouvez vous m'aider?

Je vous remercie
 

Pièces jointes

Re : probleme de code vba

Bonjour

la propriété Max de la ProgressBar est à 10 000. La variable Max utilisée dans la boucle est initialisée à 106.

106 ne représente donc qu'un infime espace sur la progressbar et n'est pas visible

Rajouter avant la boucle For I...:

Code:
UserForm1.ProgressBar1.Max = Max

A+

edit:

Eviter d'utiliser comme nom de variable des noms réservés Vba (comme Max...). Transformer en utilisant par exemple MonMax
 
Dernière édition:
Re : probleme de code vba

Bonsoir.

Laissez moi vous proposer ma barre d'avancement.
Récupérez l'UfBarAv et le module BarreAvancement. Au début de la Sub formater :
VB:
Max = 106
Tâche "Formater", Max, "opé"
For I = 1 To Max
Tout à la fin :
VB:
Call OùÇaEnEst: Next I
J'ai essayé mais le fichier fait plus d'1 Mo après ça, et j'ai la flemme de le compresser.
 

Pièces jointes

Re : probleme de code vba

Re

je reviens vers vous suite a quelques test

j'ai testé chacune des 2 méthodes

J'ai quelques observations:

methode a PAF: fait en 17 secondes

methode a Dranreb: fait en 3 minutes environ (compte a rebour inclus ce qui est pas mal du tout)

----------

sans les barres de progression,la macro se fait en moins d'1 seconde.

par consequent, bien que elles marchent techniquement, elles sont contreproductives en particulier si j'ai des milliers de lignes et non 106 .

auriez vous une idee pour que le temps en plus pour appliquer la barre de progression soit le + court possible?

Merci par avance
 
Re : probleme de code vba

Bonsoir à tous

pasquetp
Tu as répondu toi-même à ta question, non ? 😉
sans les barres de progression,la macro se fait en moins d'1 seconde.

NB: Pourquoi avoir créer un second fil de discussion ??
Un simple up dans le premier suffisait, non ?
 
Dernière édition:
Re : probleme de code vba

merci de ta reponse

en effet en moins d'1 seconde mais pour 106 lignes

la barre de progression deviendrait utile si j'ai des ,illiers de ligne

si vous avez une idee pour que la macro ne perde pas trop de sa vitesse, je suis preneur
 
Re : probleme de code vba

le msg box sert en effet a prevenir du resultat

ce qui m'interesse cest l'utilite d'une barre de progression: avoir une idee de la vitesse et surtout duree du traitement
 
Re : probleme de code vba

je viens de trouver une parade

voici le fichier

un seul souci: le pourcentage saute

auriez vous une idee?
 

Pièces jointes

Re : probleme de code vba

Re

[avis personnel]
Bof. Les goûts et les couleurs.
Une barre de progression ne sert pas à grand chose.
Juste à flatter l’œil si elle est originale. 😉
[/avis personnel]

Tu peux peut-être passer par Application.StatusBar
(à voir )
Code:
Sub StatusBar()
 'code original de : Jacob Hilderbrand
    Dim x               As Integer
    Dim MyTimer         As Double
     'Change this loop as needed.
    For x = 1 To 250
         
         'Dummy Loop here just to waste time.
         'Replace this loop with your actual code.
        MyTimer = Timer
        Do
        Loop While Timer - MyTimer < 0.03
        Application.StatusBar = "Progression: " & x & " de 250: " & Format(x / 250, "0.00%")
        DoEvents
    Next x
    Application.StatusBar = False
End Sub
 
Re : probleme de code vba

Veuillez revérifier si tout est exécuté dans les mêmes conditions. Je tiens à m'inscrire en faux de ce qui a été dit. Ma barre de progression est quasiment sans incidence sur la durée d'exécution. La procédure OùÇaEnEst n'entraine un traitement un tant soit peu conséquent que tous les quarts de seconde. Le reste du temps elle rend la main presque aussitôt, après exécution de moins d'une dizaine d'instructions très rapides. Je m'en sers pour écrire des pixels dans des fichiers bmp. D'ailleurs le pixel est l'unité prise par défaut dans la barre rouge d'activité quand on n'en précise pas d'autre.
 
Dernière édition:
Re : probleme de code vba

re

je viens de trouver un model qui a l'air sympa

la barre ne défile pas malheuresement.

voici le fichier

merci a tous
 

Pièces jointes

Re : probleme de code vba

Dites moi, avant de songer à mettre une barre d'avancement, pourquoi avez vous commencé par écrire le code exprès, pour qu'il soit le plus lent possible ?… Parce que c'est pas possible autrement, vous avez dû le faire exprès ! Vous n'avez jamais entendu parler des tableaux de Variant ? Dans 95% des codes que je propose, je n'utilise que 2 fois Range, une fois au début et une autre fois à la fin. Partez du principe, même si ce n'est qu'un principe de raisonnement pour la conception du code, que sa durée d'exécution est seulement proportionnelle au nombre de fois que vous y invoquez Range ou Cells, et nullement au nombre de valeurs de cellules transférées à chacune de ses utilisations. Donc 100000 fois Range pour une seule cellule à chaque fois serait 100000 fois plus long en temps que 1 seul pour un tableau de 100000 valeurs de cellules. Quand aux accès au valeurs individuelle du tableau préalablement chargé en mémoire, il est pratiquement négligeable tant il est rapide.
 
- 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

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
821
Réponses
33
Affichages
3 K
Réponses
8
Affichages
1 K
Réponses
1
Affichages
908
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…