Sunteți pe pagina 1din 33

Mise en surbrillance d'un enregistrement

dans un formulaire
Date de publication : 24/02/2005 , Date de mise jour : 24/05/2006
Par Jean-Philippe AMBROSINO (home page)

Ce document a pour but de vous montrer comment mettre en vidence un
enregistrement dans un formulaire. Vous devez matriser la conception de formulaire et
connaitre le langage Visual Basic for Application pour mettre en oeuvre cet exemple et
savoir manipuler plus particulirement les RecordSets et DAO.
2 commentaires

Version PDF Version hors-ligne



1. Avant propos
1-1. Remerciements
1-2. Contact
2. Prsentation du formulaire exemple
2-1. Cration du formulaire
2-1-1. Conception du formulaire avec l'assistant
2-1-2. Conception du formulaire manuellement
2-1-3. Mise en forme des champs
3. Cration de la fonction retourant le N de ligne
3-1. Visual Basic Editor
3-2. vnement sur le formulaire
3-2-1. L'vnement Sur Clic (Form_Click)
3-2-2. L'vnement Sur Activation (Form_Current)
3-2-2. La propprit SelTop
4. Passage en mode formulaire pour visualiser
4-1. Modification des proprits du contrle txtBackground
4-1-1. Cration d'un autre vnement pour le contrle txtBackground
5. Colorier les champs sans la zone d'arrire plan
6. Conclusion
7. Tlchargement



1. Avant propos
Ce document a pour but de vous montrer comment mettre en vidence un
enregistrement dans un formulaire.
En effet, dans une liste d'enregistrements, seule la flche situe gauche (pour peu que
vous l'ayez affiche) est seule mme de vous donner la position de l'enregistrement en
cours. Ce document montre comment colorier l'arrire plan de l'enregistrement actif.



1-1. Remerciements
Je tiens remercier tout particulirement Messieurs Maxence Hubiche et Olivier alias
Bestiol ainsi que toutes celles et ceux qui ont particip la relecture de ce document en y
incluant leurs remarques.



1-2. Contact
Pour tous renseignements complmentaires, veuillez me contacter directement
(Argyronet) par MP.



