FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- Comment changer la couleur du texte d'une zone de texte ?
- Comment changer la couleur de fond d'une zone de texte ?
- Comment masquer/rendre invisibles toutes les zones de texte vides ?
- Comment masquer ce qui est tapé dans une zone de texte (pour un mot de passe) ?
- Comment avoir un TextBox (zone de texte) multiligne ?
- Comment utiliser une zone de texte comme un champ de calcul (comme dans Excel) ?
- Comment s'assurer qu'un utilisateur n'a saisi que des chiffres et aucune lettre dans une zone de texte ?
- Comment limiter le nombre de caractères saisis dans une zone de texte indépendante ?
- Comment remplacer la virgule par un point dans une zone de texte ?
- Comment mettre un champ de type texte clignotant ?
- 7.1.2.1. Zones de texte Trucs et Astuces (2)
MaZoneTexte.ForeColor
=
QBColor
(
1
) '(Pour le bleu)
MaZoneTexte.ForeColor
=
QBColor
(
4
) '(Pour le rouge)
MaZoneDeTexte.BackColor
=
QBColor
(
1
) 'pour du bleu
Première solution :
Private
Sub
Form_Current
(
)
Dim
ctl As
Control
' Pour chaque contrôle du formulaire
For
Each
ctl In
frm.controls
' On vérifie que le contrôle est bien une zone de texte
If
ctl.ControlType
=
acTextBox Then
' On vérifie le contenu du contrôle
If
nz
(
ctl.Value
,""
) =
""
Then
' Il est vide on le rend invisible
ctl.Visible
=
False
End
If
End
If
Next
ctl
End
sub
Une autre solution en utilisant TypeOf :
Private
Sub
Form_Current
(
)
Dim
ctl As
Control
' Pour chaque contrôle du formulaire
For
Each
ctl In
frm.Controls
' On vérifie que le contrôle est bien une zone de texte
If
TypeOf ctl Is
TextBox Then
' On vérifie le contenu du contrôle
If
Nz
(
ctl.Value
,""
) =
""
Then
' Il est vide on le rend invisible
ctl.Visible
=
False
End
If
End
If
Next
ctl
End
sub
Lien : Comment rendre des colonnes d'un formulaire invisibles ?
Il faut utiliser le masque de saisie de la zone de texte. Tapez "password" ou "Mot de passe" (sans les guillemets) dedans.
Lien : Comment éviter qu'Access ne corrige automatiquement les mots saisis dans un contrôle ?
Allez dans les propriétés de la zone de texte :
Onglet Autres, effet touche entrée --> Nouvelle ligne dans le champ.
On peut également utiliser la propriété Onglet Toutes, Barre de défilement --> Verticale. Sinon il est toujours possible de passer à la ligne avec un simple Ctrl+Entrée.
Lien : Comment afficher un texte d'info-bulle sur plusieurs lignes ?
Par exemple vous voulez taper 3+4 dans une zone de texte et qu'elle vous affiche 7 : Utilisez un bouton dans lequel vous mettrez le code suivant (Input est la zone de texte) :
Me!Input =
Eval
(
Nz
(
Me!Input, 0
))
Sur pression du bouton, le calcul s'effectuera.
Papy Turbo :
Private
Sub
ControlNumerique_KeyPress
(
KeyAscii As
Integer
)
If
(
KeyAscii >
31
And
KeyAscii <
48
) Or
(
KeyAscii >
59
) Then
Beep
KeyAscii =
0
End
If
End
Sub
Cette solution empêche d'insérer autre chose qu'un chiffre dans la zone de texte. Les virgules sont acceptées.
Une autre solution consiste à laisser l'utilisateur saisir ce qu'il veut, puis avant de valider la saisie, d'en vérifier le contenu (FRED.G) :
Private
Sub
txtAtteindre_BeforeUpdate
(
Cancel As
Integer
)
' Le code suivant sert à vérifier que la valeur spécifiée _
' dans le contrôle txtAtteindre est de type numérique :
With
Me!txtAtteindre
' On applique la fonction IsNumeric à la propriété Value du contrôle sélectionné _
'afin de vérifier si le type est bien du numérique :
If
Not
IsNumeric
(
.Value
) Then
' On avertit l'utilisateur :
MsgBox
"Vous devez saisir un numéro d'enregistrement valide."
, vbExclamation
' On repositionne le curseur sur le contrôle sélectionné :
.SelStart
=
0
' Positionne le curseur au début du champ
.SelLength
=
Len
(
.Value
) ' Sélectionne l'ensemble des données affichées dans le champ
' On annule la mise à jour de l'événement BeforeUpdate en utilisant son argument Cancel :
Cancel =
True
End
If
End
With
End
Sub
Il faut traiter l'événement KeyDown de la zone de texte et vérifier la taille du texte déjà inscrit. Ainsi, si le texte ne doit pas dépasser dix caractères, on aura :
Private
Sub
Texte13_KeyDown
(
KeyCode As
Integer
, Shift As
Integer
)
If
Len
(
Texte13) >
9
Then
KeyCode =
0
End
Sub
Lien : Comment contrôler la saisie, empêcher la saisie de certains caractères ?
Lorsque vous utilisez le point du pavé numérique, Access le convertit en virgule suivant les options régionales de Windows. Cela se transforme en France par une virgule.
Pour éviter cela, vous pouvez modifier le caractère saisi lors de la frappe de la zone de texte (événement Touche appuyée).
Private
Sub
MonTextBox_KeyPress
(
KeyAscii As
Integer
)
If
KeyAscii =
59
Then
KeyAscii =
46
End
Sub
Pour donner de l'effet à votre contrôle, vous pouvez le rendre clignotant :
Sur l'événement Sur minuterie de votre formulaire mettez ce code :
Me.MonControl.Visible
=
Not
(
me.MonControl.Visible
)
Ensuite il y a deux façons de lancer la minuterie :
En fixe
Sur l'événement Intervalle minuterie du formulaire, la base de temps est en millisecondes.
Exemple : 1000 provoque l'exécution du code Sur minuterie toutes les secondes.
En VBA
Le principe du code est de lancer la minuterie et de paramétrer le temps par code, ceci peut être pratique
pour lancer le code à un moment précis.
Pour le lancement :
Me.TimerInterval
=
1000
Pour l'arrêter :
Me.TimerInterval
=
0