Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > Formulaires > Contrôles
        Comment atteindre un contrôle d'un sous formulaire ?
        Comment atteindre un contrôle d'un autre formulaire ?
        '#Supprimé' apparaît dans les contrôles de mon formulaire après avoir supprimé un enregistrement ?
        Comment changer la valeur de plusieurs contrôles en même temps ?
        Est-il possible de créer dynamiquement des contrôles ?
        Comment savoir si un contrôle du formulaire est vide ?
        Quand je suis sur le formulaire B, comment savoir quel bouton a été cliqué pour l'ouvrir ?
        Comment rendre (inv)visible un groupe de contrôles ?
        Comment verrouiller le contrôle d'un formulaire ?
        Comment ajouter une nouvelle page sur le contrôle onglet ?
        Comment préremplir un champ d'un formulaire qu'on ouvre en fonction d'un autre formulaire
        Comment sélectionner une page d'un onglet en VBA
        Afficher une image dans une page d'onglet
        [VBA DAO] Définir la valeur par défaut d'un champ
        Peut-on sauter des champs dans un Formulaire?
        Comment détecter une modification dans n'importe quel champ (dépendant) d'un formulaire
        Existe-t-il un moyen de vérifier la saisie d'un utilisateur dans un champ via des expressions régulières.
        Comment limiter le nombre de caractères à la saisie dans un champ
        Comment désactiver le bouton 'précédent' lorsqu'on est sur le premier enregistrement ?
        Comment faire pour que la première lettre saisie dans un contrôle soit en majuscule, puis les autres en minuscules.
        Comment atteindre un contrôle dont le nom est dans une variable
        Comment énumérer les contrôles d'un formulaire dans une boucle ?
        Comment contrôler la saisie, empêcher la saisie de certains caractères ?
        Je n'arrive pas à définir en vba la valeur par défaut d'un contrôle affichant une date dans un formulaire.
        Comment éviter qu'Access ne corrige automatiquement les mots saisis dans un contrôle ?
        Comment empêcher l'utilisateur de saisir du texte dans un contrôle
        Comment déterminer sur quel contrôle se trouve le focus ?
        Comment forcer l'utilisateur à utiliser la virgule et non le point lors de la saisie de nombres ?
        Pourquoi mon code affiche un nombre décimal dans une étiquette, alors que le champ durée de la requête est en heure abrégé du type hh:mm ?
        Comment créer dynamiquement un contrôle dans un formulaire et lui associer du code vba sur un événement ?
        Comment interdire l'utilisation du clic droit de la souris sur un contrôle ?
        Comment créer dynamiquement un contrôle dans un formulaire et lui associer du code vba sur un événement ?
        Comment récupérer la position du curseur dans un contrôle ?
        Comment déterminer la position d'un contrôle par le code ?
        Comment déplacer le pointeur de la souris vers un contrôle ?
        Comment donner le focus à un controle d'un sous formulaire ?
        Comment afficher une info bulle pendant le survol d'un controle ?
        7.1.1. Zones de liste et zones de liste modifiable (31)
                Y a-t-il moyen d'éliminer la barre de défilement horizontale lors de l'utilisation d'une zone de liste sur plusieurs colonnes?
                Comment dans une zone de liste modifiable, supprimer le message d'erreur 'le texte entre n'appartient pas a la liste' ?
                Comment désélectionner les valeurs d'une liste à choix multiples?
                Absence dans liste déroulante - Proposer d'ajouter la valeur manquante dans la table source
                Comment remettre l'affichage d'une zone de liste modifiable à blanc ?
                Comment connaître le nombre de ligne d'une zone de liste ?
                Comment sélectionner une ligne d'une zone de liste modifiable en VBA ?
                Comment sélectionner une ligne d'une zone de liste en VBA ?
                Impossible de changer la valeur d'une liste ou boîte de texte ?
                Comment Rafraîchir les données de ma zone de liste ?
                Comment modifier la requête source d'une zone de liste modifiable ?
                Comment savoir quelle ligne d'une zone de liste modifiable est sélectionnée ?
                Comment ajouter un ou des éléments à une zone de liste ?
                Comment récupérer la valeur d'une colonne de la ligne sélectionnée dans une zone de liste ?
                Comment autoriser plusieurs sélections dans une zone de liste ?
                Selectionner tous les éléments zone de liste en VBA ?
                Empêcher la mise à jour (modification) d'une zone de liste modifiable tout en permettant la sélection de ligne dans la liste
                Comment selectionner une ligne dans une zone de liste en fonction du texte d'une de ses colonnes ?
                Comment empêcher la saisie au clavier dans une zone de liste ?
                Comment vérifier qu'une valeur existe dans une zone de liste ?
                Comment faire correspondre deux zones de listes
                Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?
                Commer vider le contenu une zone de liste modifiable ?
                Comment récupérer la valeur d'une colonne dans une zone de liste pour une ligne quelconque ?
                Comment archiver les dernières valeurs saisies dans une liste ? (pratique pour les champs de recherche)
                Comment conserver la sélection lors d'un affichage de requetes dans zones de listes
                Comment dérouler une liste modifiable lors de sa réception du Focus ?
                Comment dérouler une liste déroulante sur le survol de la souris ?
                7.1.1.1. Trucs et Astuces (3)
                        Comment limiter le nombre de selections d'une ListeBox ?
                        Ajouter Tous en haut d'une liste déroulante
                        Comment remplir dynamiquement une liste déroulante avec les années ?
        7.1.2. Zones de texte (12)
                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 invisible 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. Trucs et Astuces (2)
                        Comment créer une zone de texte de type ovale ?
                        Renvoyer dans une zone de texte la valeur d'un champ en fonction du contenu d'une zone de liste
        7.1.3. TreeView (5)
                Dans un TreeView, comment remettre en surbrillance le noeud sur lequel on vient d'ajouté un fils ?
                Comment récupérer les lignes cochées d'un Treeview ?
                Connaitre la génération d'un noeud dans un treeview
                Comment imprimer un control de type Treeview ?
                Comment piloter le clic droit dans un contrôle TreeView ?
        7.1.4. Onglet (3)
                Quel est l'évènement qui permet de savoir quand on entre dans une page d'un contrôle onglet.
                Comment avoir le nom de l'onglet ou autre auquel appartient un contrôle ?
                Comment mettre des couleurs sur un contrôle onglet ?

precedent    sommaire    suivant   


Comment atteindre un contrôle d'un sous formulaire ?
auteur : FRED.G
Exemple pour une zone de texte :
Forms![NomFormulaire]![NomSousFormulaire].Form![MaZoneDeText]
lien : Comment atteindre un contrôle d'un autre formulaire ?

Comment atteindre un contrôle d'un autre formulaire ?
auteur : FRED.G
Voici le code le permettant :
Forms![NomFormulaire]![MaZoneDeText]
lien : Comment atteindre un contrôle d'un sous formulaire ?

Comment changer la valeur de plusieurs contrôles en même temps ?
auteur : Team Access
Pour changer la valeur des CheckBox :
For Each ctrl In Me.Controls 
If ctrl.ControlType = acCheckBox Then 
    ctrl.Value = 0 
End If 
Next ctrl
Sinon, si vous respectez les normes de préfixes pour les noms de contrôles, voici une solution :

Dim ctl As Control 

For Each ctl In Me.Controls 
    'On vérifie les 3 première lettre du nom du contrôle
    Select Case Left(ctl.Name, 3) 
        'Si c'est une chekBox
        Case "chk" 
            ctl.Value = -1 
        'Si c'est un label
        Case "lbl" 
            ctl.Caption = "- * - * -" 
        'Si c'est une zone de texte
        Case "txt" 
            ctl.Visible = False 
            ctl.Value = "" 
        'Si c'est un combo
        Case "cmb" 
            ctl.Visible = False 
    End Select 
Next ctl
Il faut donc respecter une certaine norme dans l'appellation des contrôles. Le nom d'une zone de texte commence par "txt" (ex : txtNom), les labels par "lbl", ...

lien : fr Normalisation des noms

Comment savoir si un contrôle du formulaire est vide ?
auteur : Demco
Utiliser la fonction Nz() :
If Nz(Me.MonChamp, "") = "" Then
 MsgBox "Champ vide"
End If
Ou alors la fonction len() :
If Len(Me.MonChamp) = 0 Then
 MsgBox "Champ vide"
End If

Comment rendre (inv)visible un groupe de contrôles ?
auteur : Maxence HUBICHE
Placer un groupe d'options (contrôle appartenant à la boîte à outils), modifiez ses attributs :
-> Apparence à "A deux dimensions"
-> style de bordure à "Transparent"
De cette manière le Groupe d'options ne se voit pas.
Placer tous les contrôles dessus.

Si votre Groupe d'options s'appelle MonGroupe, il suffit de faire :
MonGroupe.Visible = False
pour le rendre invisible et son contenu
MonGroupe.Visilble = True 
pour le faire réapparaître et son contenu.


Comment verrouiller le contrôle d'un formulaire ?
auteur : Frank
MonControle.Locked = True
Pour le rendre à nouveau modifiable :

MonControle.Locked = False

Comment ajouter une nouvelle page sur le contrôle onglet ?
auteur : Drosera
Il faut utiliser la méthode Add du contrôle onglet. L'ajout d'une page d'onglet doit se faire dans le formulaire en mode création.
Ce code ouvre le formulaire 'NomDuFormulaire' en mode création et ajoute une page au contrôle onglet 'NomDuControlOnglet' .
DoCmd.OpenForm "NomDuFormulaire", acDesign 
Forms("NomDuFormulaire")("NomDuControlOnglet").Pages.Add 

Comment préremplir un champ d'un formulaire qu'on ouvre en fonction d'un autre formulaire
auteur : Maxence HUBICHE
Attaquons en essayant d'être le plus synthétique possible :
1- le langage VBA est un langage basé sur plusieurs bibliothèques. Tu peux les explorer en faisant F2 depuis un module quelconque. (Je dirai même, tu DOIS les explorer...). Pour gérer ces bibliothèques, il faut aller dans Outils/Références, où une boite de dialogue te liste les références actives dans le projet (la base de données...) et les autres références existant sur ton ordinateur.
2- pour trouver de l'aide il te faut prendre de bonnes habitudes : la rechercher d'abord dans l'aide en ligne. Pour cela, sur les mots que tu ne connais pas, appuies sur le touche F1. Tu obtiendras ainsi l'aide relative au mot sélectionné. C'est une partie extrêmement importante. Il faut lire beaucoup d'informations pour progresser en VBA. la rechercher ensuite dans les posts existant sur le site. Pour cela, il y a un outils rechercher en haut de chaque page. Enfin, si après tout cela, tu n'as toujours pas trouvé, alors il faut poser la question le plus clairement possible en donnant tous les moyens à ceux qui seraient amenés à te répondre de comprendre ce que tu veux. J'en profite pour t'indiquer que le lien dans ma signature m'a beaucoup fait rire, à propos de la manière de poser des questions.

Ceci étant posé, examinons ton problème. Tu souhaite que, lorsque tu cliques sur un bouton d'un premier formulaire (formAuteurs), un autre formulaire (formLivres) s'ouvre et que ce dernier soit prérempli avec une information venant du premier formulaire.

En examinant ce problème, on détermine 2 prédicats importants : Quand et Quoi. Quoi détermine la ou les actions à entreprendre. Quand détermine le moment où elles sont déclenché, l'évènement qui les lance.

Examinons d'abord le QUOI
Ouvrir un formulaire donné (formLivres) en lui passant un élément du formulaire courant. Cette ouverture doit se faire en mode ajout. Nous avons donc préparé un formulaire formLivres basé sur la table des livres. Si nous travaillions de manière interactive avec access, nous prendrions l'option 'OUVRIR' du formulaire, après avoir sélectionné son nom. Nous allons faire de même, mais en code. La ligne suivante :

Application.DoCmd.OpenForm "formLivres",,,,acFormAdd,,me.[N°Auteur] 
retrace exactement cette demande : On y retrouve une première indication importante :

Application.DoCmd.OpenForm  
qu'on pourrait traduire par : "Dans l'application Access en cours (Application), faire la commande (DoCmd) ouvrir le formulaire (OpenForm)" Ouvrir le formulaire d'accord, mais lequel ? Comment ? en mode création ? en boite de dialogue ? en filtrant les données ? ... beaucoup de questions dont on trouvera la réponse dans la suite de la ligne : Copies la ligne dans un module, puis fait F1 après avoir sélectionné OpenForm. Voici un extrait de ce que tu obtiendras : l'aide Access a écrit: expression.OpenForm(NomFormulaire, Afficher, NomFiltre, ConditionWhere, ModeDonnées, Modefenêtre, ArgOuverture) Il s'agit de la syntaxe utilisées pour la méthode OpenForm. La première chose attendue : Le nom du formulaire. Comme c'est du texte qui est attendu, on le mettra entre guillemets"" Afficher correspond au mode d'affichage : en mode création, en mode formulaire, ... par défaut, c'est à dire si tu ne mets rien, ce sera en mode formulaire. NomFiltre et ConditionWhere correspondent à des manières différentes de filtrer, de n'afficher qu'une certaine quantité d'enregistrements. ModeDonnées te permet notamment en mettant acFormAdd de dire que tu ne souhaite qu'ajouter de nouvelles données. ModeFenêtre te permettra par exemple de faire une boite de dialogue Enfin ArgOuverture (que nous appelons, bicoz VBA is in inglich , OpenArgs) te permet de définir une chaine de caractères que recevra le formulaire qui s'ouvre. C'est la raison pour laquelle nous y mettons ME.[N°Auteur], ce qui corresponda à dire : La valeur du contrôle [N°Auteur] qui est en Moi(sous-entendu le formulaire dans lequel se trouve ce code).

Voyons maintenant le QUAND
Il s'agit, d'après ton énoncé de cliquer sur un bouton... Donc, cette action décrite plus haut se fera sur le clique du bouton. Chaque objet des formulaires contient des évènements (actions de l'utilisateur ou du système) que nous pouvons intercepter pour y mettre une série d'actions à entreprendre. Lorsque nous programmons en VBA ces évènements, nous céons ce que nous appelons des procédure evènementielles. Dans ton cas, si tu demandes les propriétés de ton bouton, que tu regardes l'onglet evènements, tu trouveras l'évènement sur clic. Un double-clic dans la zone blanche de droite fera apparaitre [Procédure évènementielle]. Cliques maintenant sur les 3 points à droite, et tu te retrouvera dans un module (celui du formulaire, c'est inscrit dans la barre de titre du module) dans une sub (procédure) déclarée Private( car limitée au formulaire) qui a un nom composé :

Private sub cmdLivres_Click() 

End Sub 
Je suis parti du principe que le bouton s'appelait cmdLivres La première partie du nom fait référence au nom de l'objet, la deuxième à l'évènement concerné. Pour précisier que c'est à ce moment là que nous voulons faire l'action examinée plus haut, il va falloir mettre l'action dans la procédure, ce qui donne le résultat suivant :

Private sub cmdLivres_Click() 
    Application.DoCmd.OpenForm "formLivres",,,,acFormAdd,,me.[N°Auteur] 
End Sub 
La première partie du travail est terminée.

Maintenant que nous avons réussi à ouvrir un formulaire en lui passant des informations, il va falloir que ce dernier (formLivres) exploite ces informations. Alors ? Il va faire QUOI et QUAND ? Tu remarques que nous sommes toujours dans le même cas du Quoi et du Quand! QUOI Il va vérifier s'il a recu un openarg. si c'est le cas, il mettra la valeur recue dans son [N°Auteur], sinon, il n'y a rien lieu de faire. Cela se traduit comme suit :

If IsNull(Me.OpenArgs) Then 
    'rien à faire 
Else 
    Me.[N°Auteur]=Clng(Me.OpenArgs) 
End if 
Si en moi (Me) les OpenArgs ne sont pas définis (IsNull()), alors puisqu'il n'y a rien à faire, nous ne préciserons aucune ligne particulière en dessous, mais juste un petit commentaire. On le fait toujours précéder d'un '(apostrophe). Sinon (Else) mets la valeur de l'openarg convertie en entier long (Clng(Me.OpenArg)) dans le contrôle [N°Auteur] qui est en Moi. Fin des tests (End If). Reste à savoir quand cette vérification doit se faire ! A l'ouverture du formulaire semble êstre une bonne solution. QUAND Dans les propriétés du formulaire formlivres, tu regardes l'onglet des évènements, et tu trouves sur ouverture. tu accède à la procédure évènementielle de la même manière que pour le bouton et tu obtiens :

Private Sub Form_Open(Cancel As Integer) 

End Sub 
Pour que la série d'actions décrites ci-dessus s'accomplissent, tu n'as plus qu'à les mettre dans cette procédure d'évènement. Le résultat est donc :

Private Sub Form_Open(Cancel As Integer) 
If IsNull(Me.OpenArgs) Then 
    'rien à faire 
Else 
    Me.[N°Auteur]=Clng(Me.OpenArgs) 
End if 
End Sub 
En résumé, tu as fait 2 procédure évènementielles; Une que tu déclenches en cliquant sur un bouton. une qui se déclenche à chaque ouverture du formulaire livres. Dans chaque procédure, tu as mis les actions que tu voulais voir s'accomplir à ce moment précis. Ce sont les principe de base que tu viens de voir ici. Il ne te reste plus qu'à acquérir plus de vocabulaire, et de syntaxes. C'est l'expérience ou la formation qui t'amèneront tout ca. Mais dans tous les cas, la lecture de l'aide reste indispensable!


Comment sélectionner une page d'un onglet en VBA
auteur : FRED.G
Il faut définir la propriété Value de l'onglet. Value doit correspondre à la propriété PageIndex (IndexPage) de la page à sélectionner. Exemple :

Me!NomOnglet.Value = 0 

Afficher une image dans une page d'onglet
auteur : Cafeine

MonOnglet.Pages(0).Picture  = "c:\temp\bmpaide.bmp" 
Pour effacer l'image :

MonOnglet.Pages(0).Picture="" 

[VBA DAO] Définir la valeur par défaut d'un champ
auteur : Cafeine

Dim fldDate As DAO.Field 
Set fldDate = CurrentDb.TableDefs!NomTable.Fields("MonChampDate") 
fldDate.DefaultValue = "Now()" 
Set fldDate = Nothing 
lien : fr Définition et manipulation de données avec DAO par Tofalu
lien : faq Comment déclarer une référence dans MS-Access ?

Peut-on sauter des champs dans un Formulaire?
auteur : Maxence HUBICHE
Dans les propriétés du controle, Solution 1 : Arrêt tabulation=non Solution 2 : activé = non


Comment détecter une modification dans n'importe quel champ (dépendant) d'un formulaire
auteur : Team Access

Lorsqu'un formulaire dépendant subit des modifications sur un de ses champs,
son évènement Si Modification (Dirty) est déclenché.


D'autre part, si vous ne souhaitez pas utiliser cet évènement, il existe aussi la propriété Dirty du
formulaire dont la valeur est égale à True lorsque le contenu de celui-ci est modifié


Existe-t-il un moyen de vérifier la saisie d'un utilisateur dans un champ via des expressions régulières.
auteur : THOGAL
Nous voulons par exemple un champ dans lequel l'utilisateur doit rentrer obligatoirement de 1 à 3 chiffres suivis de 0 à 5 lettres...
Il faut définir la propriété masque de saisie (InputMask) dans propriété du contrôle de formulaire ou du champ de table : 0aa?????
Comment connaître tous les caractères spéciaux à utiliser pour créer des masques de saise personnalisés ?
>> vous allez sur access, vous vous positionnez sur une propriété masque de saisie et là, vous appuyez sur F1. Access va vous donner tous les caractères spéciaux des masques !


Comment limiter le nombre de caractères à la saisie dans un champ
auteur : Tofalu
_ Contrôle lié :
Il suffit de définir la propriété "Taille du champ" directement dans la table.

_ Contrôle indépendant :
Il est possible d'utiliser la propriété masque de saisie, dans les propriétés de la zone de texte il faut entrer un masque de saisie propriétés/données/masque de saisie
exemple :
###### permet de taper 123456 seulement.

Il est aussi possible d'utiliser la propriété "Valide si". Par exemple, "NbCar([NomControle])<=5" empêchera d'entrer plus de 5 caractères. Pour personnaliser le message d'erreur, entrer du texte dans la propriété "Message si erreur".


Comment désactiver le bouton "précédent" lorsqu'on est sur le premier enregistrement ?
auteur : FRED.G
Private Sub Form_Current()

On Error GoTo GestErr
If Me.CurrentRecord > 1 Then
  Me!BoutonPrécédent.Enabled = True
Else
  Me!BoutonPrécédent.Enabled = False
End If
Exit Sub

GestErr:

Select Case Err
  Case 2164
    Me!AutreContôleActifDeTonChoix.SetFocus
    Resume
  Case Else
    MsgBox Err.Description, , "Erreur " & Err.Number
    Exit Sub
End Select
End Sub
On peut imaginer une évolution du code pour l'adapter également au bouton suivant dans la cas où nous somme sur le dernier enregistrement.


Comment faire pour que la première lettre saisie dans un contrôle soit en majuscule, puis les autres en minuscules.
auteur : Papy Turbo
Vous avez un champ par exemple Nom de famille, et vous voulez que quelque soit ce que tape l'utilisateur, le résultat soit de la forme "Martin" même s'il a tapé "mARtIn".
Private Sub txtMemo_KeyPress(KeyAscii As Integer)
    If KeyAscii > 64 Then
       'on vérifie si on se trouve au le premier caractère
        If txtMemo.Selstart = 0 Then
            KeyAscii = Asc(UCase(Chr(KeyAscii)))
        Else
            KeyAscii = Asc(LCase(Chr(KeyAscii)))
        End If
    End If
End Sub

Comment atteindre un contrôle dont le nom est dans une variable
auteur : Gaël Donat
Me.Controls(MaVar).value = "Mon texte"
De même, pour parcourir une collection d'objet dont les noms sont Ctrl1, Ctrl2 ... :
dim Ctl as control
For i = 1 To 180
    set ctl=Me.controls("Ctrl" & i)
    ctl.value = "mon texte"
Next i

Comment énumérer les contrôles d'un formulaire dans une boucle ?
auteur : Thierry AIM
Ce code imprime le nom de chaque contrôle de Form1 dans la fenêtre de débogage:
Dim Ctrl As Control

For Each Ctrl in Form1.Controls
    Debug.Print Ctrl.Name
Next
lien : FAQ VB

Comment contrôler la saisie, empêcher la saisie de certains caractères ?
auteur : Team Access
Pour utiliser ceci vous avez besoin des valeurs ascii des touches que vous voulez "verrouiller".

Code a mettre sur l'événement OnKeyPress du contrôle concerné :

If KeyAscii = 32 Or KeyAscii = 34 Then 
  MsgBox "Ce caractère est interdit", vbInformation 
  KeyAscii = 0
End If
lien : Comment limiter le nombre de caractères saisis dans une zone de texte indépendante ?

Je n'arrive pas à définir en vba la valeur par défaut d'un contrôle affichant une date dans un formulaire.
auteur : FRED.G
Il faut convertir la valeur en numérique de type Double et ça marche :
Dim MaDateParDéfaut as date
MaDateParDéfaut = #09/02/2005#
txtMaDate.defaultValue = cdbl(MaDateParDéfaut) 

Comment éviter qu'Access ne corrige automatiquement les mots saisis dans un contrôle ?
auteur : Morsi
La correction automatique d'Access peut-être gênante, par exemple lorsque l'on souhaite saisir un mot de passe.
En effet, si vous saisissez par exemple un mot comme "chateau", Access va le corriger en "château". Vous n'allez rien remarquer puisque les caractères saisis sont masqués par des "*". Mais le mot de passe saisi ne sera pas reconnu...
Pour régler ce problème il faut impérativement passer par un formulaire pour entrer les données.

En effet, il est possible de désactiver la correction automatique pour un contrôle en utilisant sa propriété AutoCorrectionPermise (AllowAutoCorrect).
Mais cela n'est pas possible pour une table.

Conseil : pensez à désactiver la touche F7 afin que l'utilisateur n'appelle pas lui-même le correcteur d'access :
Private Sub MonContrôle_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyF7 Then KeyCode = 0
End Sub
lien : Comment masquer ce qui est tapé dans une zone de texte (pour un mot de passe) ?

Comment empêcher l'utilisateur de saisir du texte dans un contrôle
auteur : Papy Turbo
Nous travaillons ici sur un contrôle se nommé ListeDeroulante.
Private Sub ListeDeroulante_KeyPress(KeyAscii As Integer)
    If KeyAscii >31 Then
        KeyAscii = 0
        Beep
    End If
End Sub
Ce code ne bloquera pas la souris, mais aucune touche ne passera, sauf les touches de contrôle (Tab, Enter, Backspace...) dont les codes sont inférieurs à 32 (= espace, le 1er caractère).


Comment forcer l'utilisateur à utiliser la virgule et non le point lors de la saisie de nombres ?
auteur : shwin
La zone de texte avec laquelle nous travaillons se nomme zdtNombre.
Il suffit de mettre le code suivant :
Private Sub zdtNombre_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = 190) Then
    KeyCode = 188
End If
End Sub 
Ainsi, lorsque l'utilisateur appuiera sur la touche "." du clavier, celà insérera tout de même une virgule ",".


Pourquoi mon code affiche un nombre décimal dans une étiquette, alors que le champ durée de la requête est en heure abrégé du type hh:mm ?
auteur : FRED.G
Parce que les dates sont stockées sous la forme d'un nombre réel double.
Or dans une requête, ce nombre peut être formaté pour n'en afficher que la partie décimale sous forme d'heures.
Mais dans une étiquette, il n'y a pas de propriété format.

La solution est d'utiliser la fonction Format() :

MonLabel.caption = Format(DSum("durée", "reqt", strfiltre),"hh:mm")

Comment créer dynamiquement un contrôle dans un formulaire et lui associer du code vba sur un événement ?
auteur : ma_mat
Tout d'abord, il faut ouvrir le formulaire en mode création.
Ensuite pour créer un contrôle par le code il faut utiliser la méthode CreateControl de l'objet Application.
Pour créer une procédure événementielle, il faut utiliser la méthode CreateEventProc de l'objet Module.

Dim ctl As Control

'Crée un contrôle "Groupe d'options" :
Set ctl = CreateControl("NomFormulaire", acOptionGroup, , NomPag, , 1200, 3800, 6300, 2700)
With ctl
  'Définit un nom pour le contrôle
  .Name = "Options"
  'Déclare l'événement "Après mise à jour" du contrôle
  .AfterUpdate = "[Event Procedure]"
End With
   
 
'Normalement il ne nous reste plus qu'à écrire la procédure
'événementielle avec Module.CreateEventProc

'Mais étant donné que nous avons créé un groupe d'option
'il faut maintenant créer à l'intérieur,
'un contrôle pour chaque option (nous allons pour cela nous servir
'de l'argument "Parent" de la méthode CreateControl).
'Créons par exemple un bouton d'option :

Set ctl = CreateControl("NomFormulaire", acOptionButton, , ctl.Name, , 1500, 4000)
With ctl
  .Name = "option1"
  .OptionValue = 1
End With


'Et maintenant, création du code à exécuter sur AfterUpdate de Options :

Dim mdl As Module
Dim lng As Long 'Sert à récupérer le numéro de la ligne d'insertion de la procédure

Set mdl = Forms![NomFormulaire].Module
lng = mdl.CreateEventProc("AfterUpdate", "Options")
mdl.InsertLines lng + 1, _
  vbTab & _
  "If(option1.value = 2) then MsgBox " & Chr(34) & "Vous avez choisi 1." & Chr(34)

'On libère mémoire allouées aux variables.
Set ctl = Nothing
Set mdl = Nothing

Comment interdire l'utilisation du clic droit de la souris sur un contrôle ?
auteur : Faw
Par exemple pour une zone de liste vous utilisez :

Me.MaListe.ShortcutMenuBar = ""
lien : faq Comment interdire le click droit dans un formulaire ?

Comment créer dynamiquement un contrôle dans un formulaire et lui associer du code vba sur un événement ?
auteurs : Tofalu, marchand_de_sable
Je me permets un petit ajout pour associer du code VBA au contrôle.

En effet, la méthode CreateEventProc n'est pas forcément des plus simple à utiliser.

On peut donc définir au préalable une fonction, et l'associer à l'évènement que l'on veut. Attention, la fonction peut-être définie dans n'importe quel module, mais doit être Public.

Exemple :

Public Function maFonction ()
    MsgBox "Message déclenché par l'évènement BeforeUpdate"
End Function
Pour associer ce code à mon contrôle, il faut soit que le formulaire soit ouvert en mode création et insérer le code qui suit, soit mettre ce même code sur l'événement OnLoad() du formulaire :

monControl.BeforeUpdate = "=maFonction()"
Le tour est joué.

ATTENTION : vous remarquerez que cette fonction ne retourne aucune valeur, ce qui en fait une procédure, cependant, si vous la déclarez en tant que tel (comme Sub), cela ne fonctionne pas...

lien : faq Est-il possible de créer dynamiquement des contrôles ?

Comment récupérer la position du curseur dans un contrôle ?
auteur : Demco
Vous pouvez utiliser l'attribut SelStart du contrôle pour obtenir (ou même définir) cette information.
Dans l'exemple suivant nous voulons connaître la position du curseur dans une zone de texte nommée MaZdt :

MsgBox MaZdt.SelStart

Comment déplacer le pointeur de la souris vers un contrôle ?
auteurs : Arkham46, Cafeine
Vous pouvez vous insiprer de cet exemple.

