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 :

Mise en forme conditionnelle comme dans Excel [AC-2016]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut Mise en forme conditionnelle comme dans Excel
    Bonjour à tous,

    J'ai un form avec un sous form qui me regroupe pas mal de lignes de données numériques, je voudrais faire une mise en forme conditionnelle comme dans Excel avec une couleur rouge pour les données du bas de la plage, jaune au milieu et vert en haut, dans excel c'est déja préprogrammé et quand il y a 200 lignes il fait sa vie tout seul.

    Dans access j'ai juste trouvé un truc tout moche dans format mise en forme conditionnelle qui me fait une barre qui remplit la cellule, y'a rien de mieux que ca ? Pas de "multi-coloris", pas de "je gère la couleur tout seul même si j'ai 200 lignes" ?

    Au pire est-ce que ca peut se programmer en VBA parce que quand j'ai mes 200 lignes ca aide vraiment beaucoup d'avoir un fond de cellule coloré.

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Bonjour,

    En attaché, un petit exemple qui pourrait éventuellement vous donner quelques idées.

    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Merci de l'exemple mais ca ne convient pas à mon besoin.

    Je vais avoir 100 ou 200 valeurs numériques et je voudrais avoir une échelle de couleur entre la valeur la plus basse et la plus haute de cette plage de valeurs

    Quelque chose dans cette idée

    Nom : xl mise en forme.jpg
Affichages : 96
Taille : 74,3 Ko

    Dans Excel je lui dis que la valeur la plus haute dans cette plage et en rouge, la plus basse en vert et il choisit la couleur tout de suite, c'est très pratique pour avoir une vue d'ensemble.

    C'est possible ou bien il faut que j'essaie d'inclure un bout de tableau excel dans mon form (c'est possible ca ?) avec la bonne mise en forme ?

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Bonjour,

    Effectivement Access n'a pas la même panoplie de formats conditionnels qu'Excel. Ce que j'ai trouvé qui s'en approche le plus est présenté sur cette page "Color Conditions" qui utilise une table définissant les limites et couleurs, et la fonction Detail_Paint() dans le formulaire.

    Cordialement.

  5. #5
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Merci pour l'info mais le site est down, j'ai pas de chance

    Je vais avancer sur d'autres points et revenir la dessus dans 2-3 jours, encore merci

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 589
    Points : 1 085
    Points
    1 085
    Par défaut
    Bonjour,

    Un vieux tuto du fond du placard qui n'existe plus par une vieille connaissance, il est vieux et je ne sais pas si c'est encore d'actualité avec les nouvelles technologies et si c'est compatible.

    ONTAYG
    Images attachées Images attachées

  7. #7
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Ca se tente, merci de l'idée

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Bonjour,

    En définitive, assez simple en reprenant l'idée d'utiliser l'événement Detail_Paint(), cela s'il n'est pas nécessaire d'avoir de nombreuses couleurs très différentes. Le fichier Excel n'est là que pour montrer les plages de couleurs.

    Cordialement.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Alors ca me parait MEGA bien ca, il va falloir que je le mette en forme dans mon application mais c'est exactement le rendu souhaité.

    Je vois que les couleurs sont appliquées en fonction de l'indice, donc il faut que je fasse un classement permanent de mes lignes au fur et à mesure que je les rentre dans la base en créant un champ supplémentaire "indice" c'est ca ?

    Quelle serait la meilleure façon de le faire ?

    Sachant que je rentre 3 champs S1 S2 et S3 et que le final Laptime est un champ calculé dans le form.

    Je voudrais faire un classement "coloré" sur S1, S2 et S3 et sur le champ calculé "Laptime"

    En sachant que je n'ai pas besoin de 100 couleurs mais que je risque d'avoir 150-200 lignes en utilisation "normale" et jusqu'a 500-600 en utilisation maximale....

    En tout cas c'est incroyable de voir que MS n'a pas prévu ca aors que ca existe depuis 10 ans sous excel.

    Un grand merci, je me mets dessus ce soir et je vois ce que ca donne

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Un autre petit exemple avec un champ calculé (utilisé pour fixer le tri croissant).
    Cordialement.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    OK, magnifique

    Juste pour être sur, dans le 3e exemple on se fout du champ ID et du champ texte vu que les données sont triées et colorées en fonction de X, Y, Z et XYZ, c'est bien ca ?

    Merci

  12. #12
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Oui, c'est cela. Dans la routine Sub Détail_Paint(), il n'y a que les champs que l'on veut colorer qui sont mentionnés, en l'occurrence les champs X, Y, Z et XYZ.

    Cordialement.

  13. #13
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Alors bien sur j'ai un problème ha ha ha

    En fait mes cellules a trier par couleur sont dans un sous form, donc quand je mets le code dans la propriété ouverture du form maitre il me dit qu'il ne trouve pas les controle S1 qui correspond à X dans l'exemple.

    Je pense que je dois modifier les lignes de recherche des valeurs min/max mais comment lui indiquer que c'est dans un sous form ? J'ai essayé de mettre le code en propriété d'ouverture du sous form mais je ne peux pas faire sur ouverture dans le sous form

    Le form maitre est FrmStint et le sous form est sFrmStint et la requete de remplissage du sous form est RqStintLapNoC60, voila le code que j'ai modifié pour remplacer X Y Z et XYZ par les valeurs de mes champs mais au lancement il me met de suite une erreur sur la dernière ligne en me disant que j'ai une division par 0 sur la ligne kLaptime = 3 * 256 / (LaptimeMax - LaptimeMin)

    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
    Private Sub Form_Open(Cancel As Integer)
        S1Min = DMin("S1", "RqStintLapNoC60")
        S1Max = DMax("S1", "RqStintLapNoC60")
        Debug.Print S1Min, S1Max
        kS1 = 3 * 256 / (S1Max - S1Min)
        S2Min = DMin("S2", "RqStintLapNoC60")
        S2Max = DMax("S2", "RqStintLapNoC60")
        Debug.Print S2Min, S2Max
        kS2 = 3 * 256 / (S2Max - S2Min)
        S3Min = DMin("S3", "RqStintLapNoC60")
        S3Max = DMax("S3", "RqStintLapNoC60")
        Debug.Print S3Min, S3Max
        kS3 = 3 * 256 / (S3Max - S3Min)
        LaptimeMin = DMin("Laptime", "RqStintLapNoC60")
        LaptimeMax = DMax("Laptime", "RqStintLapNoC60")
        Debug.Print LaptimeMin, LaptimeMax
        kLaptime = 3 * 256 / (LaptimeMax - LaptimeMin)
    End Sub
    Merci beaucoup de l'aide

  14. #14
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Bonjour,

    S'il y a division par zéro c'est que LaptimeMax = LaptimeMin, ce qu'il est possible de vérifier en regardant ce qui est affiché en résultat de l'instruction Debug.Print LaptimeMin, LaptimeMax.

    Cordialement.

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 769
    Points : 14 810
    Points
    14 810
    Par défaut
    bonsoir,
    mais comment lui indiquer que c'est dans un sous form ?
    en précisant le nom du sous-formulaire dans la syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.sFrmStint.Controls("S1Min") = DMin("S1", "RqStintLapNoC60")

  16. #16
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Bonsoir,

    J'ai trouvé une coquille que j'ai corrigé et je n'ai plus cette erreur.

    J'ai gratté dessus en en fait il fallait tout déplacer dans les paramètres du sous form, donc dans la section détail du sous form et dans sur entrée du sous form

    Maintenant ca marche mais quand je n'ai que peu de lignes elles sont toutes vertes, il ne me peint pas la première cellule de la première ligne et la 3e colonne S3....

    Nom : ACCESS.jpg
