FAQ MS-Access

FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
Sommaire→Formulaires→Contrôles→Zones de texte- 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 bleuPremiè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 subUne 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 subLien : 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 SubCette 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 SubIl 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 SubLien : 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 SubPour 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 = 1000Pour l'arrêter :
Me.TimerInterval = 0


