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
        Comment faire une recherche multi-critères ?
        Comment ouvrir un formulaire au démarrage ?
        Comment savoir si un formulaire est ouvert ?
        Désactiver la molette de la souris dans un formulaire.
        Un formulaire basé sur une requête s'affiche à l'écran comme une page blanche.
        Comment ouvrir un formulaire en mode feuille de données ?
        Comment exécuter une procédure (sub) d'un sous formulaire ?
        Comment ouvrir un formulaire en fonction d'une valeur contenue dans un autre formulaire ?
        Comment fermer un formulaire en VBA ?
        Comment interdire le click droit dans un formulaire ?
        Comment utiliser une partie de code commune à plusieurs formulaires ?
        Est-il possible d'insérer un sous-formulaire en continuous form dans un sous-formulaire qui est déjà en continuous form ?
        Comment passer le focus d'un formulaire à un autre ?
        Empêcher la fermeture d'un formulaire
        Comment exécuter une procédure (sub) d'un autre formulaire ?
        Message d'erreur 'Mémoire libre insuffisante' lors de l'utilisation d'un formulaire
        Comment récuperer la valeur d'une cellule dans un formulaire tabulaire ?
        Comment afficher une page Web dans un formulaire ?
        Comment ouvrir un formulaire en mode ajout ?
        Comment faire pour réduire un formulaire ? (effet du bouton tiret en haut à droite des fenêtres Windows)
        Comment changer le titre d'un formulaire ?
        Comment imprimer un formulaire au format Paysage ?
        Comment obtenir la description d'un formulaire ?
        Comment obtenir la date de modification d'un formulaire ?
        Comment fermer tous les formulaires ouverts ?
        Comment trier un formulaire tabulaire en cliquant sur l'étiquette de la colonne ?
        Comment modifier la propriété d'un formulaire en VBA ?
        Comment effectuer une action lors d'un changement d'enregistrement d'un sous-Formulaire ?
        Comment définir l'inactivité d'un utilisateur dans un formulaire ?
        Comment conserver la modification d'une étiquette dans un formulaire en VBA ?
        Comment Ouvrir un Formulaire modal indépendant en mode Continu de façon à visualiser tous les enregistrements ?
        Comment ajuster la taille d'un sous-form en fonction du nombre d'enregistrements ?
        7.1. Contrôles (88)
                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 ?
        7.2. Données (26)
                Comment fermer un formulaire sans sauvegarder l'enregistrement en cours ?
                Comment afficher le nombre d'enregistrements du sous formulaire dans le formulaire principal ?
                Erreur 3021 - Aucun enregistrement en cours
                7.2.1. Position dans le formulaire (10)
                        Dans un formulaire en fin d'enregistrement un appui sur la touche Tab provoque le passage à l'enregistrement suivant. Comment revenir plutôt au début de la fiche ?
                        Comment savoir si la ligne courante est celle d'un nouvel enregistrement
                        Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un formulaire dépendant ?
                        Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un sous-formulaire ?
                        Comment obtenir le numéro de l'enregistrement actuel du formulaire ?
                        Comment ouvrir un formulaire en se positionnant sur un enregistrement spécifique ?
                        Comment se positionner sur un nouvel enregistrement de mon sous formulaire ?
                        Comment, à partir d'une valeur de mon formulaire, se positionner sur les enregistrement correspondant du sous formulaire ?
                        Comment obtenir la position en pourcentage de l'enregistrement actuel du formulaire ?
                        Comment se déplacer de X enregistrements dans un formulaire ?
                7.2.2. Modification et ajout de données (8)
                        Comment interdire la manipulation d'enregistrements dans un formulaire dépendant ?
                        Comment interdir les modifications des données d'un sous-formulaire ?
                        Comment empêcher Access d'enregistrer de lui-même les modifications/ajouts d'enregistrements du formulaire ?
                        Comment empêcher la mise à jour/l'ajout des données d'un formulaire dépendant ?
                        Comment fait-on pour un avoir un message de confirmation avant sauvegarder un enregistrement modifié ?
                        Comment supprimer l'enregistrement en cours dans un formulaire dépendant ?
                        Sauvegarde de l'enregistrement en cours par le code, après modification/ajout d'un enregistrement.
                        Comment mettre à jour des données calculée d'une table depuis un formulaire ?
                7.2.3. Source de données (5)
                        Comment trier un formulaire sur un champ spécifié en VBA
                        Comment changer la source d'un sous-formulaire ?
                        Comment changer la source d'un formulaire ?
                        Comment filtrer un formulaire à partir d'une valeur contenue dans une variable ?
                        Comment mettre à jour un formulaire?
        7.3. Présentation (28)
                Comment enlever le sélecteur d'enregistrements ?
                Comment enlever les boutons de déplacement ?
                Masquer des champs en mode Feuille de données (DataSheet) ?
                Comment rendre des colonnes d'un formulaire invisibles ?
                Comment avoir plusieurs couleurs de contrôles ou fonds dans un formulaire en mode continu ?
                Comment afficher dans un formulaire une image se trouvant dans un dossier ?
                Comment créer des fenêtres de formulaire aux formes personnalisées ?
                Comment afficher un texte d'info bulle sur plusieurs lignes ?
                Comment mettre un plein écran une fenêtre de formulaire ?
                Comment avoir des formulaires de tailles différentes ?
                Comment remettre la barre tout en haut de mon form, là où il y a la croix ?
                Comment donner automatiquement la même présentation à mes formulaires ?
                Comment ajouter un menu dans un formulaire ?
                Comment faire disparaître les boutons des fenêtres (minimiser/maximiser/fermer) ?
                Comment donner de la couleur à mes boutons ?
                Comment mettre une icône dans la barre de titre d'un formulaire ?
                Ouvrir un état ou un formulaire en mode invisible
                Comment mettre en surbrillance toute la ligne active d'un formulaire ?
                Peut-on afficher sous forme de mot de passe (******) les caractères saisis dans une InputBox ?
                Changer la couleur de fond d'un bouton de commande.
                Comment mettre du gras dans un MsgBox
                Importer les barres d'outils ou de menus personnalisées
                Comment déployer en vba les sous feuilles de données d'un formulaire en mode feuille de données ?
                Comment modifier l'apparence des boutons de commande ? (Faire passer de Windows 98 au style Windows XP Access 2003)
                Comment créer un effet de relief lorsque la souris survole un contrôle ?
                Comment faire pour que mes chiffres soient précédés d'un 0 ? (01, 02, ...)
                Comment rendre un formulaire transparent ?
                Comment changer de page dans un onglet en VBA ?
        7.4. Trucs et Astuces (30)
                Comment afficher une table ou une requête dans un contrôle Sous Formulaire sans créer de nouveau formulaire ?
                Comment ne pas enregistrer les données des contrôles d'un formulaire avant validation par l'utilisateur
                J'ai le bouton1 qui avec l'événement On_Move fait apparaître le bouton2, et quand je repasse sur le bouton1 le bouton2 doit disparaître et ainsi de suite...
                Centrer un formulaire
                Comment savoir si un contrôle existe dans un formulaire ?
                Comment faire défiler un texte dans un formulaire
                Empêcher la navigation entre formulaire via barre des tâches
                Comment faire passer un formulaire ouvert en mode acDialog en arrière plan ?
                Créer dynamiquement un formulaire
                Insérer une ligne blanche (enregistrement vide) dans un SF affiché en mode Feuille de données
                Passer en mode Edit dans un champ dont le format est différent du masque de saisie
                Nouvel enregistrement ou enregistrement modifié ?
                Positionner le curseur à gauche du champ ou sélectionner le contenu du champ
                Position d'un formulaire
                Comment vérifier à la sortie d'une input box que le type de donnée rentrée est bien du numérique ?
                Comment masquer un sous formulaire vide ?
                Comment empêcher l'utilisateur de cliquer à l'extérieur du formulaire (comme pour une MsgBox)
                Comment enlever les boutons de navigation d'un formulaire en VBA
                Comment utiliser la saisie semi-automatique dans les contrôles de mes formulaires ?
                Dans un formulaire en mode continu, comment rendre invisible un bouton pour certaines lignes ?
                Comment 'zoomer' sur le contenu d'un contrôle de type texte
                Le temps d'ouverture de mes formulaires à onglets est trop important !
                Transmettre le nom du formulaire appelant à l'ouverture d'un formulaire.
                Complément au tutoriel de recherche multicritère de cafeine : Enregistrer dans une requête le résultat de la recherche multicritères
                Comment créer dynamiquement des contrôles de type rectangle sur le formulaire en cours ?
                Comment faire repartir un gif qui a cessé de s'animer ?
                Comment ne pas ouvrir un formulaire si celui est vide ?
                Paramètre non reconnu pour un graphique basé sur une requête paramétrée
                Commment compter le nombre d'enregistrement d'un sous formulaire ?
                Comment savoir si les contrôles ont été remplis dans un Formulaire ?

precedent    sommaire    suivant   


Comment faire une recherche multi-critères ?
auteur : Cafeine
Dans le fr Tutoriel de recherche multi-critères, Cafeine, vous montre comment implémenter cette fonction indispensable qui rendra vos applications réellement productives.

lien : fr Tutoriel de recherche multi-critères

Comment ouvrir un formulaire au démarrage ?
auteur : Team Access
Menu Outils/Démarrage et le menu déroulant Afficher le formulaire.


Comment savoir si un formulaire est ouvert ?
auteur : Etienne Bar
A partir d'Access 2000 vous pouvez faire :
currentproject.AllForms("NomDuForm").IsLoaded
Sinon :

Il suffit de mettre ce code dans un module :
Function IsLoaded(ByVal strFormName As String) As Integer 
 ' Retourne True si le formulaire spécifié est ouvert.
    
    Const conObjStateClosed = 0
    Const conDesignView = 0
    
    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
        If Forms(strFormName).CurrentView <> conDesignView Then
            IsLoaded = True
        End If
    End If
End Function
Autre solution :
Public Function is_form_opened(fname As String) As Boolean 

On Error GoTo not_opened
Dim LeFichier As String

LeFichier = Forms(fname).Name
is_form_opened = True
Exit Function

not_opened: If (Err.Number = 2450) Then
     is_form_opened = False
     err.clear
