IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Barre de progression avec macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Consultant
    Inscrit en
    Juin 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2019
    Messages : 39
    Par défaut Barre de progression avec macro
    Bonjour,

    J'ai un fichier Excel monté en VBA avec tableaux croisés dynamiques et autres.

    J'ai créé des boutons (sauvegarde, fermer et Mise à jour du document.)

    La mise à jour est particulièrement longue. J'aimerais y attacher une barre de progression (%) afin de suivre l'évolution de la mise à jour.

    Après des heures de recherches le plus près que j'ai pu réaliser est d'avoir l'apparition de la boîte de dialogue, mais pas de défilement ou encore avoir un défilement et par la suite la mise à jour. Mais rien qui puisse se faire simultanément.

    Des solutions?

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Sans plus d'explications sur la façon dont le code se déroule, il est malaisé de proposer une solution. L'affichage de la progression va encore plus ralentir l'exécution, à mon avis. De plus, Excel n'est pas nativement équipé pour cela.


    Perso, je verrais bien l'utilisation de la barre de statut, mais de toute façon, la possibilité de rendre la main pour l'affichage va dépendre de ce qui est exécuté. Si la mise à jour consiste à récupérer des données externes comme une requête sql ou Access, je ne vois pas comment on pourrait afficher la progression de l'élaboration du Recordset dans Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Update()
      On Error GoTo Catch:
     
      Application.StatusBar = "Traitement 1 en cours"
      Traitement1
      Application.StatusBar = "Traitement 2 en cours"
      Traitement2
     
    Catch:
      Application.StatusBar = False
    End Sub

    On pourrait utiliser cela au sein d'une boucle, par exemple comme ceci. Bien entendu, la procédure Treatment est donnée ici uniquement pour donner une idée de progression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Update()
      Dim i As Long
     
      On Error GoTo Catch
     
      For i = 1 To 47
        Application.StatusBar = Format(i / 47, "0.00%")
        Treatment
      Next
     
    Catch:
      Application.StatusBar = False
     
    End Sub
     
    Sub Treatment()
      Dim i As Long
      Dim CountOf As Long
     
      CountOf = Int((1000000000 - 500000000 + 1) * Rnd + 500000)
      For i = 1 To CountOf
      Next
    End Sub

    Et si on veut vraiment s'amuser avec une barre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Update()
      Dim i As Long
     
      On Error GoTo Catch
     
      For i = 1 To 47
        Application.StatusBar = String(i / 47 * 100, "|") & String(100 - (i / 47 * 100), " ") & "|"
        Treatment
      Next
     
    Catch:
      Application.StatusBar = False
     
    End Sub
    Nom : 2020-10-30_092203.png
Affichages : 323
Taille : 3,1 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Barre de progression avec pourcentage, a quoi correspond le 100% ?
    Par pyriame dans le forum Développement Web avec .NET
    Réponses: 6
    Dernier message: 20/12/2015, 20h49
  2. [PowerShell] Barre de progression avec l'utilisation d'une cmdlet
    Par arnaudperfect dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 15/04/2015, 14h24
  3. [WD-2002] Créer Barre Outils Perso avec Macros
    Par vaucluseimmo dans le forum VBA Word
    Réponses: 7
    Dernier message: 27/11/2009, 11h08
  4. BARRE DE PROGRESSION AVEC CODE PL/sql
    Par Bayoro dans le forum PL/SQL
    Réponses: 1
    Dernier message: 19/10/2007, 14h58
  5. Créer une barre de progression avec "stop/pause"
    Par davos56 dans le forum Delphi
    Réponses: 7
    Dernier message: 22/05/2007, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo