Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

FAQ MS-AccessConsultez toutes les FAQ

Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireÉtats
 
Sélectionnez
DoCmd.OutputTo acOutputReport, "Etat Utilisateur", acFormatRTF, "c:\mes documents\tmp.doc", True 
Créé le 1er avril 2003  par Team Access

Lorsqu'un état ne contient pas de donnée, son événement Sur Aucune Donnée (NoData) est levé.

Pour annuler l'ouverture de l'état, il suffit de fixer le paramètre Cancel de la procédure Report_NoData à True.

Exemple :

 
Sélectionnez
Private Sub Report_NoData(Cancel As Integer)
    MsgBox "Impossible d'ouvrir l'état : aucune donnée à afficher",VbCritical
    Cancel = True
End Sub
Mis à jour le 29 août 2006  par Team Access

Solution 1 : il faut acquérir le logiciel Adobe Acrobat Writer. Il suffit alors d'imprimer sur PDF writer.



Solution 2 : l'utilitaire Snapshot Viewer exporte votre état sur un fichier d'extension SNP. Ce fichier peut alors être envoyé attaché à un e-mail. Tout ce dont le destinataire a besoin, pour lire ce fichier, c'est l'utilitaire précité, sans qu'il ait à posséder Access.

Snapshot est téléchargeable sur le site de Microsoft.


Télécharger SnapShot pour Access 97/2000/2002 : http://www.microsoft.com/downloads/details.aspx?familyid=b73df33f-6d74-423d-8274-8b7e6313edfb&displaylang=fr

Créé le 29 décembre 2003  par Team Access

Pour obtenir une somme en bas de page, il suffit de créer un contrôle invisible dans la section détail qui contiendra la somme, puis y faire référence dans une zone de texte du pied de page.

Mis à jour le 8 mars 2004  par Drosera

Il faut utiliser l'événement Au formatage de la section concernée :

 
Sélectionnez
Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer) 
    If Me![nomControle] < "0"  Then 
        Me![SourcEcr].ForeColor = 16777215 
    Else 
        Me![SourcEcr].ForeColor = 0 
    End If 
End Sub 
Créé le 1er avril 2003  par Team Access
 
Sélectionnez
DoCmd.OpenReport "Etat Utilisateur", AcView.acViewPreview     
DoCmd.RunCommand acCmdZoom150     
DoCmd.Maximize 
Créé le 1er avril 2003  par Team Access

Plusieurs solutions :

- cette propriété non documentée :

 
Sélectionnez
    DoCmd.OpenReport "NomEtat", acViewPreview 
     Reports("NomEtat").ZoomControl = 0 

- la méthode documentée qui correspond est :

 
Sélectionnez
    DoCmd.OpenReport "NomEtat", acViewPreview 
     DoCmd.RunCommand acCmdFitToWindow 
Créé le 18 février 2012  par Arkham46

Procédure à suivre :

- insérer un contrôle TextBox ;

- dans l'onglet Données de la boîte de propriétés :

propriété Source contrôle, mettre la valeur "=1",

propriété Cumul : "Par groupe".

Créé le 12 mai 2004  par Papy Turbo

Cela veut dire que votre requête source essaie de renvoyer un jeu d'enregistrements avec deux colonnes ayant le même nom, et ce n'est pas possible.

Créé le 12 mai 2004  par Drosera

Ceci concerne Access 2000. Il s'agit d'un aspect connu et recensé par Microsoft. Une clé du registre (1025) a pour valeur 'On'.
La solution consiste à la mettre à Off dans l'éditeur de registre (Démarrer/Exécuter, taper regedit, puis Cliquer OK) Voici son emplacement : HKEY_CURRENT_USERS\Software\Microsoft\Office\9.0\Common\LanguageResources\1025. Pour toute information supplémentaire à ce sujet, il est possible de se référer à la KB de Microsoft à cette adresse : http://www.microsoft.com/intlkb/france/articles/F19/5/16.asp

Créé le 25 octobre 2004  par Maxence HUBICHE

Vous pouvez afficher le nombre d'enregistrements par groupe en utilisant une zone de texte dans l'en-tête ou le pied du groupe. Dans la propriété Source contrôle, vous saisirez =Compte([Champ]) en remplaçant Champ par le nom d'un champ valide. Vous pouvez également utiliser l'astérisque.

