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 :

Barre de progression ou attente utilisateur sans boucle


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 33
    Points
    33
    Par défaut Barre de progression ou attente utilisateur sans boucle
    Bonjour à tous,

    J'ai parcouru le forum dans tous les sens concernant les barres de progression mais je ne trouve pas bien mes petits ou alors c'est que je ne saisie pas tout et c'est possible.
    Il semblerait qu'il faille toujours une boucle mais je n'en ai pas

    Dans ma BDD je lance le code suivant via un bouton en passant par une procédure événementielle sur clic :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Private Sub Bouton1_Click()
    'ouverture table chemin et import des fichiers excel
    Dim chemin, basebua As Variant
    Dim bds, esp, chsql, param
    Dim SQL1 As String
    Dim nmcl As Variant
     
    SQL1 = "Delete * From T_BUA"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From Nmcl"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R02_MRPRM_FAB"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R03_MFCONF_FAB"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R04_MFGARN_FAB"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R05_MRPRM_TRANSF"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R06_MFCONF_TRANSF"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R07_MFGARN_TRANSF"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R09_MTPRM_ACH"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R10_MRAFF_FAB"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R11_MFCONF_FAB"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R12_MAPCHM_FAB"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R13_MAPCM_ACH"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R14_MASST_ACH"
    DoCmd.RunSQL SQL1
     
    SQL1 = "Delete * From R15_MAPCM_ACH"
    DoCmd.RunSQL SQL1
     
    'Mise à jour de la table BUA
    Set bds = CurrentDb
    Set esp = DBEngine.Workspaces(0)
    chsql = "SELECT * FROM [T_Fichier]"
     
    Set param = bds.OpenRecordset(chsql)
             basebua = Trim$(param.EMPL_Fichier)
     
    DoCmd.TransferSpreadsheet acImport, , "T_BUA", basebua, True
     
    'Mise à jour de la table des nomenclatures
    Set bds = CurrentDb
    Set esp = DBEngine.Workspaces(0)
    chsql = "SELECT * FROM [T_Fichier]"
     
    Set param = bds.OpenRecordset(chsql)
             nmcl = Trim$(param.nmcl)
     
    DoCmd.TransferSpreadsheet acImport, , "Nmcl", nmcl, True
     
    'FAIT
    SQL1 = "INSERT INTO R02_MRPRM_FAB SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Not Like 'L*' AND (GROUPE Like 'MRPRM*' Or GROUPE Like 'IF100') AND CODE_SOURCE = '1' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R03_MFCONF_FAB SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Not Like 'L*' AND (GROUPE Like 'MFCONF' or GROUPE like 'MFLOT') AND CODE_SOURCE = '1' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R04_MFGARN_FAB SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Not Like 'L*' AND GROUPE Like 'MFGARN' AND CODE_SOURCE = '1' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R05_MRPRM_TRANSF SELECT T_BUA.* FROM T_BUA WHERE  INV_ITEM_ID Not Like 'L*' AND (GROUPE Like 'MRPRM*' or GROUPE Like 'IF100') AND CODE_SOURCE = '2' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R06_MFCONF_TRANSF SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Not Like 'L*' AND (GROUPE Like 'MFCONF' or GROUPE like 'MFLOT') AND CODE_SOURCE = '2' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R07_MFGARN_TRANSF SELECT T_BUA.* FROM T_BUA WHERE  INV_ITEM_ID Not Like 'L*' AND GROUPE Like 'MFGARN' AND CODE_SOURCE = '2' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R09_MTPRM_ACH SELECT T_BUA.* FROM T_BUA WHERE  INV_ITEM_ID Not Like 'L*' AND (GROUPE Like 'MTPRM*' or GROUPE like 'IT100') ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R10_MRAFF_FAB SELECT T_BUA.* FROM T_BUA WHERE (GROUPE Like 'MRAFF' or GROUPE like 'MRPRES' or GROUPE like 'MRWAG') ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R11_MFCONF_FAB SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Like 'L*' AND GROUPE Not Like 'MRAFF' AND GROUPE Not like 'MRWAG' AND GROUPE Not like 'MRPRES' AND GROUPE not Like 'MASST' AND GROUPE Not Like 'MAPCHM' AND GROUPE Not like 'MAPCM' AND GROUPE Not Like '*100' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R12_MAPCHM_FAB SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Like 'L*' AND GROUPE Like 'MAPCHM' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R13_MAPCM_ACH SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Like 'L*' AND (GROUPE Like 'MAPCM' or GROUPE like 'CA100' or GROUPE like 'IA100') ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R14_MASST_ACH SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Like 'L*' AND GROUPE Like 'MASST' ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
    'FAIT
    SQL1 = "INSERT INTO R15_MAPCM_ACH SELECT T_BUA.* FROM T_BUA WHERE INV_ITEM_ID Not Like 'L*' AND (GROUPE Like 'MAPC*' or GROUPE like 'IA100' or GROUPE like 'CA100') ORDER BY T_BUA.INV_ITEM_ID"
    DoCmd.RunSQL SQL1
     
    DoCmd.RunMacro "M_maj_Table_liste_article"
    DoCmd.RunMacro "M_maj fichiers xls"
    DoCmd.RunMacro "Autoexec"
     
     
    MsgBox ("Vous venez de mettre à jour VERA.")
     
    End Sub
    Je souhaiterais ajouter une barre de progression ou un formulaire d'attente qui débuterait dès le début du code et se terminerait juste avant le MsgBox.
    Le tout en bloquant toutes autres actions.

    Merci pour votre aide

  2. #2
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    Il n'est pas nécessaire d'utiliser une boucle. Si tu utilises la méthode de la FAQ (http://access.developpez.com/faq/?pa...IndicProgTrait), tu peux simplement, au fur et à mesure de la progression du traitement, indiquer la valeur de la jauge (de 1 à la valeur maximale que tu auras fixée) et la barre de progression affichera la progression du traitement de ton code. Il te suffit donc d'insérer dans ton code, au début, l'affichage de la barre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SysCmd acSysCmdInitMeter, "Ici le texte à afficher à côté de la jauge", 20 'Définit le texte à afficher et la valeur maximale de la jauge.
    Puis la valeur de la barre qui évolue au fur et à mesure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SysCmd acSysCmdUpdateMeter, 1 'Définit la valeur actuelle de la jauge.
    SysCmd acSysCmdUpdateMeter, 2 
     
    SysCmd acSysCmdUpdateMeter, 20 'La jauge atteint sa valeur maximale à la fin du traitement
    Puis la suppression de la barre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SysCmd acSysCmdRemoveMeter   'Supprime la jauge d'avancement
    En plus, tu peux au début du traitement, remplacer le curseur par le sablier et en fin de procédure, réactiver le curseur normal
    Cordialement.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Ok je suis passé à travers ceci oups

    Bon je l'ai mis en route cela marche parfaitement bien.

    Par contre le soucis que cela engendre c'est que si je n'ai pas la barre de progression afficher en bas je ne vois rien du tout enfin.
    Quand je dis "je" c'est l'utilisateur. Et l'utilisateur ne regarde pas souvent à cette endroit d'expérience (voir jamais).

    Donc l'idée de départ était d'avoir un "gros placard" au milieu de l'écran afin qu'il soit avertit de la progression. (du même genre que le formulaire d'attente)
    Mais je n'arrive pas à le mettre en route en paralèlle de mon code.
    J'avais regardé ceci http://arkham46.developpez.com/artic...s/formattente/.

    Aujourd'hui j'ai déjà un MsgBox de sortie mais cela ne suffit pas du point de vue utilisateur !

  4. #4
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    Je viens de regarder le lien avec le formulaire d'attente de Arkham46. C'est effectivement une très jolie solution.
    Sans entrer dans le détail, pour l'utiliser dans ton cas, ce que je ferais, c'est ceci :
    Le bouton , au lieu de lancer la procédure, cache le formulaire actif et ouvre le formulaire d'attente. A l'ouverture de ce formulaire d'attente, tu mets tout le code avec tes requêtes, avec au début, le code qui définit le texte et la longueur de la barre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Forms("FormAttente").lblInfo.Caption = "Veuillez patienter durant le traitement ...  0%"
    Forms("FormAttente").lblProgressBar.Width = 0
     
    Forms("FormAttente").Repaint        ' Repeint le formulaire
    Puis, comme dans ma solution avec la barre d'état, tu aménages le texte et la longueur de la barre au fur et à mesure du traitement de tes requêtes, sans oublier de faire un Repaint chaque fois.
    En fin de parcours, tu fermes le formulaire d'attente et réaffiches le formulaire de départ.
    Cela devrait marcher!
    Cordialement!

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Merci de tes conseils je regarde ceci aujourd'hui car ensuite c'est les congés et faut que j'avance

    Bon je galère un peu là
    Mon formulaire ce masque bien mais du coup j'ai tout qui se masque je n'arrive pas à voir le formulaire d'attente qui semble bien évoluer avec les % d'attente que je lui mets.


    Bon après avoir tourné en rond j'ai enfin trouvé une solution et cela marche très bien j'ai combiné le tuto et tes conseils et c'est super.

    En te remerciant encore une fois

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

Discussions similaires

  1. [AC-2010] Formulaire d'attente (sans boucle)
    Par Oliv- dans le forum Contribuez
    Réponses: 0
    Dernier message: 31/01/2014, 16h09
  2. Barre de progression dans une boucle : impossible de modifier son avancement
    Par piero-la-lune dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2012, 11h24
  3. Message d'attente et barre de progression avant prévisualisation
    Par Just-Soft dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/12/2008, 11h53
  4. Barre de progression ou barre d'attente
    Par batama dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/10/2008, 14h03
  5. Animation d'attente ou barre de progression?!
    Par ZeRouxXx dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 06/06/2008, 11h15

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