Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2011, 13h00   #1
Membre régulier
 
Avatar de doncamelo
 
Chargé d'études
Inscription : décembre 2007
Messages : 98
Détails du profil
Informations personnelles :
Localisation : Haïti

Informations professionnelles :
Activité : Chargé d'études
Secteur : Bâtiment

Informations forums :
Inscription : décembre 2007
Messages : 98
Points : 99
Points : 99
Par défaut Mise en forme conditionnelle avec screen.activeControl

Bonjour le Forum,

Mon but est de permettre à l'utilisateur d'identifier le control actif en lui appliquant une couleur de fond.

L'utilisation de la MFC par le menu access fonctionne très bien. Mais mon formulaire comportant un certain nombre de control, j'ai voulu passer par vba.

Le code utilisé est le suivant :

Code :
1
2
3
4
5
6
7
8
9
Private Sub Form_Current()
 
    Dim Lecontrol As Control
 
    Set Lecontrol = Screen.ActiveForm.ActiveControl
    Lecontrol.BackColor = RGB(255, 255, 0) 'RGB(255, 255, 0) = exemple de l'aide en ligne F1
 
 
End Sub
Le message d'erreur est le suivant :

Citation:
Erreur d'exécution '2474'
L'expression entrée requiert que le contrôle se trouve dans la fenêtre active.
Pourriez-vous me dire ce qui ne va pas dans ce code ?

Merci
Doncamelo
doncamelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 11h29   #2
Membre régulier
 
Avatar de doncamelo
 
Chargé d'études
Inscription : décembre 2007
Messages : 98
Détails du profil
Informations personnelles :
Localisation : Haïti

Informations professionnelles :
Activité : Chargé d'études
Secteur : Bâtiment

Informations forums :
Inscription : décembre 2007
Messages : 98
Points : 99
Points : 99
Bonjour,

J'ai essayé de modifier mon code après avoir consulté le tuto ci-dessous:

Code :
http://warin.developpez.com/access/mfc/
Mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_Current()
    Dim MonFormulaire As Form
    Set MonFormulaire = Forms!frmrecherche2
 
    Dim MonControl As String
        MonControl = MonFormulaire.ActiveControl.Name
 
    Debug.Print MonControl
 
    MonControl.FormatConditions.Add acFieldHasFocus
    MonControl.FormatConditions.Item(0).BackColor = vbGreen
End Sub
Et là j'ai un autre message d'erreur :

Code :
1
2
Erreur de compilation
Qualificateur incorrect
L'erreur soulignée est sur la ligne:
Code :
MonControl.FormatConditions.Add acFieldHasFocus
J'ai donc remplacé MonControl par MonFormulaire.ActiveControl.Name
j'ai toujours le même message d'erreur

Auriez-vous une idée ?
doncamelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 13h05   #3
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
bonjour,
La méthode .FormatConditions.Add s'applique sans doute plus à un contrôle qu'à une chaine de caractères

Donc déclare déjà MonControl comme un controle et corrige la suite


__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 13h36   #4
Membre régulier
 
Avatar de doncamelo
 
Chargé d'études
Inscription : décembre 2007
Messages : 98
Détails du profil
Informations personnelles :
Localisation : Haïti

Informations professionnelles :
Activité : Chargé d'études
Secteur : Bâtiment

Informations forums :
Inscription : décembre 2007
Messages : 98
Points : 99
Points : 99
Bonjour micniv,

C'est à ce niveau que je bloque.

Quand je déclare MonControl comme un controle control, j'ai le message :

Code :
1
2
Erreur d'exécution '2474'
L'expression entrée requiert que le contrôle se trouve dans la fenêtre active.
Je tourne en boucle
doncamelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 10h16   #5
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
Une solution simple peut être la suivante :
dans les evts suivants de chaque bouton, tu places le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Private Sub Cmd1_GotFocus()
    With Me.ActiveControl
        .BackColor = RGB(255, 255, 0)
    End With
End Sub
 
Private Sub Cmd1_lostFocus()
    With Me.ActiveControl
        .BackColor = RGB(200, 200, 255)
    End With
End Sub
Ainsi tu n'as pas à utiliser les MFC.
Rq : je suis en acc2003 donc pas testé.
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 21h50   #6
Membre régulier
 
Avatar de doncamelo
 
Chargé d'études
Inscription : décembre 2007
Messages : 98
Détails du profil
Informations personnelles :
Localisation : Haïti

Informations professionnelles :
Activité : Chargé d'études
Secteur : Bâtiment

Informations forums :
Inscription : décembre 2007
Messages : 98
Points : 99
Points : 99
Merci beaucoup micniv,

Ta solution fonctionne parfaitement, mais je n'en démords pas moins de vouloir trouver une solution avec Screen.activeControl.

Je reviendrai sur ce post une fois la solution trouvée.

Encore merci.
Doncamelo.
doncamelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web