Vous pouvez utiliser cette technique dans l'en-tête ou le pied de page de l'état.

Mis à jour le 15 mai 2011  par Pierre Fauconnier

Il suffit de jouer sur la propriété autoréductible du contrôle et de la section. Ceci est valable également pour les en-têtes et pieds de section.

Créé le 25 octobre 2004  par Lucifer

L'équivalent de la boite de dialogue Trier/Regrouper doit se trouver dans la méthode CreateGroupLevel de l'objet Application, mais celle-ci n'est disponible que pour un état en mode création. Elle est notamment utile pour créer un assistant de création d'états.

CreateGroupLevel doit être utilisé en mode création, mais si le niveau de regroupement est déjà créé, on peut alors utiliser la propriété GroupLevel de l'état.
Cette propriété est utilisable dans tous les modes et s'accompagne d'autres propriétés utiles comme SortOrder, GroupOn, GroupInterval, KeepTogether et ControlSource.

Sur l'événement Open de l'état, vous pouvez changer ses propriétés selon vos besoins.
Exemple :

 
Sélectionnez

Me.GroupLevel(2).ControlSource = "LeChampATrier"
Me.GroupLevel(2).SortOrder = False
Créé le 20 novembre 2005  par mouuaahh, Drosera

Il arrive fréquemment, lorsque l'on crée des états, d'être obligé de modifier la mise en page (marges ou orientation) pour des questions de place ou de positionnement (impression d'étiquettes par exemple)...
Mais il peut arriver qu'Access décide de remettre les paramètres par défaut.

Un moyen d'éviter ce problème (depuis Access 2000) :

allez dans le menu Outils/Options ;
dans l'onglet Général, décochez la case Suivi informations correction automatique.

Créé le 29 novembre 2006  par loufab

En utilisant l'automation Access.
Les arguments de la fonction sont :
. chemin de la base distante ;
. nom de l'état ;
. page de départ ;
. page de fin.

 
Sélectionnez

Function PrintRemoteReport(ByVal strMDB As String, _
                           ByVal strReport As String, _
                           Optional ByVal iStart As Integer = 1, _
                           Optional ByVal iEnd As Integer = 9999) As Boolean
Dim objAccess As Access.Application
Dim lngRet As Long

    ' Gestion d'erreurs
    On Error GoTo PrintRemoteReport_Err

    If Len(Dir(strMDB)) > 0 Then
        ' Création de l'objet Access
        Set objAccess = New Access.Application
        With objAccess
            ' Ouverture de la base
            .OpenCurrentDatabase strMDB
            ' Les commandes sont les mêmes que pour la base en cours
            ' hormis le "objAccess."
            ' Ouverture de l'état
            .DoCmd.OpenReport strReport, acViewNormal
            ' Impression des pages
            .DoCmd.PrintOut acPages, iStart, iEnd, acHigh
            ' Fermeture de l'état sans sauvegarde
            .DoCmd.Close acReport, strReport, acSaveNo
        End With
    End If

PrintRemoteReport_Exit:
    ' Libération des objets
    On Error Resume Next
    objAccess.Quit
    Set objAccess = Nothing
    Exit Function

PrintRemoteReport_Err:
    PrintRemoteReport = False
    Select Case Err.Number
        Case 7866:
            ' MDB ouverte en mode exclusif
            MsgBox "La base demandée " & vbCrLf & strMDB & _
                vbCrLf & " est actuellement ouverte en mode exclusif.  " & vbCrLf _
                & vbCrLf & "Merci de la rouvrir en accès partagé.", _
                vbExclamation + vbOKOnly, "Impossible d'ouvrir la base"
        Case 2103:
            ' L'état n'existe pas
            MsgBox "L'état '" & strReport & _
                        "' n'existe pas dans la base " _
                        & vbCrLf & strMDB, _
                        vbExclamation + vbOKOnly, "État non trouvé"
        Case 7952:
            ' L'utilisateur a fermé le fichier .mdb
           PrintRemoteReport = True
        Case Else:
            MsgBox "Error#: " & Err.Number & vbCrLf & Err.Description, _
                    vbCritical + vbOKOnly, "Runtime error"
    End Select
    Resume PrintRemoteReport_Exit
End Function

Exemple d'utilisation :

 
Sélectionnez

PrintRemoteReport "d:\temp\db.mdb", "MonEtat", 1, 10
Créé le 14 mai 2006  par cafeine
 
Sélectionnez

DocmdOpenReport, ReportName, acViewPreview
DoCmd.RunCommand acCmdPreviewOnePage

Le code ci-dessus affichera les états en mode paysage (à l'italienne).

Si vous voulez les afficher sur deux pages les états en mode portrait (à la française) remplacez la seconde ligne par :

 
Sélectionnez

DoCmd.RunCommand acCmdPreviewTwoPages

Un conseil : explorez les autres options de RunCommand acCmdPreview afin de découvrir d'autres possibilités qu'offre Access.

Créé le 20 novembre 2005  par Papy Turbo

Il faut définir une mise en page spécifique pour un état via le menu [Fichier | Mise en page...] sans oublier, bien sûr, d'enregistrer l'état après la mise en page. Ainsi cette mise en page sera conservée et appliquée, quel que soit le poste utilisateur.

Il existe un défaut majeur d'Access 2000 qui perd les informations de mise en page.

Pour y remédier il faut :
>> mettre à jour Access/Office avec le package SR-1a (et au passage installer le SP3).
http://office.microsoft.com/fr-fr/of...226001036.aspx
>> à défaut, dans la boîte de dialogue des Options (obtenues via [Outils[Options...]), sélectionner l'onglet [Général] et désactiver les commandes de la section
[Correction automatique de nom..].
http://support.microsoft.com/default...b;en-us;240826
>> des utilisateurs indiquent que les infos de mise en page sont perdues si une imprimante spécifique est désignée et qu'elle n'est pas référencée sur le poste client.
Donc préférer l'imprimante par défaut.

Créé le 14 octobre 2007  par =JBO=

Il suffit depuis votre formulaire d'attribuer le SQL à une requête et d'attribuer cette requête comme source de données à l'état ainsi ne reste plus qu'à changer le SQL à la volée et l'état s'en trouvera automatiquement modifié.

Pour exécuter ce code, il faut activer la référence : Microsoft DAO 3.x Object Library.

 
Sélectionnez
CurrentDb.QueryDefs("MaRequeteGraph").SQL = strSQL
Créé le 14 octobre 2007  par cafeine

Lien : Définition et manipulation de données avec DAO par Tofalu

Ces codes permettent d'ouvrir un état avec le zoom ajusté à la taille de l'écran au lieu du zoom à 100 % par défaut.

Code OtObOx :

Code sur le principe de la Source de Tofalu (Simuler l'appui de n'importe quelle touche du clavier (exemple avec CAPSLOCK))

dans un module, mettre le code de Tofalu :

 
Sélectionnez
Public Declare Sub keybd Lib "user32" Alias "keybd_event" _
  (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long) 
 
 
Public Sub appui_touche(T as long) 
' Appuie sur la touche 
keybd T, 0, 0, 0 
' Relâche la touche 
keybd T, 0, 2, 0 
End Sub

Ensuite dans le module de l'état mettre sur l'événement "sur ouverture" :

 
Sélectionnez
Private Sub Report_Open(Cancel As Integer)
' Agrandit la fenêtre au maximum
DoCmd.Maximize
' Ajuste l'affichage de la page à la taille de l'écran
appui_touche (90)
End Sub



Code de FreeAccess

À partir d'un formulaire, mettre le code suivant sur l'événement "Sur clic" d'un bouton" :

 
Sélectionnez
Private Sub Commande0_Click()
' Ouvrir état en mode Ajusté
DoCmd.OpenReport "E_ESSAI", acViewPreview
DoCmd.Maximize
DoCmd.RunCommand acCmdFitToWindow
End Sub

L'état doit être "actif" AVANT que les commandes Maximize et acCmdFitToWindow ne soient exécutées.

Créé le 31 mars 2008  par OtObOx, FreeAccess

Lien : Simuler l'appui de n'importe quelle touche du clavier (Exemple avec CAPSLOCK) par Christophe WARIN
Lien : Comment afficher un état en plein écran et avec un zoom personnalisé ?

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.