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 en fonction du temps - Dans le même temps une autre macro s'éxécute [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Points : 63
    Points
    63
    Par défaut Barre de progression en fonction du temps - Dans le même temps une autre macro s'éxécute
    Bonjour à tous,
    Vous m'avez toujours été d'une grande aide donc je reviens à vous.

    Je souhaiterai créer une barre de progression (de chargement) lorsque j'ouvre un classeur Excel.
    A l'ouverture de ce classeur, une macro se déclenche et met 7 secondes à se charger.
    Ce que je souhaiterai, c'st que l'utilisateur ne croit pas à un bug mais puisse voir une barre de chargement le temps que la macro s'éxécute.

    J'ai créé ce petit code montrant ce que je veux faire (Voir ci-joint ou ci-dessous)
    Et ce que j'aimerai c'est que lorsque j'affiche ce code, la macro s'exécute en même temps.

    C'est pour ça que je n'ai pas pris les méthodes énoncées sur les autres forums, je ne souhaite pas à avoir à cliquer sur "Activer l'userform" pour que l'appli se lance, je souhaiterai que tout soit automatique dès l'ouverture (donc aucun bouton).

    Voici le code de la macro d'attente que je souhaite obtenir:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Macro_chargement()
     
     
    Range("C7").Interior.ColorIndex = 3
    Range("C7") = 0
    Range("D7").Interior.ColorIndex = 3
    Application.Wait Time + TimeSerial(0, 0, 1)
     
    Range("E7").Interior.ColorIndex = 3
    Range("E7") = 0.2
    Application.Wait Time + TimeSerial(0, 0, 1)
     
    Range("F7").Interior.ColorIndex = 3
    Range("G7").Interior.ColorIndex = 3
    Range("G7") = 0.4
    Application.Wait Time + TimeSerial(0, 0, 1)
     
    Range("H7").Interior.ColorIndex = 3
    Range("I7").Interior.ColorIndex = 3
    Range("I7") = 0.6
    Application.Wait Time + TimeSerial(0, 0, 1)
     
    Range("J7").Interior.ColorIndex = 3
    Range("K7").Interior.ColorIndex = 3
    Range("k7") = 0.8
    Application.Wait Time + TimeSerial(0, 0, 1)
     
    Range("L7").Interior.ColorIndex = 3
    Range("M7").Interior.ColorIndex = 3
    Range("m7") = 1
     
    Application.Wait Time + TimeSerial(0, 0, 1)
    Range("C7:M7") = EmptyCells
     
    Range("C7:M7").Interior.ColorIndex = 0
    End Sub
    Merci par avance de votre aide .
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour, bonjour,

    en retirant les Wait inutiles, quelques secondes de gagnées en perspective !

    Ouvrir un UserForm via sa méthode Show
    Le traitement doit être porté dans le module de l'UserForm comme les nombreux exemples sur ce site et ailleurs.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Points : 63
    Points
    63
    Par défaut
    Ce n'est pas cette macro sur laquelle je veux gagner du temps, je veux afficher celle ci pendant que l'autre s'exécute .

    Et je ne veux pas a avoir à cliquer sur un Userform..
    Je souhaite que dès que le fichier s'ouvre, la barre de progression s'affiche en attendant que ma macro durant 7 secondes se réalise.

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Il faut inclure le traitement directement au sein de l'UserForm !

    Sinon se passer de barre de progression et utiliser la barre d'état pour passer l'information …

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Points : 63
    Points
    63
    Par défaut
    Oui mais même lorsqu'on lance un Userform et qu'il s'affiche automatiquement
    Il est nécessaire de cliquer sur un bouton pour activer son contenu non?
    (Je ne dis pas ça en étant hautain mais car je n'ai pas les compétences pour être sur de moi )

    Je vais regarder avec la barre d'état, ca me parait plus simple en effet (mais beaucoup moins joli ^^)

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    A l'ouverture de ce classeur, une macro se déclenche et met 7 secondes à se charger.
    Plutôt qu'une barre de progression, c'est peut-être et je dis bien peut-être au niveau de la macro d'ouverture qu'il faut agir afin de réduire, éventuellement, le temps d'execution de celle-ci. c'est donc peu-être celle-ci qu'il faut communiquer

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par Alasgard Voir le message
    Oui mais même lorsqu'on lance un Userform et qu'il s'affiche automatiquement
    Il est nécessaire de cliquer sur un bouton pour activer son contenu non?
    Non en l'ouvrant via la méthode Show, le traitement se trouvant dans l'évènement UserForm_Activate

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Points : 63
    Points
    63
    Par défaut
    @casefayere Je pense que tu as raison, je peux peut être gagner une seconde ou 2 en la simplifiant mais elle mettra toujours du temps car elle consiste à rechercher un fichier par rapport à son nom dans un répertoire, de l'ouvrir et de sélectionner une feuille afin de la copier/coller dans une des feuilles de mon classeur actif.

    @Marc-L, je vais essayer, je vous recontacte dès que c'est fait mais vu mon niveau, ce sera pas avant demain ^^

  9. #9
    Invité
    Invité(e)
    Par défaut Bonjour,
    Je te propose une solution Fichier joint.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim i As Long
    For i = 0 To 10
        BarreDefilement.BarreVal i, 10
    Next
    Unload BarreDefilement
    End Sub
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Salut Robert !

    C'est encore plus simple mais pour la démonstration, mettre une valeur supérieure à 1 000
    sinon cela m'étonnerait qu'elle soit visible !

  11. #11
    Invité
    Invité(e)
    Par défaut Bonjour, Marc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long
    For i = 0 To 10000
        BarreDefilement.BarreVal i, 10000
    Next
    il est vrai que dans ce cas de figure le barregraph passe à 2 quand i=146; 3 i=188,4 i=230.
    sauf ajouter l'action en cours dans la barre de statuts difficile même Microsoft paniquerait dans ce cas.
    ou alors un double barreGraph dans le UserForm un pour l'avancement général l'autre pour le détail d'un groupe d'action!!!

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 16
    Points
    16
    Par défaut Barre de progression
    Bonjour,
    J'ai pour ma part un petit dossier que j'avais téléchargé sur un site d'un génie d'excel,mais je ne me rappelle plus son nom?
    Il démarre un Userform qui est alimenté par des calculs. et qui grace à DoEvents laisse travailler la feuille ou le programme s'effectue. Mais je ne sais pas comment le joindre ?. Il n'y aurait plus qu'a l'adapter. quitte à utiliser un UF ou 1 message box qui durant quelques secondes afficherait un message . Le mien étant patience, patience patience dans l'azur ou chaque atome de silence porte l'assurance d'un fruit mur (Paul Valery).
    LE UserForm est de couleur noire, la barre de progression est constitué d'un Label de couleur rouge, qui à l'ouverture est Label1.width = 10 puis 20 puis 30 puis 40 etc créant la progression le reste est une question de compteur de temps pour la progression et DoEvents pour libérer le travail de fond.
    Voila avec humilité mon approche du problème
    Au plaisir
    Patrick
    Nom : BarreProgression.png
Affichages : 4505
Taille : 73,2 KoNom : UserFormBarreProg.png
Affichages : 4701
Taille : 39,7 KoNom : UserForm.png
Affichages : 4191
Taille : 12,8 KoNom : BarreProgression.png
Affichages : 4505
Taille : 73,2 KoNom : UserFormBarreProg.png
Affichages : 4701
Taille : 39,7 KoNom : UserForm.png
Affichages : 4191
Taille : 12,8 Ko

  13. #13
    Invité
    Invité(e)
    Par défaut
    Marc j'avais pas vraiment percuté à ta remarque. je joint une nouvelle version avec un boucle plus conséquente et un bouton de test dans la feuille excel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim i As Long
    For i = 0 To 65535
        BarreDefilement.BarreVal i, 65535
        ActiveSheet.Cells(i + 1, 1).Select
        ActiveSheet.Cells(i + 1, 1) = "Valeur de i:= " & i
     
    Next
    ActiveSheet.Columns("A:A").EntireColumn.AutoFit
    Unload BarreDefilement
    End Sub
    Fichiers attachés Fichiers attachés

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 90
    Points : 63
    Points
    63
    Par défaut
    Merci pour votre aide,
    j'ai réussi à l'aide de vos codes à faire quelque chose de correct . Je ne peux pas vous le montrer tout de suite (petit soucis avec mon PC mais je vous en ferai part d'ici la semaine pro).

    J'ai créé un userform avec une barre de progression qui avance au fur à mesure du temps (elle dure 7 secondes). J'ai placé tout ceci dans Userform_Activate


    J'affiche ce Userform en non modal :
    Et mon code se réalise en parallèle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Mon code()
    DIm ...
    Userform.Show False
    Code
    Code
    Code
    End Sub
    Merci à tous .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/08/2012, 15h44
  2. Réponses: 5
    Dernier message: 22/04/2009, 09h24
  3. Réponses: 38
    Dernier message: 26/09/2008, 17h46
  4. Plusieurs fonctions qui s'exécutent au même temps
    Par saidus dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 07/07/2008, 03h42
  5. [C#] Faire un INSERT en même temps dans 2 bases differentes
    Par Pingva dans le forum Accès aux données
    Réponses: 8
    Dernier message: 09/09/2004, 12h07

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