End If

End Function

Désactiver la molette de la souris dans un formulaire.
auteur : Frank
Un formulaire peut devenir pénible à utiliser car la molette de la souris fait défiler les enregistrements.

Cette solution fonctionne pour MS Access 2000 et 2003. (si vous avez testé pour d'autres versions n'hésitez pas à nous le faire savoir)
Il arrive cependant que l'erreur "nom ambigu détecté" se manifeste pour les version 2002 et ultérieures. Référez-vous dans ce cas au tutoriel dont le lien est en bas de cet article.

1ere étape:

Ouvrir un module VBA, aller dans Outils/Références, cliquer sur Parcourir et localiser la dll MouseWheel.dll puis cliquer sur Ouvrir. Cela permet d'enregistrer la dll dans les Références Access.

2eme étape :

Mettre le code suivant dans chaque formulaire qui requiert un contrôle de la roulette de la souris.
   ' Déclaration dans chaque formulaire après Option Explicit et Option Compare Database
Private WithEvents clsMouseWheel As MouseWheel.CMouseWheel

 'Procédure à rajouter dans chaque formulaire
Private Sub clsMouseWheel_MouseWheel(Cancel As Integer)
    Cancel = True
End Sub

Private Sub Form_Load()
        'Code à rajouter dans l'événement chargement de chaque formulaire   
    Set clsMouseWheel = New MouseWheel.CMouseWheel
    Set clsMouseWheel.Form = Me
    clsMouseWheel.SubClassHookForm
End Sub

Private Sub Form_Close()
    'Code à rajouter dans l'événement fermeture de chaque formulaire
    If Not (clsMouseWheel Is Nothing) Then
        clsMouseWheel.SubClassUnHookForm
        Set clsMouseWheel.Form = Nothing
        Set clsMouseWheel = Nothing
    End If
