Image changeante suivant valeur d'un champ
Résolu
Ollam
Messages postés
77
Date d'inscription
Statut
Membre
Dernière intervention
-
RV71 Messages postés 656 Date d'inscription Statut Membre Dernière intervention -
RV71 Messages postés 656 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comme indiqué dans le titre, je souhaite agir sur une image en fonction du contenu d'un champ.
En détail:
j'ai un champ numérique (monétaire) et je voudrais afficher à coté une flèche verte pointant vers le haut (image1) quand le contenu est positif et la cacher quand il est négatif.
Bien sur, même chose avec la flèche rouge pointant vers le bas (image2) visible quand le champ numérique est négatif et cachée quand ce n'est pas le cas.
Les deux images seront superposées
En poussant un peu plus loin, même si cela devrait être très rare, les 2 flèches cachées quand le résultat est à 0 ou vide.
Ah oui, un détail important, cela dans un formulaire continu (tabulaire)
J'arrive dans un formulaire unique à cacher ou rendre visible une image en fonction du résultat d'un champ, mais dans un formulaire continu, il affiche à toutes les ligne la même chose suivant le champ sélectionné.
Si je clique sur un champ négatif une flèche rouge s'affiche partout même sur les valeurs positives et inversement.
En vous remerciant par avance
Comme indiqué dans le titre, je souhaite agir sur une image en fonction du contenu d'un champ.
En détail:
j'ai un champ numérique (monétaire) et je voudrais afficher à coté une flèche verte pointant vers le haut (image1) quand le contenu est positif et la cacher quand il est négatif.
Bien sur, même chose avec la flèche rouge pointant vers le bas (image2) visible quand le champ numérique est négatif et cachée quand ce n'est pas le cas.
Les deux images seront superposées
En poussant un peu plus loin, même si cela devrait être très rare, les 2 flèches cachées quand le résultat est à 0 ou vide.
Ah oui, un détail important, cela dans un formulaire continu (tabulaire)
J'arrive dans un formulaire unique à cacher ou rendre visible une image en fonction du résultat d'un champ, mais dans un formulaire continu, il affiche à toutes les ligne la même chose suivant le champ sélectionné.
Si je clique sur un champ négatif une flèche rouge s'affiche partout même sur les valeurs positives et inversement.
En vous remerciant par avance
A voir également:
- Image changeante suivant valeur d'un champ
- Image iso - Guide
- Acronis true image - Télécharger - Sauvegarde
- Reduire taille image - Guide
- Légender une image - Guide
- Image gratuite - Guide
15 réponses
Bonjour,
la discussion suivante https://forums.commentcamarche.net/forum/affich-36641663-changement-de-couleur-sur-oui-non ne peut pas te mettre sur la voie ?
A+
la discussion suivante https://forums.commentcamarche.net/forum/affich-36641663-changement-de-couleur-sur-oui-non ne peut pas te mettre sur la voie ?
A+
Bonjour,
Non, ce n'est pas la même chose.
D’ailleurs, le lien que tu m'a envoyé était déjà une de mes questions et l'aide obtenue fonctionne à merveille grace à la "Mise en forme conditionnelle"
Ici, il ne s'agit pas d'un champ qui change de couleur, mais bien d'une image qui doit disparaître ou pas suivant le résultat d'un champ
J'ai aussi essayé dans les "Expressions" de "Mise en forme conditionnelle", mais je n'y arrive pas
J'ai aussi essayé ceci:
Mais comme je le dit plus haut, même couleur de flèche à chaque ligne
La flèche change si je clique dans les cellules , mais il n'est pas prévu que le champ sur lequel cela doit s'appliquer soit modifié manuellement, il s'agit d'un total, et le champ est désactivé et verrouillé
Non, ce n'est pas la même chose.
D’ailleurs, le lien que tu m'a envoyé était déjà une de mes questions et l'aide obtenue fonctionne à merveille grace à la "Mise en forme conditionnelle"
Ici, il ne s'agit pas d'un champ qui change de couleur, mais bien d'une image qui doit disparaître ou pas suivant le résultat d'un champ
J'ai aussi essayé dans les "Expressions" de "Mise en forme conditionnelle", mais je n'y arrive pas
J'ai aussi essayé ceci:
Private Sub Form_Current()
If [texte] < 0 Then
[flecheverte].Visible = False
[flecherouge].Visible = True
Else
[flecherouge].Visible = False
[flecheverte].Visible = True
End If
End Sub
Private Sub texte_Click()
If [texte] < 0 Then
[flecheverte].Visible = False
[flecherouge].Visible = True
Else
[flecherouge].Visible = False
[flecheverte].Visible = True
End If
End Sub
Mais comme je le dit plus haut, même couleur de flèche à chaque ligne