2. Prsentation du formulaire exemple
L'objectif de ce tutoriel est de vous montrer qu'il est possible de mettre en vidence un
enregistrement (qui est l'enregistrement actif) par l'intermdiaire d'une bande de
couleur, ce qui permet de le visualiser immdiatement.

Le formulaire en mode formulaire

Vous pouvez constater que ce formulaire est volontairement dpourvu du slecteur et du
diviseur d'enregistrements.
J'ai galement pour les mmes raisons d'esthtique, supprim les boutons de
dplacement.



Le formulaire en mode cration (Design)

Lorsque l'on passe en Mode Cration, vous pouvez remarquer que derrire les champs
se trame une espce de zone illisible bleue (couleur que j'ai choisie). C'est cette mme
zone qui va nous servir de bande colore.



Dtail des lments utiliss

Pour mettre en application ce tutoriel, vous avez besoin de deux champs cachs et un
champ principal reprsentant la bande colore...
Nous allons aborder au pas pas chaque tape pour aboutir au rsultat final.



Le champ reprsentant la bande colore est une zone de texte dont vous dterminez la
couleur et dans lequel vous insrez une formule:


Formule du champ indpendant txtBackGround


Formule du champ txtBackground

=VraiFaux([SelTop]=[ctlCurline];"";Null)
Pourquoi utiliser le caractre ?

Eh bien dans la police utilise par la zone de texte qui contient cette formule, le
renvoie un carr plein.

Je ne sais si vous avez eu l'occasion de dvelopper sous DOS, mais l'poque (ouh l je
suis vieux !) o moi-mme je le faisais, le seul moyen de contruire des cadres d'cran
(eh oui, on ne parlait pas de formulaire en ce temps l) consistait exploiter les
caractres de la table ASCII concerns.

En l'occurence et pour n'en citer que quelques uns, le jeu compris entre 170 et 223.

Il s'avre que la police qui permet d'afficher ces caractres est encore disponible: il s'agit
de la police Terminal.


Il est probable que selon la version de Windows que vous utilisez, la police Terminal
ne soit pas disponible,
son vrai nom tant vga850.fon ou encore vgaoem.fon, il apparat qu'elle n'est pas
prsente dans les versions ultrieures Windows 98 et les seuls privilgis qui
risquent de la dtenir sont ceux qui ont procd une mise niveau de leur systme
vers 2000 ou XP.
Vous pouvez alors utiliser la police Arial Alternative Symbol la place mais il vous
faudra remplacer le par un T majucule
ou un j minusucule et jouer avec un nombre un peu plus grand de caractres que
prvu...
=> Vous pouvez tlcharger l'une ou l'autre police en fin de document.
Note:
Il vous faudra dterminer le nombre de caractres .
Ici, j'en ai mis 100. Aprs quelques essais, il s'avrait que c'tait le nombre ncessaire
pour qu'il ne subsiste aucun blanc de part et d'autre du formulaire. Je suis pointilleux
sur l'aspect finition des formulaires. Il s'agit d'une police cran et non pas d'une police
dite True Type.

Deux champs cachs rduits zro en largeur (voir image ci-dessous) sont ddis
recevoir respectivement le rsultat d'une fonction pour l'un et le rsultat d'une proprit
pour l'autre. Cette fonction dtermine la position de l'enregistrement en cours. Quant la
proprit, elle dtermine le rectangle de slection correspondant galement
l'enregistrement en cours...







2-1. Cration du formulaire

Si vous souhaitez mettre en place cette fonctionnalit sur un formulaire existant, passez
directement la section 2.1.3.
Vous pouvez indiffremment construire votre formulaire manuellement ou l'aide de
l'Assistant.
Bien entendu, l'exemple trait ne refltera pas les champs qui composent votre propre
formulaire.



2-1-1. Conception du formulaire avec l'assistant
Etape 1
Depuis la fentre Base de donne, choisissez Nouveau
L'image ci-aprs apparat et vous slectionnez alors Assistant Formulaire
Vous slectionnez ensuite une table ou une requte dans la liste du dessous qui sera la
source du formulaire.

Cliquez sur Suivant


Etape 2
Les deux zones de liste reprsentent respectivement les champs disponibles (ceux issus
de votre table ou de votre requte) et les champs incorporer dans le formulaire.
Dans mon exemple, j'ai choisi une requte o j'avais pralablement inclu les champs qui
m'intressaient. J'ai donc cliqu sur le bouton >> qui a pour effet d'envoyer l'ensemble
des champs dans la liste de droite.

A vous de dterminer dans votre propre formulaire ceux dont vous avez besoin.

Cliquez sur Suivant


Etape 3
Le choix de la prsentation se dtermine dans cette tape o vous choisissez Tabulaire.

Cliquez sur Suivant


Etape 4
Ici, vous slectionnez la couleur de l'arrire plan de votre formulaire. Les images issues
de la liste des fonds disponibles sont limites 9 par dfaut.
Personnellement, je prfre dfinir mes arrires plan moi-mme en slectionnant des
couleurs plutt pastels en mode cration.
Ici, vous tes contraint d'en choisir un puisque vous tes pass par l'Assistant. Pour cet
exemple, nous choisirons "Expdition"

Cliquez sur Suivant


Etape 5
Vous donnez alors un titre votre formulaire (qui sera galement le nom du formulaire).


L je prcise que personnellement, je ne nomme jamais mes objets avec des espaces.
Bien qu'Access autorise cette possiblit, elle est contraignante car elle oblige poser
des crochets autour des noms de ces derniers lorsque vous utilisez ces objets en VBA
pour coder une fonction ou une procdure.
Vous cochez ensuite l'option "Modifier la structure du formulaire" et cliquez sur
Terminer.


Formulaire gnr
Le formulaire est donc prt tre modifi:

- Agrandissez la section Dtail
- Si la barre d'outils Bote outils n'est pas visible, affichez-l
- Slectionnez le bouton Zone de texte
- Amenez votre pointeur de souris sur la zone libre de la section dtail et dessinez un
rectangle comme l'illustre l'image de la section 2-1-3. Mise en forme des champs




2-1-2. Conception du formulaire manuellement
Au cas o vous souhaiteriez concevoir le formulaire manuellement, depuis la fentre Base
de donne, choisissez Nouveau
L'image ci-aprs apparat et vous slectionnez alors Mode cration


Vous pouvez d'entre slectionner une table ou une requte dans la liste du dessous qui
sera la source du formulaire mais vous pourrez galement la slectionner utlrieurement.

Cliquez sur OK

Etape 1
Le formulaire se prsente vide avec seulement la section Dtail visible.


Etape 2
Dans le menu affichage, slectionnez En-tte/pied de formulaire de manire
subdiviser la section en trois parties, opration indispensable pour passer en Mode
Continu.


Etape 3
Depuis la barre d'outils, localisez le bouton pour afficher les proprits du formulaire.

Dans l'onglet Toutes, pointez sur la proprit Source afin de slectionner la table ou la
requte correspondante.

Depuis la barre d'outils, localisez le bouton pour afficher la Liste des champs
correpondants.


Etape 4
La liste des champs va vous permettre de poser les champs sur le formulaire comme
l'illustre la figure ci-dessous.


Etape 5
Une fois poss, vous devez les agencer de manire les rpartir quitablement sur les
diffrentes zones.
Profitez en pour largir la zone Dtail en amenant votre pointeur sur le bord droit de
la section dtail et en tirant sur la droite comme ci-dessous.


Etape 6
Voyez comment vous allez ranger vos champs.


Etape 7
Dans cette tape, vous devez la fois agencer la section Dtail et couper les tiquettes
de l'ensemble des champs en deux oprations successives. Commencez par dessiner un
rectangle autour des tiquettes en prenant soin de ne pas toucher les zones de texte,
comme ci-dessous.


Ensuite, choisissez dans le menu Edition la commande Couper ou bien l'aide du
raccourci clavier, tapez Ctrl + X
Les champs disparaissent alors...
Cliquez sur la section En-tte de Formulaire et choisissez dans le menu Edition la
commande Coller ou bien l'aide du raccourci clavier, tapez Ctrl + V

Une fois cela fait, prenez les tiquettes une une et placez-les de telle sorte que
l'agencement global ressembe un tableau.


Si ncessaire, redimensionnez la section Dtail
Vous pouvez prendre plusieurs tiquettes ensemble l'aide de la touche Shift (Maj)
au moment o vous cliquez dessus.

Etape 8
Une fois termin, vous devez obtenir quelque chose qui ressemble ceci... Dans notre
exemple, le champ IDMember (qui est la cl primaire de la table) va tre masqu et sa
largeur sera rduite zro.
Il sera par l-mme, plac sur le bord gauche de la section dtail.



Souvent, le champ de cl primaire est un compteur et il est parfois inutile de le voir
apparatre sur le formulaire ; En tout cas, c'est notre cas ici. Je supprimerai donc
galement son tiquette...
Bien qu'invisible, il est impratif de laisser ce champ disponible car il sert non
seulement localiser l'enregistrement mettre en surbrillance mais il peut aussi
servir localiser un enregistrement partir d'un autre formulaire.
Vous avez maintenant termin la premire partie...
Il nous reste mettre en place les champs, les formules et le code consquent cet
exercice.



2-1-3. Mise en forme des champs
Etape 1
Commencez par slectionner l'outil Zone de Texte et dessiner une rectangle sur la
partie libre de la section Dtail que vous aurez pralablement agrandie.


Etape 2
Vous obtenez un champ avec son tiquette.


Access numrote de faon incrmentielle paire ou impaire les contrles et ce dans la
session en cours.

Etape 3
Nous allons donc affecter diffrentes proprits notre contrle qui est ddi tre la
bande colore de l'enregistrement actif.
Vous appliquerez donc ce contrle, les proprits suivantes:
1. La police: Terminal
2. La couleur de la police: Bleue, mais vous pouvez en choisir une autre en fonction de
la couleur de fond de votre formulaire.
3. La taille: 20 (Il est probable que vous ayez besoin d'une taille suprieure ; Vous
ajusterez en fonction de vos besoins)
4. La couleur de fond: Aucune (Transparente)
5. Le nom: txtBackground (N'importe quel nom fera l'affaire mais choississez un nom
circonstanciel)

Vous devez obtenir alors:


Etape 4
Vous supprimez l'tiquette qui est absolument inutile pour ce champ.


Etape 5 Vous slectionnez le champ (8 points d'ancrage dlimitent ce dernier).
Vous affichez ensuite, par l'intermdiaire du bouton situ sur la barre d'outils, les
proprits de ce champ.
Vous pointez la proprit Source contrle (ControlSource) et entrez la formule
suivante:
Formule du champ txtBackground

=VraiFaux([SelTop]=[ctlCurline];"
";Null)
Ainsi que je l'ai expliqu ci-avant, il vous faudra dterminer le nombre de caractres
saisir.


Etape 6
Nous allons crer un second contrle qui est ddi recevoir le numro de ligne de
l'enregistrement en cours.


Nous allons lui affecter les proprits suivantes:

1. La source de contrle (ControlSource): =fnctGetLineNumber() (vu en dtail ci-
aprs)
2. Le nom: ctlCurline (N'importe quel nom fera l'affaire mais choississez un nom
circonstanciel)


Ensuite, vous devez rduire la largeur de ce champ zro. En effet, ce champ ne doit
pas et d'une, encombrer votre environnement de travail et de deux, tre visible car bien
que rduit zro, il reste vue.
Vous afficherez donc ses proprits nouveau et dans l'onglet Format (Etape 7 ci-
aprs), posez respectivement les valeurs Non pour Visible et 0 pour la Largeur. Vous
pouvez toutefois rduire le contrle la souris comme illustr.


Etape 7
C'est ici que vous dfinissez les proprits du champ.
Vous pouvez voir que le contrle positionn en haut et gauche.


Etape 8
Nous allons crer le troisime et dernier champ comme prcdemment.
Pour ce champ, vous dfinissez les proprits suivantes:

1. La source de contrle (ControlSource): Aucune
2. Le nom: ctlSelTop (N'importe quel nom fera l'affaire mais choississez un nom
circonstanciel)
2. Largeur: 0 (Comme pour le contrle ctlCurline)
2. Haut: 0 (Top)
2. Gauche: 0 (Left)
2. Visible: Non (False)

Pour ce dernier, vous supprimerez galement l'tiquette qui est inutile.


Etape 9
Il ne vous reste plus qu' juxtaposer ce champ txtBackground la Section Dtail et
de ramener la section Pied de formulaire juste au dessous.
Vous ajusterez de faon identique la section En-tte de formulaire.
Vous pouvez attribuer une police diffrente pour les tiquettes, changer les diffrentes
couleurs de fond etc.


C'est termin pour la partie formulaire...



3. Cration de la fonction
retourant le N de ligne
Pour crer la fonction retournant le numro de ligne, vous devez connatre le language
VBA. Enfin, quand je dis connatre, c'est prfrable pour vous dans le sens o cet
exercice est suffisament explicite pour que vous puissiez le mettre en application mme
si ce language reste un mystre.
Disons que pour un confort d'utilisation et de maintenance, vous devez vous familiariser
avec les procdures vnementielles, les objets Recordset, les boucles et les gestions
d'erreurs.



3-1. Visual Basic Editor
Pour la partie code VBA, vous allez appeler l'diteur Visual Basic Editor (VBE) selon
plusieurs possibilits :

1. La combinaison de touche ATL + F11
2. Le menu contextuel de la fentre sur la partie grise o vous choisissez Crer code
vnement.
3. Le bouton Crer situ dans la barre d'outils
4. La fentre de proprits depuis l'onglet vnement


Dans la partie centrale, vous recopiez la fonction ci-dessous.


Fonction fnctGetLineNumber retournant la ligne de l'enregistrement actif

Function fnctGetLineNumber() As Long
'''-----------------------------------------------------------
''' Mise en subrillance des enregistrements
''' Source : Developpez.com
'''-----------------------------------------------------------
Dim oRS As Recordset
Dim oForm As Form
Dim strPKFieldName As String
Dim lngLineNumber As Long
Dim lngValueToMatch As Long

Set oForm = Form
strPKFieldName = "IDMember"
lngValueToMatch = Me!IDMember

On Error GoTo L_ErrLineNumber
Set oRS = oForm.RecordsetClone
oRS.FindFirst "[" & strPKFieldName & "] = " & lngValueToMatch
Do Until oRS.BOF
lngLineNumber = lngLineNumber + 1
oRS.MovePrevious
Loop
oRS.Close
L_ExLineNumber:
fnctGetLineNumber = lngLineNumber
Set oRS = Nothing
Set oForm = Nothing
Exit Function
L_ErrLineNumber:
lngLineNumber = 0
Resume L_ExLineNumber
End Function
Ce qui donne alors


Puis vous choisissez dans la liste des objets, l'objet Form.
Cette slection va crer un vnement qui, par dfaut pour celui-ci, est Form_Load().
Vous laissez tel que car nous ne nous servirons pas de cet vnement dans ce tutoriel...


Vous pointez la liste des vnements droite puis slectionnez respectivement les
vnements Click() et Current().




3-2. vnement sur le formulaire

Pour provoquer l'effet color sur l'enregistrement, vous devrez appliquer l'objet Form
deux vnements.
Ceci est ncessaire pour que la proprit SelTop soit raffecte chaque fois que l'on
clique sur une ligne d'enregistrement.



3-2-1. L'vnement Sur Clic (Form_Click)
L'vnement Clic (Click) se produit lorsque l'utilisateur appuie puis relche un bouton de
la souris sur un objet.
Dans notre cas, c'est l'vnement Clic (Click) de la section Dtail qui nous intresse.

Vous crirez donc pour l'vnement Click :

Private Sub Form_Click()
Me!ctlSelTop = Me.SelTop
End Sub


3-2-2. L'vnement Sur Activation (Form_Current)
L'vnement Activation (Current) se produit lorsque le focus passe un enregistrement
donn pour en faire l'enregistrement en cours ou bien lorsque le formulaire est Actualis
par un autre vnement. L'vnement qui provoque le fait que le formulaire est actualis
sous entend qu'un certain nombre d'oprations ont t effectues par vous-mme ou par
un tiers en environnement Multi-Utilisateurs.
Je sous-entends ici que les enregistrements ajouts sont affichs autant que ceux qui ont
t supprims disparaissent et bien entendu, les enregsitrements ayant t mis jour
s'actualisent par la mme occasion, toutes ces oprations ayant lieu en mme temps.

Vous crirez donc pour l'vnement Current :

Private Sub Form_Current()
Me!ctlSelTop = Me.SelTop
End Sub


3-2-2. La propprit SelTop
La proprit SelTop dtermine ou spcifie quelle ligne d'enregistrement se trouve en
haut du rectangle de slection.
Le rectangle de slection est dfini par les lignes et les colonnes slectionnes dans la
feuille de donnes d'une table ou d'une requte ou d'un formulaire en mode continu.
Pour notre cas, la proprit est sollicite dans le formulaire en mode continu.

La proprit SelTop est un Entier de type Long (Long Integer) dont la valeur est
comprise entre 1 et le nombre d'enregistrements total reprsent par la source de
donnes (RowSource) dans le formulaire en cours.
Si le formulaire est filtr ou est ouvert avec une condition WHERE, la valeur maximum
de la proprit SelTop sera gale au nouveau nombre d'enregistrements correspondant.


Si aucune slection dans le formulaire n'est effectue, la valeur de la proprit
SelTop est alors gale la ligne reprsent par l'enregistrement actif.
Dans notre exemple, j'ai sollicit un contrle Zone de Texte (Textbox) que j'ai nomm
txtBackground et qui compare la valeur de cette proprit par rapport celle retourne
par la fonction fnctGetLineNumber() qui est renseigne dans le champ ctlCurline.
Cette comparaison est tablie par une fonction Microsoft Access interne VraiFaux (IIf)
vue ci-avant et qui renvoie VRAI ou FAUX selon le cas.



4. Passage en mode formulaire
pour visualiser
Une fois ces procdures correctement crites ou copies, fermez l'diteur VBE et
raffichez votre formulaire, toujours en mode Cration.
Choissez dans le menu Affichage la commande Formulaire ou bien cliquez sur le
bouton qui se substitue au bouton mode Cration rprsent par une querre bleue.


Cliquez sur un enregistrement au hasard et l'arrire plan de ce dernier devient bleu (pour
ce cas).



4-1. Modification des proprits du contrle
txtBackground
En effectuant un jeu de clics successifs, vous vous apercevrez vite qu'il y a un
schmurtz...
En effet, de temps autre, le contrle txtBackground passe par-dessus les autres
champs ce qui provoque un effet non attendu. Il vous faut alors dans un premier temps
lui passer la proprit Arrt tabulation Non et ensuite lui affecter un vnement.



4-1-1. Cration d'un autre vnement pour le contrle
txtBackground
Il vous faut alors ajouter un petit bout de code sur l'vnement GotFocus() en sollicitant
un autre contrle ds que ce denier reoit le focus...

Private Sub txtBackground_GotFocus()
Me.FirstName.SetFocus
End Sub

L'vnement Rception focus (GotFocus) se produit lorsqu'un contrle ou le
formulaire lui-mme est activ par l'intermdiaire de la souris ou du clavier.
J'ai choisi le contrle FirstName mais libre vous de slectionner n'importe quel
contrle susceptible de recevoir le focus par dfaut, le but tant de faire en sorte que la
bande bleue reprsente par la Zone de Texte txtBackground ne le reoive jamais.



5. Colorier les champs sans la
zone d'arrire plan
Effectivement, il n'est pas obligatoire de poser une zone colore l'arrire...
Il est tout fait possible de solliciter la Mise en Forme Conditionnelle et colorier les
champs eux-mmes.
Pour ce faire, vous devez alors entrer l'expression dans la zone de 1
re
condition...


Vous validez ensuite et les champs se coloriront en consquence de la mise en forme
choisie mais vous devez poser la condition pour chacun des champs visibles,
videmment...



6. Conclusion
Cette fonctionnalit peut s'avrer utile pour les dveloppeurs exigeants qui souhaitent
fournir des formulaires avec un aspect professionnel.
J'ai t amen mettre en place cette fonctionnalit la demande d'un client pour une
grosse application de gestion et depuis, je l'applique quasi systmatiquement tous mes
formulaires sous forme de liste.
C'est une bonne parade l'environnement Access en mode Formulaire car il faut avouer
que le Diviseur d'enregistrement ne remplit pas assez bien, selon moi et visuellement
parlant, son rle.



7. Tlchargement
Bien que je pense que ce tutoriel est suffisament explicite pour que vous puissiez mettre
en application sur vos applications Access, vous pouvez tlcharger la base exemple pour
vous guider dans vos premiers pas en cliquant ici.

Tlchargement des polices

- La police Terminal
- La police Arial Alternative Symbol













Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou
distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
Responsables bnvoles de la rubrique Access : Christophe Lessirard - Christophe
Warin (Tofalu) -

Vos questions techniques : forum d'entraide Access - Publiez vos articles, tutoriels et
cours
et rejoignez-nous dans l'quipe de rdaction du club d'entraide des dveloppeurs
francophones
Nous contacter - Hbergement - Participez - Copyright 2000-2010
www.developpez.com - Legal informations.

S-ar putea să vă placă și