End Sub


lien : fr Gestion de la roulette de la souris dans les formulaires

Un formulaire basé sur une requête s'affiche à l'écran comme une page blanche.
auteur : MashiMaro
Cela signifie que la requête source du formulaire ne retourne aucun résultat et que l'ajout est interdit. Il suffit donc de modifier les propriétés ou de prévoir ce cas.


Comment ouvrir un formulaire en mode feuille de données ?
auteur : Gandalf24
DoCmd.OpenForm "NomFormulaire", acFormDS ...

Comment exécuter une procédure (sub) d'un sous formulaire ?
auteurs : STEF_1, Tofalu
Call Form_NomDuSousForm.Champ_AfterUpdate
Il faut que le sub (ici Champ_AfterUpdate) soit déclaré comme public :
Public Sub Champ_AfterUpdate()
    'Code à exécuter
    ....
End Sub

Comment ouvrir un formulaire en fonction d'une valeur contenue dans un autre formulaire ?
auteurs : Demco, Tofalu
Il faut utiliser la commande DoCmd.OpenForm :

Aide Access (f1) :

DoCmd.OpenForm nomformulaire[, affichage][, nomfiltre][, conditionwhere][, modedonnées][, modefenêtre][, openargs]

C'est la condition Where (" conditionwhere ") qu'il faut modifier.

Si on veut ouvrir en fonction de la valeur d'un contrôle d'un autre formulaire :
"[nom_champ] =" & Forms![nom_formulaire]![nom_contrôle dans autre formulaire]
Si on veut ouvrir en fonction de la valeur d'un contrôle du formulaire en cours :
"[nom_champ] =" & Me.[MonControle]
lien : faq Comment inclure des champs d'un formulaire dans une requête ?
lien : faq Ma requête ne fonctionne pas suivant le type des variables qu'elle utilise ?

Comment fermer un formulaire en VBA ?
auteur : Demco
Il y a deux cas possibles.

On veut fermer le formulaire sur lequel on est :
DoCmd.Close
On veut fermer un autre formulaire :
DoCmd.Close acForm, "F_MonForm"

Comment interdire le click droit dans un formulaire ?
auteurs : Maxence HUBICHE, Demco
Propriété du formulaire Menu contextuel à non.

Ou bien en passant par le code :

Me.ShortcutMenu = False
lien : faq Comment interdire l'utilisation du clic droit de la souris sur un contrôle ?

Comment utiliser une partie de code commune à plusieurs formulaires ?
auteur : Demco
Vous pouvez écrire du code dans un module et l'appeler depuis vos formulaires.

Exemple :
Dans un module écrivez le code suivant.
Sub MonMessage(txt As String)
    MsgBox txt
End Sub
Puis dans votre formulaire, écrivez simplement :
MonMessage "coucou"
Fonctionne pareillement avec les fonctions.


Comment passer le focus d'un formulaire à un autre ?
auteur : FRED.G
Forms!Form2!MonContôle.SetFocus 
ou
DoCmd.SelectObject acForm, Form2, False  

Empêcher la fermeture d'un formulaire
auteur : MC2
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Etes-vous certain ?", vbYesNo) = vbNo Then Cancel = True
End Sub

Comment exécuter une procédure (sub) d'un autre formulaire ?
auteur : FRED.G
Forms!NomAutreForm.NomSub
Note : il faut que la procédure soit déclarée en Public Sub :
Public Sub NomSub()
    'Code à exécuter
    ....
End Sub
lien : Comment déclencher un événement par le code ?

Comment récuperer la valeur d'une cellule dans un formulaire tabulaire ?
auteur : Tofalu
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library

Tout d'abord, il faut que les colonnes soient ordonnées dans le même ordre que la présentation des champs dans la requête.

Si on a :
Select Nom, Prenom From Table
Il faut que la première colonne soit nom, la seconde prenom.

