je souhaite changer la couleur d'un bouton(texte ou fond) en fonction du resultat d'un champ dans une table.
on m'a parlé de DLookup, mais je n'ai rien trouvé qui pouvait correspondre
merci de votre aide.
je souhaite changer la couleur d'un bouton(texte ou fond) en fonction du resultat d'un champ dans une table.
on m'a parlé de DLookup, mais je n'ai rien trouvé qui pouvait correspondre
merci de votre aide.
Je sais que dlookup ne peut pas le faire.
Cherches dans la FAQ.
Amicalement
j'arrete pas depuis plus d'une heure et je trouve pas
Regarde aussi dans les anciens post. Ca été abordé en tout cas, c'est que je ne sais plus ou c'est.
Du courage.
Amicalement
Un exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Select Case DLookUp("[champ]","NomTable","[nChamp]=8") Case <100 Me!Bouton.ForeColor = RGB(255,0,0) Case >= 100 Me!Bouton.ForeCOlor = RGB(0,255,0) End Select
presque ca !
pas d' erreur
nom du bouton : ctl102
la table : HLL
le champ : condition
les valeurs pour les couleurs : disponible = vert
entretien = orange
travaux = rouge.
j'ai mis ca
mais aucun changement de couleur de mes boutons, on est pas loin, je le sent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Ctl102_Click() Select Case DLookup("[condition]", "HLL", "[condition]='travaux'") Case Is = travaux Me!Ctl102.ForeColor = RGB(255, 0, 0) Case Is = disponible Me!Ctl102.ForeColor = RGB(0, 0, 0) Case Is = entretien Me!Ctl102.ForeColor = RGB(241, 166, 85) End Select DoCmd.OpenForm "HLL", , , "Emplacement = '102'" End Sub
HELPPPPPPP
Bonjour
Dans ton codetravaux etc.. je pense est du texte, met le entre "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Ctl102_Click() Select Case DLookup("[condition]", "HLL", "[condition]='travaux'") Case "travaux" Me!Ctl102.ForeColor = RGB(255, 0, 0) Case "disponible" Me!Ctl102.ForeColor = RGB(0, 0, 0) Case "entretien" Me!Ctl102.ForeColor = RGB(241, 166, 85) End Select DoCmd.OpenForm "HLL", , , "Emplacement = '102'" End Sub
1 - Est-ce que le DLookup te renvoi au moins une valeur (faire le test avec une messagbox
2 -Ton bouton ne change pas de couleur, la prorpriété forecolor est pour la couleur du texte, je t'ai dit dans un précédent post que pour la couleur du bouton il faut utilise le Bouton de MSForms 2.0 command bouton (dans la liste des contrôles un marteau
Starec
merci de ta patiance
ca marche presque,
le "marteau" n'a aucune fonction, je clic dessus en ayant selectionné le bouton et, rien!
mon texte de bouton devient rouge (travaux)mais une fois sur 3.
en faite, j'ouvre 2 fois avec mon bouton 102, le formulaire correspondant pour avoir le changement de couleur, mais apres changement de "travaux" en "disponible", le bouton reste rouge.
je ne l'ai pas encore vu en orange ( entretien).
voila.
Re
Recontrôle bien les libélles de ta table et dans ton select case, il doivent être rigoureusement identiques. Fait un copier coller pour être sur.
Starec
j'ai retiréca marche mais il faut que j' ouvre 2 fois le formulaire, par le bouton pour que ca fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part , "[condition]='travaux'"
les couleurs marchent aussi noir/orange/rouge.
mais 2 fois pour avoir la fonction.
j'ai ajouté ca pour lui dire de regarder dans le bon enregistrement
je sais pas si j'ai bonje suis toujours obliger de faire l'ouverture du formulaire 2 fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Select Case DLookup("[condition]", "HLL", "Emplacement = '102'")
Re
As-tu fais
avant ton select case pour voir ce que tu récupéres (à tester sur différents boutons),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MsgBox DLookup("[condition]", "HLL", "[condition]='travaux'")
Tu as quoi dans le champ condition comme paramètres possibles ?
Starec
formulaire HLL
dans le champ condition:
disponible
entretien
travaux
dans le champ :emplacement
102
c'est le n° de la machine
ca me repond : disponible ! avec ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Ctl102_Click() MsgBox DLookup("[condition]", "HLL", "Emplacement = '102'") Select Case DLookup("[condition]", "HLL", "Emplacement = '102'") Case "travaux" Me!Ctl102.ForeColor = RGB(255, 0, 0) Case "disponible" Me!Ctl102.ForeColor = RGB(0, 0, 0) Case "entretien" Me!Ctl102.ForeColor = RGB(241, 166, 85) End Select DoCmd.OpenForm "HLL", , , "Emplacement = '102'" End Sub
Bonjour,
J'ai relu un peu toutes les interventions.
Je pense que ton problème vient de l'utilisation que tu fais de ton code.
Si j'ai bien compris.
1) A l'ouverture de ta base, tu ouvres un formulaire contenant X boutons, soit le nombre de machine que tu as.
2) Tu désires que la couleur de la police des boutons reflete l'état des machines.
3) sur click d'un bouton, tu ouvres un formulaire affichant les carctéristiques de ta machine.
4) Eventuellement, tu modifies l'état de la machine.
5) Tu fermes le formulaire et tu désires que le bouton correspondant affiche la couleur correspondant au nouvel état de la machine.
Est-ce bien cela ?
Domi2
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)
Ici, on ne perd pas de temps ! On en passe...
Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus
Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Re,
Aors, il te faut faire quelques légères modifications. Le code que tu as fait avec l'aide de Starec reste cependant valable dans l'ensemble.
1) Pour chaque bouton, la procédure sur click est simplifiée et devient simplement (En remplaçant le numéro d'emplacement) :
2) Ensuite tu vas créer une nouvelle fonction dans un module standard, que tu appelleras par exemple CouleurBouton, et dans laquelle tu vas placer ton ancien code, utilisé pour chacun des boutons. Cela donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Ctl102_Click() DoCmd.OpenForm "HLL", , , "Emplacement = '102'" End Sub
Tu remarqueras au passage que tu dois changer Me!Ctl.. par la désignation complète du formulaire. Tu dois donc remplacer "frmbouton" par le nom de ton formulaire.
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 Function CouleurBouton() Select Case DLookup("[condition]", "HLL", "Emplacement = '102'") Case "travaux" Forms!frmBouton!Ctl102.ForeColor = RGB(255, 0, 0) Case "disponible" Forms!frmBouton!Ctl102.ForeColor = RGB(0, 0, 0) Case "entretien" Forms!frmBouton!Ctl102.ForeColor = RGB(241, 166, 85) End Select Select Case DLookup("[condition]", "HLL", "Emplacement = '103'") Case "travaux" Forms!frmBouton!Ctl103.ForeColor = RGB(255, 0, 0) Case "disponible" Forms!frmBouton!Ctl103.ForeColor = RGB(0, 0, 0) Case "entretien" Forms!frmBouton!Ctl103.ForeColor = RGB(241, 166, 85) End Select 'Etc... pour chacun de tes boutons End Function
Et cette fonction, tu vas l'appeler lors de l'ouverture de ton formulaire qui contient les boutons :
Et à la fermeture de ton formulaire "HLL".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Form_Open(Cancel As Integer) CouleurBouton End Sub
Pas testé, mais ça devrait le faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Form_Close() CouleurBouton End Sub
Domi2
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)
Ici, on ne perd pas de temps ! On en passe...
Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus
Ce message (ou un autre) vous a aidé ? Votez pour lui avec
marche pas
erreur sur la ligne DoCmd....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Ctl101_Click() DoCmd.OpenForm "HLL", , , "Emplacement = '101'" End Sub
Re,
"Emplacement" est de quel type ? Numérique ou texte ?
Domi2
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)
Ici, on ne perd pas de temps ! On en passe...
Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus
Ce message (ou un autre) vous a aidé ? Votez pour lui avec
numerique
mais je comprend pas trop là :
Tu remarqueras au passage que tu dois changer Me!Ctl.. par la désignation complète du formulaire. Tu dois donc remplacer "frmbouton" par le nom de ton formulaire.
Re,
AlorsPour ta deuxième question. Comme la fonction n'est plus placée dans le code du formulaire qui contient les boutons, tu ne peux plus utiliser "Me". tu dois déclarer le nom complet de l'objet qui contient le contrôle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.OpenForm "HLL", , , "Emplacement = " & 101
ainsi, si le formulaire qui contient tes boutons s'appelle "FormBoutons", tu dois écrire :
et non plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part Forms!FormBoutons!Ctl102.ForeColor = RGB(255, 0, 0)
Domi2
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me!Ctl102.ForeColor = RGB(255, 0, 0)
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)
Ici, on ne perd pas de temps ! On en passe...
Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus
Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager