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

IHM Discussion :

Créez un formulaire d'attente pour les longs traitements [Tutoriel]


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut Créez un formulaire d'attente pour les longs traitements
    Bonjour à tous,

    Vous pouvez sur cette discussion commenter l'article suivant :
    Créez un formulaire d'attente pour les longs traitements

    Aperçu :


    Commentaires, critiques, remerciement, ... Tout est bienvenu si c'est constructif.

    Pensez également à ajouter une note. ("Noter la discussion" en haut à droite)
    Votre avis nous intéresse.


  2. #2
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Tout simplement excellent !

    J'ai particulièrement apprécié le fait que ce tutoriel s'adresse à un large public.

    Une première partie qui permet de mettre rapidement en oeuvre une barre de progression avec un minimum de connaissances, puis une très belle démonstration pratique de l'utilisation d'un module de classe pour faciliter l'utilisation du formulaire et enfin ajouter l'animation.

    On en redemande !

    Domi2

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 132
    Par défaut excellent tuto
    Pour l'instant je me contente de la barre d'avancement standard syscmd mais peut-être qu'un jour...

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut

    je viens de m'y soumettre à mon tour, pour combler un peu les périodes d'attente de mes utilisateurs.
    Un vrai plaisir à lire, super simple à comprendre et à appliquer, et que dire de la satisfaction des utilisateurs
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut


    Bravo
    J'ai beaucoup apprécié :
    • La description des propriétés utilisées
    • La simplicité des explications
    • Les illustrations documentées


    On ne peut que le conseiller à tout développeur
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 631
    Billets dans le blog
    67
    Par défaut


    Même commentaire : Simple et excellent.

    Je me posais juste une question:

    Je me mets à la place d'un utilisateur lambda...
    et j'espère ne pas compliquer les choses car j'ai bien vu dans ton article que tu précises pour le test que tu te fixe un intervalle de mise à jour (500 itérations).

    Pour un utilisateur quelconque qui souhaite utiliser ce formulaire, l'idée c'est donc d'adapter les choses en fonction du nombre d'itérations (lNbIterations) ici égales à 10000.

    Dans ce cas si on souhaite des pas (incréments) de 5% (1/20) de la barre de progression, 1 incrément représentera donc 500 itérations sur un total de 10000 itérations (500/10000=1/20).

    Donc, on "incrémente" la barre si (lCptIteration1 modulo 500 = 0)

    Si maintenant on a 20000 itérations (lNbIterations=20000) alors on fera modulo 1000 (1000/20000=1/20) si on souhaite gardé des pas de 5%.

    C'est un peu l'idée non

    PS: on peut peut-être faire la même chose sur le parcours d'un recordset avec la propriété recordset.PercentPosition.
    Bonnes fêtes à toutes et tous !

    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Citation Envoyé par User Voir le message
    Si maintenant on a 20000 itérations (lNbIterations=20000) alors on fera modulo 1000 (1000/20000=1/20) si on souhaite gardé des pas de 5%.

    C'est un peu l'idée non
    Oui c'est un peu l'idée.

    Il faut trouver le bon pas d'affichage pour :
    - ne pas raffraichir inutilement l'écran toutes les 2 millisecondes pour ne pas ralentir le traitement
    - raffraichir quand même assez fréquemment pour ne pas avoir d'impression d'application plantée

    Sur des traitements courts, on peut envisager de masquer la barre de progression et se contenter d'un formulaire fixe.

    Citation Envoyé par User Voir le message
    PS: on peut peut-être faire la même chose sur le parcours d'un recordset avec la propriété recordset.PercentPosition.
    Oui oui PrecentPosition peut être utile pour un recordset.
    Je parlerai des recordsets dans le deuxième épisode de l'article.

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour à tous,

    je profite de cette discussion pour vous soumettre un code qui semble permettre de simuluer du multitâche.
    Bref, ça semble marcher en testant
    Sous Access 2000, Windows XP SP3 (Pentium4 2.6 Ghz 51 cache) 640 Mo de ram.

    Les fonctions à éxécuter doivent obéir au même protocole (prototypage et séquence de traitement)
    Pour exemple; la boucle d'Arkham devient
    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
    Public Function Arkham (Code As Integer, ByRef lParam as variant) As Variant
     Dim lCptIteration2 As Long, lString As String
     Select Case Code
      Case acLBInitialize
       Arkham = True 
      Case acLBOpen
       lParam = 1
       Arkham = True
      Case acLBGetPrompt
       Arkham = "Veuillez patienter durant le traitement"
      Case acLBGetRowCount
       Arkham = 10000
      Case acLBGetValue
       For lCptIteration2 = 1 To 1000
         lString=Chr(lParam + lCptIteration2) mod 256)
       Next lCptIteration2
       lParam = lParam + 1
       Arkham = lParam
      Case acLBEnd
       Arkham = (lParam >= 10000)
     End Select
    End function
    j'ai oublié de préciser, pour lancer plusieurs traitements cliquer plusieurs fois sur le bouton MultiThread du formulaire FormTest, le code lancera le nombre de traitements indiqué dans la textbox.
    Puisqu'il s'agît d'une ébauche de travail ne lancer pas plus de 5 traitements.

  9. #9
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonsoir,

    Voilà un aperçu de ce que j'obtiens en cliquant 4 fois le bouton MultiThread.
    1 seul traitement est lancé à chaque click.

  10. #10
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    salut Arkham46

    je viens de lire ton tutoriel sur la création d'un formulaire d'attente.
    Si j'ai bien compris la procéduure decrite est reserve uniquement en cas de boucle.
    Comment faitre si mon formulaire ne contient pas de boucle mais uniquement des données ( graphique dynamique qui indique un nbre de produits tous les 10 minutes).
    Puis je appliquer ton programme ?

  11. #11
    Expert confirmé
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Par défaut
    Bonjour,

    L’intérêt de ce formulaire est le traitement de données dans ton cas c'est un soucis de timer. Pourquoi mettre un form d'attente ?

    @+

  12. #12
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Mon formulaire est parametré avec une date début et une date fin.
    A l'ouverture du formulaire, une boite de dialogue apparait pour inscrire une date début et une date fin.
    Lorsque les dates ont été mentionnées, un sablier apparait puis disparait laissant croire à l'utilisateur que le programme à buguer.
    Je souhaitais donc inserer une petite application ( type formulaire d'attente ) pour avertir l'utilisateur que le programme est en cours et qu'il patiente.
    Si tu as une autre idée que le formulaire d'attente, je suis preneur..

  13. #13
    Invité de passage
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Par défaut
    Félicitation , grâce à vous j'ai enfin réussi à animer mon code pendant le traitement car il faut avouer que 8 minutes à attendre devant un ecran ou rien ne se passe sans savoir ou es ce qu'on en est, c'est long ^^.

    Encore merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/10/2013, 01h05
  2. Afficher une fenetre d'attente pendant un long traitement (Swing)
    Par JavaBienOuMal dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 15/06/2007, 15h13
  3. Utiliser les threads pour les traitements long
    Par rach375 dans le forum Websphere
    Réponses: 3
    Dernier message: 14/11/2006, 13h08
  4. [PHP-JS] PHP et JavaScript pour les formulaires
    Par Ylias dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 26/07/2006, 23h47
  5. Norme JavaScript pour les formulaire
    Par rdams dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/09/2005, 15h14

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