Ensuite dans le code du formulaire, coller la fonction suivante :
Private function Cells(Ligne as integer,Colonne as integer) as string
On error goto err
Dim R as dao.recordset
set r=me.recordsetclone
r.movefirst
While Ligne>0
r.movenext
ligne=ligne-1
Wend
Cells=R.fields(Colonne).value
err:
End Function

On accède à une cellule avec :
MsgBox Cells(3,4)
Nb les indices commencent à 0. (La première colonne a pour numéro 0 et idem pour la première ligne)

Si toutefois, vous ne voulez pas ordonner les colonnes comme les champs, cela donnera.
Private function Cells(Ligne as integer,Colonne as string) as string
On error goto err
Dim R as dao.recordset
set r=me.recordsetclone
r.movefirst
While Ligne>0
r.movenext
ligne=ligne-1
Wend
Cells=R.fields(Colonne).value
err:
End Function
Et au lieu du numero de la colonne, on passera son nom.
MsgBox Cells(2,"Nom")
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 ?

Comment afficher une page Web dans un formulaire ?
auteur : Tofalu
Le contrôle ActiveX Microsoft Web Browser vous permet de faire cela.


Comment ouvrir un formulaire en mode ajout ?
auteur : Cafeine

DoCmd.GoToRecord acDataForm, Me.name, acNewRec

Comment changer le titre d'un formulaire ?
auteur : Drosera
En VBA :
Me.Caption = "Nouveau nom du formulaire"

Comment imprimer un formulaire au format Paysage ?
auteur : Arkham46
Vous pouvez modifier le paramètre Orientation de l'objet Printer depuis Access 2002.

DoCmd.OpenForm "F_AFFICHAGE"
Forms("F_AFFICHAGE").Printer.Orientation = acPRORLandscape
DoCmd.PrintOut
DoCmd.Close acForm, "F_AFFICHAGE"

Comment obtenir la description d'un formulaire ?
auteur : Tofalu
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library

Vous pouvez vous inspirer de cet exemple. Attention, si la description n'a pas été renseignée, la propriété n'existe pas.
Public Function GetDescForm(strFormName As String) As String
Dim oDb As DAO.Database
Set oDb = CurrentDb
GetDateUpdatedForm = oDb.Containers("Forms").Documents(strFormName).Properties("Description")
End Function

Sub test()
MsgBox GetDescForm("Formulaire1")
End Sub
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 ?

Comment obtenir la date de modification d'un formulaire ?
auteur : Tofalu
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Public Function GetDateUpdatedForm(strFormName As String) As Date
Dim oDb As DAO.Database
Set oDb = CurrentDb
GetDateUpdatedForm = oDb.Containers("Forms").Documents(strFormName).LastUpdated
End Function

Sub test()
MsgBox GetDateUpdatedForm("Formulaire1")
End Sub
Attention, un bug est recensé sous Access 2000 : LastUpdated retourne la date de création du formulaire.

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 ?

Comment fermer tous les formulaires ouverts ?
auteur : Papy Turbo
Il faut parcourir la collection Forms de l'application.

Public Sub CloseAllForms()
Do WHILE Forms.Count
    Docmd.Close acForm, Forms(0).Name
Loop
End Sub
lien : faq Comment fermer un formulaire en VBA ?

Comment trier un formulaire tabulaire en cliquant sur l'étiquette de la colonne ?
auteur : kloun
Le code suivant permet de trier l'affichage d'un Formulaire tabulaire en cliquant sur l'étiquette d'une colonne.
Si l'orde est de A->Z lors du clic celui-ci passe de Z->A et vice-versa
Global gBol as Boolean

Private Sub MonEtiquette_Click()
    Me.OrderByOn = True
    If gBol = False Then
        Me.OrderBy = "MaColonne asc"
        gBol = True
    Else
        Me.OrderBy = "MaColonne desc"
        gBol = False
    End If
 
End Sub

Comment modifier la propriété d'un formulaire en VBA ?
auteur : Tofalu
Pour modifier la propriété Description d'un formulaire
il faut accéder à l'objet en DAO via la collection containers et l'objet document

L'exemple suivant insère la date et l'heure courante dans la propriété Description du formulaire "MonFormulaire"