Affichages : 61
Taille : 46,4 Ko

    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
    Option Compare Database
    Option Explicit
     
    Dim S1Min As Long, S1Max As Long, kS1 As Single
    Dim S2Min As Long, S2Max As Long, kS2 As Single
    Dim S3Min As Long, S3Max As Long, kS3 As Single
    Dim LaptimeMin As Long, LaptimeMax As Long, kLaptime As Single
    Private Sub sFrmStint_Enter()
        S1Min = DMin("S1", "RqStintLapNoC60")
        S1Max = DMax("S1", "RqStintLapNoC60")
        Debug.Print S1Min, S1Max
        kS1 = 3 * 256 / (S1Max - S1Min)
        S2Min = DMin("S2", "RqStintLapNoC60")
        S2Max = DMax("S2", "RqStintLapNoC60")
        Debug.Print S2Min, S2Max
        kS2 = 3 * 256 / (S2Max - S2Min)
        S3Min = DMin("S3", "RqStintLapNoC60")
        S3Max = DMax("S3", "RqStintLapNoC60")
        Debug.Print S3Min, S3Max
        kS3 = 3 * 256 / (S3Max - S3Min)
        LaptimeMin = DMin("Laptime", "RqStintLapNoC60")
        LaptimeMax = DMax("Laptime", "RqStintLapNoC60")
        Debug.Print LaptimeMin, LaptimeMax
        kLaptime = 3 * 256 / (LaptimeMax - LaptimeMin)
    End Sub
     
    Private Sub Détail_Paint()
        On Error Resume Next
        Me.S1.BackColor = CC((Me.S1.Value - S1Min) * kS1)
        Me.S2.BackColor = CC((Me.S2.Value - S2Min) * kS2)
        Me.S3.BackColor = CC((Me.S3.Value - S3Min) * kS3)
        Me.Laptime.BackColor = CC((Me.Laptime.Value - LaptimeMin) * kLaptime)
    End Sub
    Je sens qu'on est plus très loin, merci beaucoup

  17. #17
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Bonjour,

    Il faut définir les Min et Max comme étant aussi de type Single (et pas Long, qui provoque un arrondi à l'entier inférieur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim S1Min As Single, S1Max As Single, kS1 As Single
    ' etc.
    Cordialement.

  18. #18
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Ok, modifié, merci du tuyau

    Donc pour le problème que tout est en vert je me demandais si la formule de calcul donne AU MAX 512 couleurs ou bien TOUT LE TEMPS 512 couleurs ?

    Et si elle prenait le min ou le max comme point de départ, par exemple si j'ai une palette de 512 couleurs et que j'ai 4 valeurs comment faire pour que ca me mettre 256/190/100/50 pour les valeurs de Rouge et de bleu et pas 256/255/254 et 253 parce que je crois qu'en ce moment c'est le cas.

    Si ca aide j'ai un compteur de tours qui fonctionne et qu'on pourrait utiliser comme variable dans le calcul...

    Un grand merci

  19. #19
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    La formule CC() proposée fait un dégradé de 512 couleurs allant de façon très progressive du vert > jaune > orangé > rouge. Le fichier Excel Les couleurs.xlsx montre ces couleurs par pas de 8 (donc 64 couleurs sur les 512). CC(0) donne la première couleur (vert), CC(511) donne la dernière couleur (rouge), CC(255) donne du jaune, CC(320) donne de l'orangé. Pas de bleu dans cette plage. Pour cela il faudrait concevoir une autre formule.

    Cordialement.

  20. #20
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Ok, donc si je divise 512 par mon nombre de tours (par ex 10) est-ce que je peux lui dire de faire des pas de 512/10 ?

    Et quand j'ai 20 tours il divise la plage par 20 Etc...


    pour que ca soit harmonieux ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Mise en forme conditionnelle en vba excel
    Par fahim3u dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/02/2020, 08h35
  2. [AC-2007] Mise en forme conditionnelle date dans Etat
    Par Yamina62 dans le forum IHM
    Réponses: 9
    Dernier message: 28/09/2013, 13h43
  3. [XL-2010] Mise en forme conditionnelle dans Excel 2010
    Par morobaboumar dans le forum Excel
    Réponses: 1
    Dernier message: 28/08/2011, 18h43
  4. [XL-2003] Mise en forme des boutons dans excel
    Par joums dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/09/2009, 17h09
  5. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 10h13

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