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

Affichage des résultats du sondage: Cette proposition de code

Votants
2. Vous ne pouvez pas participer à ce sondage.
  • Est correcte et pourra m'aider

    2 100,00%
  • Est incorrecte mais peux être amélioré

    0 0%
  • N'a aucun intérêt pour moi

    0 0%
Sondage à choix multiple
Macros et VBA Excel Discussion :

Progress barre pendant recalcule


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut Progress barre pendant recalcule
    Bonjour à Tous

    Dans le cadre de mes propres recherches j'ai eu besoin de faire patienter l'utilisateur pendant le "Recalcule" d'excel après l'avoir passé sur ordre pour de gros fichier.

    Mais comme vous le savez peux être et comme j'ai pu m'en rendre compte dans mes différentes recherches infructueuses il est impossible d'éffectuer une "action" pendant cette phase puisque excel s'arrete pour redonner la main à la machine. Donc impossible de réaliser une progress barre pendant ce temps.

    Je me suis finalement tournée vers une option qui fonctionne et que je vous propose, si elle peux rendre service et ou être amélioré, d'ou le vote.

    Bien évidement le code qui suit n'est parlant que sur une grande quantité de calcule.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Recalcule()
     
    'Appel un autre module qui ouvre une page web contenant un gif animé de barre de chargement
     
    Call Gif
     
    'Lance le calcule de la feuille active ou d'une autre feuille ou zone, au choix...
    ActiveSheet.Calculate
     
    End Sub
    Le Modul Gif qui ouvre la feuille internet, bien évidement vous devez crée cette page html...

    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
     
    Sub Gif()
    Dim MyIE As InternetExplorer
    Set MyIE = New InternetExplorer
    MyIE.Navigate "C:\Dossier_contenant la page\ProgressBar.html"
    MyIE.AddressBar = False
    MyIE.Height = 50
    MyIE.Width = 280
    MyIE.MenuBar = False
    MyIE.Toolbar = False
    MyIE.Left = 600
    MyIE.Top = 400
    MyIE.Resizable = False
    MyIE.Visible = True
    End Sub
    La feuille html affiche le gif animé et pour le fermer en fin de calcule, le code s'execute sur l'évènement Calculate de la feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Worksheet_Calculate()
    Dim IE As New InternetExplorer
        Dim winShell As New ShellWindows
        Dim maPageHtml As HTMLDocument
        For Each IE In winShell
            If IE.LocationURL = "file:///C:\Dossier_contenant la page\ProgressBar.html" Then
                IE.Quit
                Set IE = Nothing
            End If
        Next IE
    Set IE = Nothing
    End Sub
    Je vous donne en piece jointe le petit gif animé, mais bon on en trouve de toute sorte sur le net.

    En espérant avoir aider certain...
    Images attachées Images attachées  

  2. #2
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Merci beaucoup, je comptais utiliser prochainement un progress barre! J'ai plus besoin de chercher sur notre ami Google!

    Cdt,

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 39
    Par défaut
    Bonjour Codyco,
    Tu proposes, à mon sens, une bonne solution alternative.
    Tu parles de "gros fichiers". A partir de combien de ligne (dans le tableau) parles tu de gros fichier?
    Pour information, certains de mes collègues qui n'y connaissent pas grand chose, un fichier Excel avec 50 lignes de datas et un bout de VBA, c'est énorme...

  4. #4
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut
    Merci

    Quand je parles de gros fichier en ce qui me concerne c'est un minimum de 2500 lignes sur plus de 60 colonnes...mais après chacun à son interprétation...

  5. #5
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 39
    Par défaut
    Citation Envoyé par CODYCO Voir le message
    Merci

    Quand je parles de gros fichier en ce qui me concerne c'est un minimum de 2500 lignes sur plus de 60 colonnes...mais après chacun à son interprétation...
    Je suis d'accord .
    Ton code a l'air vraiment cool. Je le testerai ce soir @ home.

  6. #6
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut
    Bonjour,

    La macro que je developpe utilise une progressbar pendant un enchainement d'importation de fichier. Donc on peut faire des progress bar pendant que la machine travaille, à moins que je n'ai pas compris ton problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'initialisation de la progress bar
    Private Sub UserForm_Initialize()
        Me.Height = 100
        Me.Width = 215
        FrameProgress.Top = 19.5
        FrameProgress.Height = 28
        FrameProgress.Width = 205
        FrameProgress.Left = 3
        LabelProgress.Height = 13
        LabelProgress.Width = 30
        LabelProgress.Top = 5
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     'Affichage de la barre de progression
                        PctDone = (J / colValues.Count)
                        Call UpdateProgress(PctDone, départ)
                        ProgressBar.Show 0
    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
    'Mise a jour de la barre de progression d'importation de fichier
    Sub UpdateProgress(Pct, départ)
        ARRIVÉE = GetTickCount&
        durée = ARRIVÉE - départ
        mn = Int(durée / 1000 / 60)
        sd = Int((durée / 1000) - (mn * 60))
        Ms = durée - (sd * 1000) - (mn * 1000 * 60)
        Tps = mn & ":" & sd & ":" & Right("000" & Ms, 3)
     
        With ProgressBar
            .FrameProgress.Caption = Format(Pct, "0%")
            .LabelProgress.Width = Pct * (.FrameProgress.Width - 15)
            .LabelTemp.Caption = Tps & " sec"
            .Repaint
        End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Fonction API qui gere les timers
    Public Declare Function GetTickCount& Lib "kernel32" ()
    Je te prie de bien vouloir regarder ce code, car il me semble qu'il répond à ton problème.

  7. #7
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut
    Salut je suis ok avec on peu faire des progress barre j'en utilise égellement mais tu n'a effectivement pas identifié le probleme, sur une grande quantité de formule qu'ils faut recalculé "sur ordre", pendant que le système recalcule essai donc de faire tournée ta progress barre...

    Je reste bien entendu ouvers à toute solution plus éfficace, permettant un code direct en VBA...

Discussions similaires

  1. [XL-2003] Progress barre pendant recalcul
    Par CODYCO dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 03/05/2012, 17h12
  2. [C#] Afficher une progress bar pendant une tâche de fond
    Par therock dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/06/2007, 09h33
  3. Progress bar pendant un calcul
    Par zapibranigan dans le forum C++
    Réponses: 2
    Dernier message: 09/10/2006, 14h50
  4. Progress Barre & UpdateQuery
    Par Lux interior dans le forum XMLRAD
    Réponses: 13
    Dernier message: 18/02/2005, 19h36

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