Il faut ajouter la référence : Microsoft DAO 3.x Object Library
Sub ecrireDecr()
On Error GoTo err
'Script qui affecte la date et l'heure à la propriété Description
' d'un formulaire
Dim oDb As DAO.Database
Dim oDoc As DAO.Document
Set oDb = CurrentDb
Set oDoc = oDb.Containers("Forms").Documents("MonFormulaire")
oDoc.Properties("Description") = Now
 
fin:
Exit Sub
 
err:
Select Case err.Number
    Case 3270 'Si la propriété n'existe pas la créer
        With oDoc
            .Properties.Append .CreateProperty("Description", dbText, Now)
            .Properties.Refresh
        End With
    Case Else
        err.Raise err.Number
End Select
Resume fin
End Sub

Comment effectuer une action lors d'un changement d'enregistrement d'un sous-Formulaire ?
auteur : Faw
Il suffit de mettre votre code dans l'événement Sur Activation de votre sous formulaire


Comment définir l'inactivité d'un utilisateur dans un formulaire ?
auteur : DMboup
Ce code permet de tester toutes les secondes si le focus ne se déplace dans le formulaire
ou si une touche n'est pas appuyée pendant un temps paramétré, un message de non activité s'affiche.
Ce code permet de fermer un Formulaire ou la base en cours au bout d'un temps prédéfini.

Voici le code du Module du Formulaire testé :
Option Compare Database

Public ExpiredTime
'

