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

Access Discussion :

Créer une barre de progression suivant la valeur de case à cocher [AC-2007]


Sujet :

Access

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut Créer une barre de progression suivant la valeur de case à cocher
    Bonjour tout le monde,

    J'aimerai créer sur un formulaire une barre de progression, ou si plus simple un carré qui changerait de couleur, qui serait "alimentait" par la valeur de trois cases à cocher situées dans une table. Pour résumer, ma base permet de faire des demandes d'interventions de maintenance et le service maintenance doit cocher une case lorsqu'ils ont pris en compte la demande, lorsqu'ils interviennent, et lorsqu'ils clôturent une demande afin de suivre et et faire un tri dans celles-ci.
    Ainsi, l'utilisateur pourrait avoir une visue rapide de l'état de sa demande grâce à cette barre de progression basée sur ses cases cochées ou non.
    Elle serait:
    -vide si aucune n'est cochée,
    -rouge si la case prise en compte est cochée,
    -orange si la case prise en compte est cochée ainsi que l'intervention,
    -et verte si les cases prise en compte, l'intervention et la clôture sont toutes les trois cochées.
    Avec biensur un remplissage de la barre plus important selon la couleur (à 25% pour le orange, 60% pour l'intervention et 100% pour la clôture).

    J'ai essayé la mise en forme conditionnelle mais pas trouvé, de même en VBA même si je pense que c'est la solution mais je ne m'y connais pas assez.
    Avez-vous des solutions pour moi?

    Merci d'avance de prendre le temps de m'aider!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    2 solutions :
    1- avec 3 rectangles et paramétrer leurs propriétés visible selon les cas.
    - Tu crées une première rectangle de couleur transparente de largeur 10 cm qui va servir de fond.
    - Tu crées une deuxième rectangle de même hauteur mais de largeur 2,5 cm de couleur Rouge pour servir les cas de PrisEncompte (ImgRouge)
    - Tu crées une troisième rectangle de même hauteur mais de largeur 6 cm de couleur Orange pour servir les cas de Intervention (ImgOrange)
    - Tu crées une quatrième rectangle de même hauteur mais de largeur 10 cm de couleur Verte pour servir les cas de Clôture (ImgVerte)
    2- avec une seule rectangle (ImBarreProgression) et paramétrer sa longueur et sa couleur selon les cas.

    Tu crées une routine globale dans le formulaire dont le code va être à peu près le suivant :
    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
    Private Sub MAJEtatAvancement()
        Me.ImBarreProg.Width = 0
        Me.ImRouge.Visible = Me.PrisEncompte
        Me.imOrange.Visible = Me.Intervention
        Me.ImVerte.Visible = Me.Cloture
    If Me.PrisEncompte And Not Me.Intervention And Not Me.Cloture Then
        Me.ImRouge.Visible = True
        Me.imOrange.Visible = False
        Me.ImVerte.Visible = False
        Me.ImBarreProg.Width = CInt(567 * 2.5)
        Me.ImBarreProg.BackColor = vbRed
    End If
    If Me.Intervention Then
        Me.ImRouge.Visible = False
        Me.imOrange.Visible = True
        Me.ImVerte.Visible = False
        Me.ImBarreProg.Width = CInt(567 * 6)
        Me.ImBarreProg.BackColor = RGB(255, 128, 0)
    End If
    If Me.Cloture Then
        Me.ImRouge.Visible = False
        Me.imOrange.Visible = False
        Me.ImVerte.Visible = True
        Me.ImBarreProg.Width = CInt(567 * 10)
        Me.ImBarreProg.BackColor = vbGreen
    End If
    End Sub
    et tu appelles cette routine sur les évènements après mises à jour des 3 cases à cocher, sur l'évènement Activation de ton formulaire.


    Cordialement,

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Merci de ton aide! Voici ce que j'ai tapé en sachant que pour l'intervention ce n'est plus une case mais juste une date à remplir, et que Saisies interventions est la table avec tous les enregistrements! J'ai créé les trois barres et taper le code ci-dessous, mais ça ne marche pas. Savez-vous pourquoi?

    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
    Private Sub Form_Current()
        Me.ImRouge.Visible = [Saisies interventions].[Prise en compte]
        Me.ImOrange.Visible = [Saisies interventions].[Date d'intervention]
        Me.ImVerte.Visible = [Saisies interventions].[Clos]
    If [Saisies interventions].[Prise en compte] = True And [Saisies interventions].[Date d'intervention] = Nothing And [Saisies interventions].[Clos] = False Then
        Me.ImRouge.Visible = True
        Me.ImOrange.Visible = False
        Me.ImVerte.Visible = False
    End If
    If [Saisies interventions].[Prise en compte] = True And [Saisies interventions].[Date d'intervention] = True And Not [Saisies interventions].[Clos] = False Then
        Me.ImRouge.Visible = False
        Me.ImOrange.Visible = True
        Me.ImVerte.Visible = False
    End If
    If [Saisies interventions].[Prise en compte] = True And [Saisies interventions].[Date d'intervention] = 0 And [Saisies interventions].[Clos] = True Then
        Me.ImRouge.Visible = False
        Me.ImOrange.Visible = False
        Me.ImVerte.Visible = True
    End If
    End Sub

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Re-,

    Avec les dates, ce n'est pas simple. De plus, tu n'as mis ton code que sur l'évènement Activation de ton formulaire. Il faut créer un module à part et l'appeler dans les évènements mises à jour des champs qui peuvent changer.

    Un fichier exemple est joint.

    Cordialement,

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Merci.

    J'ai regardé votre base et essayé de l'adapter chez moi.
    Enfait moi ma barre de progression apparaît sur un formulaire autre que là où les cases sont cochées. Ma base est pour deux types d'utilisateurs: les personnes de la maintenance qui mettent à jour les cases et les demandeurs qui ont accès à un suivi de leur demande et qui verraient donc grâce à cette barre de progression rapidement où ils en sont.
    J'ai donc adapté votre code comme ci-dessous, et l'ai mise "sur activation" dans mon formulaire demandeur et "après MAJ" sur le formulaire de mise à jour des personnes de la maintenance. Evidemment, ça ne marche toujours pas! Je ne suis pas vraiment douée, d'où vient le problème selon vous? Merci pour votre temps.

    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
    Option Compare Database
    Private Sub MAJEtatAvancement()
        Me.ImRouge.Visible = [Saisies interventions].[Prise en compte]
        Me.ImOrange.Visible = [Saisies interventions].[Date d'intervention]
        Me.ImVerte.Visible = [Saisies interventions].[Clos]
    If [Saisies interventions].[Prise en compte] And (IsNull([Saisies interventions].[Date d'intervention]) Or [Saisies interventions].[Date d'intervention] = "") And Not [Saisies interventions].[Clos] Then
        Me.ImRouge.Visible = True
        Me.ImOrange.Visible = False
        Me.ImVerte.Visible = False
    End If
    If Not IsNull([Saisies interventions].[Date d'intervention]) And [Saisies interventions].[Date d'intervention] <> "" Then
        Me.ImRouge.Visible = False
        Me.ImOrange.Visible = True
        Me.ImVerte.Visible = False
    End If
    If [Saisies interventions].[Clos] Then
        Me.ImRouge.Visible = False
        Me.ImOrange.Visible = False
        Me.ImVerte.Visible = True
    End If
    End Sub

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Quelle est la source du formulaire du Demandeur?

  7. #7
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Quelle est la source du formulaire du Demandeur?
    Tout s'enregistre dans la table "Saisies interventions". Le demandeur a un formulaire de visualisation des infos, et la maintenance un formulaire avec les mêmes infos provenant de la même table mais où il fait les modifications.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Normalement dans ce cas, si le formulaire du demandeur est basé sur la même table et les champs Y sont présents, ton code devrait ressembler à :
    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
    Option Compare Database
    Private Sub MAJEtatAvancement()
    Me.ImRouge.Visible = Me.[Prise en compte]
    Me.ImVerte.Visible =Me.Clos
    If Me.[Prise en compte] And (IsNull(Me.[Date d'intervention]) Or Me.[Date d'intervention] = "") And Not Me.[Clos] Then
    Me.ImRouge.Visible = True
    Me.ImOrange.Visible = False
    Me.ImVerte.Visible = False
    End If
    If Not IsNull(Me.[Date d'intervention]) And Me.[Date d'intervention] <> "" Then
    Me.ImRouge.Visible = False
    Me.ImOrange.Visible = True
    Me.ImVerte.Visible = False
    End If
    If Me.[Clos] Then
    Me.ImRouge.Visible = False
    Me.ImOrange.Visible = False
    Me.ImVerte.Visible = True
    End If
    End Sub
    Et sur l'évènement sur activation du formulaire du demandeur, tu appelles ce module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
    MAJEtatAvancement
    End Sub
    Cordialement,

    PS: Pour faciliter la lecture de tes codes, utilises la balise code : tu sélectionnes ton code et tu appuies sur le bouton #

  9. #9
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Merci pour votre aide. Je teste ça lundi et je vous redis!
    Encore merci.

  10. #10
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Bonjour.

    J'ai testé le code mais ça ne fonctionne toujours pas. Je l'ai testé à la fois sur le formulaire où sont présentes les cases à cocher et sur un autre formulaire où j'ai donc inseré dans le code le nom du formulaire où sont présentes les cases. "[Avancement]" est le nom du formulaire où sont présentes les cases à cocher et la date qui doit être remplie. Ce code apparait sur le formulaire Résultats_recherche auquel fait référence le "Me". Le code que j'ai tapé est:

    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
    Private Sub MAJEtatAvancement()
    Me.ImRouge.Visible = [Avancement].[Prise en compte]
    Me.ImVerte.Visible = [Avancement].[Clos]
    If [Avancement].[Prise en compte] And (IsNull([Avancement].[Date d'intervention]) Or [Avancement].[Date d'intervention] = "") And Not [Avancement].[Clos] Then
    Me.ImRouge.Visible = True
    Me.ImOrange.Visible = False
    Me.ImVerte.Visible = False
    End If
    If Not IsNull([Avancement].[Date d'intervention]) And [Avancement].[Date d'intervention] <> "" Then
    Me.ImRouge.Visible = False
    Me.ImOrange.Visible = True
    Me.ImVerte.Visible = False
    End If
    If [Avancement].[Clos] Then
    Me.ImRouge.Visible = False
    Me.ImOrange.Visible = False
    Me.ImVerte.Visible = True
    End If
    End Sub
    Je n'arrive pas à comprendre d'où vient le problème. Et vous?
    Merci de votre aide.

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    Il y a quand même des contradictions dans ce que tu dis :
    Je l'ai testé à la fois sur le formulaire où sont présentes les cases à cocher et sur un autre formulaire où j'ai donc inseré dans le code le nom du formulaire où sont présentes les cases.
    et
    Tout s'enregistre dans la table "Saisies interventions". Le demandeur a un formulaire de visualisation des infos, et la maintenance un formulaire avec les mêmes infos provenant de la même table mais où il fait les modifications.
    Est-ce que tu peux poster la partie de ta base avec la table et les 2 formulaires (sans données confidentielles, compactée et zippée) pour que je m'aperçois de ce qui se passe stp.

    Cordialement,

  12. #12
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Bonjour,

    Il y a quand même des contradictions dans ce que tu dis :

    et


    Est-ce que tu peux poster la partie de ta base avec la table et les 2 formulaires (sans données confidentielles, compactée et zippée) pour que je m'aperçois de ce qui se passe stp.

    Cordialement,
    Ici le formulaire "Résultats recherche" affiche les résultats des demandes d'après une recherche par nom. C'est ici que doit apparaitre la barre de progression pour que le demandeur sans aller dans le formulaire "Avancement" est déjà une idée d'où en est sa demande. Les informations des deux formulaires viennent de la table Saisies interventions. Les cases ont été cochées par la maintenance dans le formulaire "MAJ interventions" qui est basé sur la même table que les deux autres.
    Fichiers attachés Fichiers attachés

  13. #13
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Re-,

    Effectivement avec un formulaire en continu, il n'est pas simple de présenter un élément indépendant en fonction des valeurs des autres cases (que ce soit images ou zones de textes) en VBA. L'élément va toujours prendre sa valeur selon le premier enregistrement. Il faut passer par la mise en forme conditionnelle. Etant donné que les propriétés VISIBLE des contrôles images ne peuvent être gérés avec la Mise en forme conditionnelle, je te propose d'utiliser une zone de texte (de la même taille que les contrôles images que j'ai proposés). On va gérer que leur couleur. Le souci en plus, c'est que la MISE EN FORME CONDITIONNELLE ne permet pas la gestion de la transparence des zones de texte. Mais je mets les couleurs des 2 autres à automatique quand les conditions ne sont pas remplies. Cela ne devraient pas te gêner d'après ton message précédent.

    De plus, tu disais que des formulaires dépendaient de la même table. Il y a nuance parce que tu n'as pas rajouté les champs Prise en compte, Date d'intervention et Clos dans la requête source de ton formulaire Résultats Recherche. Donc c'est normal que tu avais du mal à faire référence à ces valeurs.

    Je t'ai créé un deuxième formulaire RésultatsRecherche_2 basé uniquement sur les champs de la table Saisies interventions que tu avais mis et les 3 autres champs. Tu peux définir leurs propriétés Visible à NON si tu ne veux pas que les utilisateurs les voient. En fait, t'as pas joint certaines tables dont les champs étaient utilisés comme source des formulaires.

    J'espère que ça va.

    Conseil : Tu es au début de ton application, je te conseille de n'utiliser que les caractères alpha-numériques (a-z;A-Z;0-9) et l'underscore _ pour les noms de tes champs et contrôles et des objets (Tables, requêtes, Formulaires, états,...) dans ton application pour éviter les bug innatendus dans ton application.

    Cordialement,

  14. #14
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Pour les formulaires oui j'ai dû insérer des champs provenant d'autres tables pour pouvoir afficher les correspondances en tant que "mot" et pas en tant que code...
    En tous les cas cela fonctionne, alors merci pour votre grande aide et le temps que vous y avez consacré. Merci également pour vos conseils!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2010, 10h26
  2. Créer une barre de progression
    Par Downhill6 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/03/2009, 17h35
  3. EXCEL VBA - Créer une barre de progression
    Par babacool dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/08/2008, 18h16
  4. Créer une barre de progression avec "stop/pause"
    Par davos56 dans le forum Delphi
    Réponses: 7
    Dernier message: 22/05/2007, 17h59
  5. Créer une barre de progression sous Vba ??
    Par Deejoh dans le forum Général VBA
    Réponses: 7
    Dernier message: 17/10/2005, 15h05

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