Dans l'entête du module du formulaire, déclarez :

Private Declare Function apiSetCursorPos Lib "user32" Alias "SetCursorPos" ( _
                                         ByVal X As Long, ByVal Y As Long) As Long
 
Private Sub MoveMyMouseToControl(pCtrl As String)
    Dim lx As Long, ly As Long, lw As Long, lh As Long
    Call Me.Controls(pCtrl).accLocation(lx, ly, lw, lh)
    apiSetCursorPos lx + lw / 2, _
                    ly + lh / 2
End Sub
Utilisation :

MoveMyMouseToControl "txtNumClient"
La souris sera déplacée au milieu du contrôle txtNumClient

Il s'agit d'une fonction non documentée. Si elle ne fonctionne pas (suivant votre version) vous pouvez utiliser :

Option Explicit

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

'   attribue la position de la souris
Private Declare Function apiSetCursorPos Lib "user32" Alias "SetCursorPos" ( _
        ByVal X As Long, ByVal Y As Long) As Long

'   retourne le rectangle d'un objet windows
Private Declare Function GetWindowRect Lib "user32" _
         (ByVal hwnd As Long, lpRect As RECT) As Long

Private Declare Function apiGetFocus Lib "user32" _
        Alias "GetFocus" () As Long

Private Sub MoveMyMouseToControl(ByVal strCtl As String)

Dim ctl As Control
Dim hCtl As Long
Dim myRect As RECT

For Each ctl In Me.Controls
    If ctl.name = strCtl Then
        ' nous calculons le rectangle en pixels
        '  dans lequel s'inscrit le contrôle
        '  nous calculons les coordonnées du centre du
        '  rectangle afin d'y placer la souris
        ctl.SetFocus
        hCtl = apiGetFocus
        GetWindowRect hCtl, myRect
        apiSetCursorPos myRect.Left + (myRect.Right - myRect.Left) / 2, _
                        myRect.Top + (myRect.Bottom - myRect.Top) / 2
        
    End If
Next ctl

Set ctl = Nothing

End Sub
 

Comment donner le focus à un controle d'un sous formulaire ?
auteur : Lou Pitchoun

Voici un code permettant de donner le focus à un controle d'un sous formulaire après (par exemple) avoir quitter une boite de dialogue

Me.NomSsForm.SetFocus 
Me.[NomSsForm].Form![NomControle].SetFocus
lien : fr Les syntaxes d'appel : Interaction des formulaires et états

Comment afficher une info bulle pendant le survol d'un controle ?
auteur : Petogaz
Pour afficher une Info Bulle lors d'un survol d'un control, il suffit d'aller dans les propriétés de ce contrôle :
- onglet "autres" sur la ligne
- "Texte d'info-bull" mettre le texte voulu.

lien : faq Comment définir en VBA le texte d'une Info Bulle ?

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2004  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com