Sub Form_Timer()
' IDLEMINUTES determines how much idle time to wait for before
         ' running the IdleTimeDetected subroutine.
         Const IDLEMINUTES = 0.05
 
         Static PrevControlName As String
         Static PrevFormName As String
 
         Dim ActiveFormName As String
         Dim ActiveControlName As String
         Dim ExpiredMinutes

         On Error Resume Next
 
         ' check le forumulaire active et le control name
 
         ActiveFormName = Screen.ActiveForm.Name
         If Err Then
            ActiveFormName = "No Active Form"
            Err = 0
         End If
 
         ActiveControlName = Screen.ActiveControl.Name
            If Err Then
            ActiveControlName = "No Active Control"
            Err = 0
         End If
         
         ' verifie actif actuel and reinitialise temps expiration si:
         '    1. aucun enregistrement d'action encore (code roule pour
         '       la premiere fois).
         '    2. les noms precedents sont differents des noms courants
         '       (usager a fait quelque chose de different pendant l'intervalle de temps
           If (PrevControlName = "") Or (PrevFormName = "") _
           Or (ActiveFormName <> PrevFormName) _
           Or (ActiveControlName <> PrevControlName) Then
            PrevControlName = ActiveControlName
            PrevFormName = ActiveFormName
            ExpiredTime = 0
         Else
            ' ...otherwise the user was idle during the time interval, so
            ' increment the total expired time.
            ExpiredTime = ExpiredTime + Me.TimerInterval
         End If
 
         ' Does the total expired time exceed the IDLEMINUTES?
         ExpiredMinutes = (ExpiredTime / 1000) / 60
         If ExpiredMinutes >= IDLEMINUTES Then
            ' ...si oui, je reset le temps d'expiration a 0...
            ExpiredTime = 0
            ' ...et appelle la sous-routine idletimedetected.
            IdleTimeDetected ExpiredMinutes
         End If
End Sub

Sub IdleTimeDetected(ExpiredMinutes)
         Dim Msg As String
         Msg = "Aucune activite "
         Msg = Msg & ExpiredMinutes & " minute(s)!"
         MsgBox Msg, 48
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Not IsNull(KeyCode) Then
         ExpiredTime = 0
    End If
End Sub
Const IDLEMINUTES = 0.05 correspond à 5 secondes

Modifiez les propriétés du Formulaire comme suit :
Aperçu des touches sur OUI
Intervalle minuterie = 1000


Comment conserver la modification d'une étiquette dans un formulaire en VBA ?
auteur : Lou Pitchoun
Pour conserver le changement d'une étiquette après fermeture du formulaire, il faut d'abord l'ouvrir en mode création (acDesign) et caché (acHidden). Ensuite on modifie le texte de l'étiquette, on sauvegarde le formulaire et on l'ouvre normalement.
DoCmd.OpenForm NomFormulaire, acDesign, , , , acHidden
    Forms![NomFormulaire]![NomEtiquette].Caption = "Nouvelle légende"
    DoCmd.Close acForm, NomFormulaire, acSaveYes
    DoCmd.OpenForm NomFormulaire
Nota : ne fonctionne pas pour les fichiers mde, ne fonctionne q'avc des fichiers mdb.


Comment Ouvrir un Formulaire modal indépendant en mode Continu de façon à visualiser tous les enregistrements ?
auteur : Arkham46
Le code suivant permet de redéfinir la hauteur de Formulaire en fonction du nombre d'enregistrements :
Private Sub Form_Load()
Me.InsideHeight = Me.Section(acHeader).Height + Me.Section(acFooter).Height + Me.RecordsetClone.RecordCount * Me.Section(acDetail).Height
End Sub

Comment ajuster la taille d'un sous-form en fonction du nombre d'enregistrements ?
auteurs : The_Super_Steph, micniv
Ce code permet d'ajuster la taille d'un sous-formulaire en fonction du nombre d'enregistrements qu'il contient.

Sur l'événement SurActivation du formulaire, il suffit de mettre le code suivant :
Private Sub Form_Current()
Me.TonSousForm.Form.InsideHeight = Me.TonSousForm.Form.Section(acHeader).Height _
     + Me.TonSousForm.Form.Section(acFooter).Height _
     + Me.TonSousForm.Form.Section(acDetail).Height _
         * (Me.TonSousForm.Form.RecordsetClone.RecordCount _
          -  Me.TonSousForm.Form.AllowAdditions)
Me.TonSousForm.Height = Me.TonSousForm.Form.WindowHeight
End Sub
Après, s'il y a des zones de textes en-dessous, il suffit de modifier leur position en fonction du sous-formulaire, par exemple :
Me.TazoneDeTexte.Top = Me.TonSousForm.Top + Me.TonSousForm.Height + AutantDeTwipsQueTuVeux
... et ainsi de suite !





Evolution de micniv

Une évolution pour ce script intéressant :
  • limiter la hauteur du sous-form à n lignes
  • afficher qd nécessaire la barre de défilement vertical
 Dim objSousForm As Object
    Dim frmSousForm As Form
    Dim nbMaxLignes As Long
 
    'Vos déclarations
    Set objSousForm = Me!TonSousForm
    Set frmSousForm = objSousForm.Form
    nbMaxLignes = 3     'limite la hauteur à n lignes et affiche le défilement vertical
 
    
    If frmSousForm.RecordsetClone.RecordCount <= nbMaxLignes Then
        frmSousForm.InsideHeight = frmSousForm.Section(acHeader).Height _
                                 + frmSousForm.Section(acFooter).Height _
                                 + frmSousForm.Section(acDetail).Height _
                                 * (frmSousForm.RecordsetClone.RecordCount _
                                  - frmSousForm.AllowAdditions)
        objSousForm.Height = frmSousForm.WindowHeight
        frmSousForm.ScrollBars = 0  'aucune barre de défilement
    Else
        frmSousForm.InsideHeight = frmSousForm.Section(acHeader).Height _
                                 + frmSousForm.Section(acFooter).Height _
                                 + frmSousForm.Section(acDetail).Height _
                                 * (nbMaxLignes - frmSousForm.AllowAdditions)
        objSousForm.Height = frmSousForm.WindowHeight
        frmSousForm.ScrollBars = 2  'barre de défilement verticale
    End If
 
 
    'Après, s'il y a des zones de textes en-dessous, il suffit de
    'modifier leur position en fonction du sous-formulaire,
    'par exemple :
 
    Me.TaZoneDeTexte.Top = objSousForm.Top + objSousForm.Height  + AutantDeTwipsQueTuVeux
 
 
    Set objSousForm = Nothing
    Set frmSousForm = Nothing

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