La flèche change si je clique dans les cellules , mais il n'est pas prévu que le champ sur lequel cela doit s'appliquer soit modifié manuellement, il s'agit d'un total, et le champ est désactivé et verrouillé
J'ai vu que c'était toi...
Désolé, je pensais que la mise en forme conditionnelle permettait d'afficher ou pas une zone de texte que tu aurais pu mettre au dessus des images (effectivement, elles ne seraient pas superposées).
Je suis comme toi, devant un os...
J'essaie de réfléchir à une manière de détourner cela et si l'éclair arrive, je reviens te dire.
A+
Désolé, je pensais que la mise en forme conditionnelle permettait d'afficher ou pas une zone de texte que tu aurais pu mettre au dessus des images (effectivement, elles ne seraient pas superposées).
Je suis comme toi, devant un os...
J'essaie de réfléchir à une manière de détourner cela et si l'éclair arrive, je reviens te dire.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ce n'est malheureusement pas un détail, tu as là les limites d'access...
On ne peut pas mettre en forme un controle avec la mise en forme conditionnelle, et le code vba ne concerne que l'enregistrement actif.
Je sèche.
A+
On ne peut pas mettre en forme un controle avec la mise en forme conditionnelle, et le code vba ne concerne que l'enregistrement actif.
Je sèche.
A+
Oui, de mon coté je ne trouve rien non plus !!!!!!
Pourtant il doit surement y avoir une solution, ce n'est pas possible que que soit si facile sur Excel et impossible sur Access
Bon, je continu mes recherches !!!
Pourtant il doit surement y avoir une solution, ce n'est pas possible que que soit si facile sur Excel et impossible sur Access
Bon, je continu mes recherches !!!
Re,
en m'endormant je pense à un truc, à peaufiner :
j'imagine que ton form continu est basé sur une requête (requête1).
L'idée (pas testé et je ne pense pas pouvoir tester demain, enfin j'essaierai de trouver le temps) :
1/ Stocker dans le répertoire de ta base les 3 icones (flèche verte et rouge et une blanche) une bonne fois pour toute
2/ Créer un recordset la requête1 au chargement de ton formulaire, et mettre à jour via DAO une autre requete (requete2) qui contiendra les champs de la requête1 + un champ pour l'icone suivant ton champ calculé.
De cette manière, ta requête2 ainsi générée devrait avoir les lignes de ta requête1 avec en plus l'icone kivabien.
Tu recharges ensuite ton form sur requete2.
C'est à tester, je n'ai jamais mis en oeuvre pour ce type de problématique.
Et si cela fonctionne, si tu peux mettre à jour certains champs qui auraient une influence sur le champs calculé, il faudra faire cette opération à chaque changement, et ça peut vite ralentir ton affichage, je pense.
Allez, je me rendors
A+
en m'endormant je pense à un truc, à peaufiner :
j'imagine que ton form continu est basé sur une requête (requête1).
L'idée (pas testé et je ne pense pas pouvoir tester demain, enfin j'essaierai de trouver le temps) :
1/ Stocker dans le répertoire de ta base les 3 icones (flèche verte et rouge et une blanche) une bonne fois pour toute
2/ Créer un recordset la requête1 au chargement de ton formulaire, et mettre à jour via DAO une autre requete (requete2) qui contiendra les champs de la requête1 + un champ pour l'icone suivant ton champ calculé.
De cette manière, ta requête2 ainsi générée devrait avoir les lignes de ta requête1 avec en plus l'icone kivabien.
Tu recharges ensuite ton form sur requete2.
C'est à tester, je n'ai jamais mis en oeuvre pour ce type de problématique.
Et si cela fonctionne, si tu peux mettre à jour certains champs qui auraient une influence sur le champs calculé, il faudra faire cette opération à chaque changement, et ça peut vite ralentir ton affichage, je pense.
Allez, je me rendors
A+
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu partager ton fichier?
Voici ce que j'ai pu faire :
https://www.cjoint.com/c/JFEn0wBu7hU
Il y a les 2 fichiers .png à mettre dans le même répertoire que la base (sinon modifies le code vba).
Le principe est celui auquel j'ai pensé hier soir : parcourir la table en vba et mettre à jour un champ qui contient le chemin et nom de l'image.
C'est crado, mais il faut bien contourner...
A+
https://www.cjoint.com/c/JFEn0wBu7hU
Il y a les 2 fichiers .png à mettre dans le même répertoire que la base (sinon modifies le code vba).
Le principe est celui auquel j'ai pensé hier soir : parcourir la table en vba et mettre à jour un champ qui contient le chemin et nom de l'image.
C'est crado, mais il faut bien contourner...
A+
J'ai revérifié, ma gestion du null est NOK
Modifies donc comme suit en mettant bien entendu une image "nul.png" dans le dossier courant :
Modifies donc comme suit en mettant bien entendu une image "nul.png" dans le dossier courant :
With rsTable
.MoveFirst
Do While Not .EOF
.Edit
If IsNull(.Fields("texte1")) Then 'le champ est vide
.Fields("nomimage") = "nulle"
.Fields("nomfichier") = CurrentProject.Path & "\nul.png"
ElseIf .Fields("Texte1") >= 0 Then
.Fields("nomimage") = "vert"
.Fields("nomfichier") = CurrentProject.Path & "\vert.png"
Else
.Fields("nomimage") = "rouge"
.Fields("nomfichier") = CurrentProject.Path & "\rouge.png"
End If
.Update
.MoveNext
Loop
End With
Car l'image peut changer selon les lignes de la requête (là j'ai utilisé la table pour son exemple)...
On ne peut pas savoir *avant* quelle image va correspondre.
On ne peut pas savoir *avant* quelle image va correspondre.
deux façons de faire via une requête:
ou bien
cela devrait aussi mieux se passer via une requête quand les valeurs changent.
select *, iif(text1>0 ; "imagea"; "imageb") as nomfichier from latable
ou bien
select *, nomdufichier(text1) as nomfichier from latable, nomdelimage étant une fonction VBA qui retourne le nom en fonction de la valeur de text1
cela devrait aussi mieux se passer via une requête quand les valeurs changent.
Yes,
mais du coup obligé de passer par une fonction.
Mais effectivement, ça sera moins lourdingue, je suis juste reparti de mon idée nocture d'hier, sans prendre le temps de ré-approfondir.
A+
mais du coup obligé de passer par une fonction.
Mais effectivement, ça sera moins lourdingue, je suis juste reparti de mon idée nocture d'hier, sans prendre le temps de ré-approfondir.
A+
Voici comme suggéré avec une requête et la fonction.
C'est nettement + rapide.
https://www.cjoint.com/c/JFEpUsDA01U
A+
C'est nettement + rapide.
https://www.cjoint.com/c/JFEpUsDA01U
A+
Bonsoir RV71 et Yg_be,
Encore merci pour vos recherches !!!!!
Je viens de tester les deux versions.
C'est vrai que la première fonctionne bien même si elle est très lourde.
La seconde version fonctionne à merveille, avec l'avantage de s'actualiser immédiatement.
C'est génial !!!!
Je vous remercie une nouvelle foi pour votre démarche.
Maintenant, je vais décortiquer cela pour bien comprendre son fonctionnement.
Encore merci pour vos recherches !!!!!
Je viens de tester les deux versions.
C'est vrai que la première fonctionne bien même si elle est très lourde.
La seconde version fonctionne à merveille, avec l'avantage de s'actualiser immédiatement.
C'est génial !!!!
Je vous remercie une nouvelle foi pour votre démarche.
Maintenant, je vais décortiquer cela pour bien comprendre son fonctionnement.