IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Création de Compteur


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut Création de Compteur
    Bonjour à tous

    Voilà je voudrais créer 2 compteurs dans un Formulaire
    J'ai lus l'ensemble des posts sur le sujet et lorsque je trouve ce qui peut me convenir mes compétences sont insufisantes je ne comprends pas ce qu'il est ecrit. Je débute avec Access ! Alors Désolé!

    L'application que j'essais de développer, grace à ce forum d'ailleur !, Concerne la gestion de document délivrés a des Intervenants. J'ai donc fais une table Gestion des documents qui collecte toutes les informations sur les documents délivrés (Non intervenant, N° du document, date délivrance, Date de retour document, ect...)
    J'ai créer un Formulaire Recherche des Documents, ce formulaire me permet de rechercher les documents Par noms, Par N°, Par Date, En cour, En Retard Ect... Le résultat s'affiche dans le sous-formulaire Recherche Etat Document sous-formulaire.
    Je souhaite dans le formulaire: Afficher le nombre de documents obtenus par la recherche par rapport au nombre de documents délivrés dans la table; soit 2 compteurs 1 pour la table l'autre pour la recherche

    Merci d'avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Pour ceci on peut dans un module placer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Compteur()
    Compteur = Me.RecordsetClone.RecordCount 'Compte le nombre d'enregistrements
    End Function
    Dans le formulaire une zone de texte avec pour source
    On peut vouloir connaître l'enregistrement actuel.
    Même motif...dans un module placer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Actuel()
    Actuel = Me.CurrentRecord ' Donne le n° d'enregistrement actuel
    End Function
    Dans le formulaire une zone de texte avec pour source : Si on veut regrouper les deux :
    Dans le formulaire une zone de texte avec pour source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Actuel() & " sur " & Compteur()
    Cordialement.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    bonsoir

    J'ai essayé, mais je dois faire quelque chose de faut car le champ de mon formulaire reste désespérément vide.
    Le premier essais, j'ai fais Propriétés, Source controle Rien!
    2eme essais, j'ai fais Module, Nouveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Compteur()
    Compteur = Me.RecordsetClone.RecordCount
    End Function
    et toujours rien!
    Je ne connais pas l'utilisation des modules et je n'ai rien sur mon livre ! Je ne comprends pas comment le champ de mon formulaire peut savoir qu'il doit ce référer à ce module?

    Merci de votre aide

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    "Me............" veut dire qu'on se trouve dans le module du formulaire.
    Donc en mode création tu presses Alt et F11, tu arrives dans le module du formulaire et colles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Compteur()
    Compteur = Me.RecordsetClone.RecordCount
    End Function
    Sur ton formulaire tu inscrits un nouveau champ de texte avec pour source :Evidement il faut que ton formulaire posséde quelques données sinon " "

    Cordialement.

    Ps : Efface au préalable ce que tu as mis dans un module, sinon risque de Bug

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    Bonjour

    Désolé j'ai fais ce vous me préconisez, mais non ça marche pas!

    Quand je fais Alt F11 j'ouvres VBA et si j'insere au tous début car je ne sais pas ou le mettre ma page est importante vu le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Compare Database
    Function Compteur()
    Compteur = Me.RecordsetClone.RecordCount
    End Function
    Private Sub Commande176_Click()
    On Error GoTo Err_Commande176_Click
     
     
        DoCmd.Close
     
    Exit_Commande176_Click:
        Exit Sub
     
    Err_Commande176_Click:
        MsgBox Err.Description
        Resume Exit_Commande176_Click
     
    End Sub
    Ma table, pour l'exercice, contient 3 enregistrements à l'application des filtres mon sous formulaire affiche une fois 2 enregistrements, une fois 1enregistrement alors que le champ compteur du formulaire reste vide il devrais normalement indiquer 3 et l'autre une fois 2 et une fois 1


    merci

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Allez, on va essayer plus simple, en tous les cas autrement.
    On efface tout.
    Dans tonChampTexte inscrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[CurrentRecord] & " / " & RecordsetClone.RecordCount
    Et dans le module de ton formulaire pour mettre à jour la position :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
    Me.tonChampTexte.Requery
    End Sub
    tonChampTexte = le nom de ton champ texte

    Cordialement.

    Ps : Superbe les poissons à la place des étoiles. A la St Valentin des petits coeurs, Début Mai de jolis Brins de Muguet, etc.. Vive la poésie.

  7. #7
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    salut,
    Pour que RecordCount fonctionne, il faut positioner le recordset au dernier enregistrement de la collection soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Compteur()
      Me.RecordsetClone.MoveLast
      Compteur = Me.RecordsetClone.RecordCount
    End Function

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Citation Envoyé par Jack78960 Voir le message
    Pour que RecordCount fonctionne, il faut positioner le recordset au dernier enregistrement de la collection
    Chez moi ce n'est pas le cas, ça fonctionne sans avoir besoin de parcourir les données.

    On peut aussi faire très simplement, dans un contrôle texte du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Compte([Non intervenant])
    Ici Non intervenant est un champ du formulaire.

    Cordialement.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    BONSOIR

    J'ai essayer
    le 1 essais me laisse un champ blanc et je suis en difficulté pour affecter le code form curent je l'ai simplement mis dans la page VBA alors que tous les private sub sont affecté a une fonction,Perte focus, Avant MAJ,ect...
    le 2 essais fonctione par contre il ne se rafraichis pas il faut que je click sur le champ pour afficher la valeur?
    la fonction Actuel me donne 1 dans le champ alors que souhaite afficher le nombre qui resulte du tri que j'ai fais.

    merci à vous de bien vouloir m'aider c'est pas facile! et c'est pas gagner!!

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    J'ai du mal à suivre et n'arrive pas à voir ou c'est OK et à partir de quel endroit les soucis surgissent.

    D'une façon générale pour actualiser des données, sur un formulaire on utilise "Requery". Exemple sur activation du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
        'Me.Requery 'Pour l'ensemble du formulaire
        Me.tonChampTexte.Requery 'Pour une donnée particulière
    End Sub
    Cordialement.

    Ps : Pour Form_Current--> Onglet événement des propriétés du formulaire en mode création--Click sur la première ligne = sur activation--Liste déroulante-->Procédure événementielle-->Bouton à droite avec trois petits points-->Click = Bonjour module.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    J' ai essayé ces 3 codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
        Me.Compteur_Total_Texte245.Requery   
    End Sub
    aprés celui là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Activate()
    Me.Requery
    End Sub
    aprés celui là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Activate()
        Me.Compteur_Total_Texte245.Requery
    End Sub
    Il me faut toujour click sur le champ pour obtenir un résultat

    C'est déjas mieux que rien
    je joinds une copie d'ecran je me suis peut etre mal exprimé dans ma demande

    et merci encore
    Fichiers attachés Fichiers attachés

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    On a du mal à régler nos récepteurs, mais on va y arriver.
    Dans le pied de ton sous formulaire un champ "txtCompteSF" source contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[=Compte([Id_DeTaTable])]
    (Ou un autre champ de ton sous formulaire)

    Sur ton formulaire un champ qui va aller chercher ces données genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =TonSousFormulaire.Formulaire!txtCompteSF
    Et si on veut le total de la table on peut voir avec une fonction de domaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[Id_DeTaTable]";"TaTable")
    Dernière touche : Pied du sous formulaire-->Visible-->Non

    Cordialement.

    Ps : Pour les fonctions de domaine : http://starec.developpez.com/tuto/fonctionsdomaines/

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    BONSOIR

    A quoi corespond l'ID de la table
    j'ai beau essayer çà ne marche pas je fais forcément une erreur, mais ou ?

    je fais un essais sur une base simple et ça ne marche pas non plus

    ah! le Boulet, désolé et merci
    Fichiers attachés Fichiers attachés

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Dans ta table "Groupes" se trouvent "Références Groupes", "Photographie" et "Remarques".
    Ceci est la source de ton sous formulaire --> "Groupes sous-formulaire"

    Dans le pied de ce formulaire txtCompteSF a pour source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Compte([NomCategorie])
    Access nous réserve des surprises mais pas de tour de magie. Cette information ou peut-il la trouver?
    On va lui demander de compter quelque chose qui existe dans ce sous formulaire.
    Par exemple [Référence Groupes] ce qui va donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Compte([Référence Groupes])
    On continue :
    Ta table "Tbl_Catégories" est composée de "RéfCatégorie" et "NomCatégorie"
    Sur ton formulaire "forml_Catégories" Texte13 a pour source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :=CpteDom("[NomCategorie]";"Tbl_Catégories")
    Il faut reprendre exactement le nom des objets, ici "NomCatégorie" et "NomCategorie" pour Access c'est différent.

    Sur ce même formulaire Texte4 a pour source-->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Groupes.forml_Catégories!txtCompteSF
    Là c'est difficile à suivre. Il manque = Et savoir à qui à quoi on se réfère à part txtCompteSF?
    On va remplacer tout ça par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Groupes sous-formulaire].Form![txtCompteSF]
    Sinon, c'est bien. On ressent l'envie de ne pas laisser d'espace pour les noms, et les objets sont préfixés. Il faut tout de même être attentif genre "forml_Catégories" ce "l" en trop risque de créer des erreurs. De même pour le sous formulaire "Groupes sous-formulaire" qui se retrouve avec un espace et qu'on ne peut identifier de suite---> subFrm_Groupes, voir frm_GroupesSub le permet.

    Bonne continuation.

    Cordialement.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    J'ai bien lu le tuto
    j'avance
    le compteur du formulaire fonctionne maintenant Nombre_Total_Texte245
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[N° de Autorisation]";"[Gestion des Autorisations de Travail]")
    le compteur dans le sous formulaire fonctionne aussi txtCompteSF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Compte([N° de Autorisation])
    Par contre lorsque je veux l'afficher dans le formulaire Nombre_SF_Texte247
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].[Gestion des Autorisations de Travail]!txtCompteSF
    j'ai dans le champ #Nom?
    et là je sèche!

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Citation Envoyé par YOP33 Voir le message
    Par contre lorsque je veux l'afficher dans le formulaire Nombre_SF_Texte247
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].[Gestion des Autorisations de Travail]!txtCompteSF
    j'ai dans le champ #Nom? et là je sèche!
    Citation Envoyé par Post précédent
    =[Groupes sous-formulaire].Form![txtCompteSF]
    Ce qui correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[TonSousFormulaire].Form![TonChamp]
    Citation Envoyé par YOP33 Voir le message
    le compteur dans le sous formulaire fonctionne aussi txtCompteSF
    Pour le vérifier, si ton sous formulaire est en mode Feuille de données, il faut ouvrir en mode création, seul, ce sous formulaire. Changer l'affichage par défaut à Formulaires continue et le pied de formulaire à visible--> Oui

    Cordialement.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    BONJOUR

    J'ai lu dans le tuto que lorsque le nom contient des espaces il faut le mettre dans [ ] d'ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].[Gestion des Autorisations de Travail]!txtCompteSF
    Si j'ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].Gestion des Autorisations de Travail![txtCompteSF]
    j'ai un message "La syntaxe de l'expression n'est pas correcte" " Vous avez peut être entré un Opérande sans Opérateur"

    et si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].[Gestion des Autorisations de Travail]![txtCompteSF]
    Quand j'enregistre çà donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].[Gestion des Autorisations de Travail]!txtCompteSF
    et la retour à la case départ #Nom ?

    Voilà! Voilà! le pourquoi du comment!

    PS: D'autre part j'ai ajouté une ligne Requery pour les cases à cocher, J'ai l'éffet inverse le champ s'éfface! pas bon!
    J'ai essayé de le mettre sur le formulaire à l'Ouverture mais il reste blanc il faut que je click sur le champ pour que le nombre apparaisse. mais chaque chose en son temps!

    Bonne journée

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    C'est vérifié. Ton sous formulaire, seul, affiche bien avec [txtCompteSF] les données espérées?

    D'autre part :
    Citation Envoyé par YOP33 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Recherche Etats].Gestion des Autorisations de Travail![txtCompteSF]
    j'ai un message "La syntaxe de l'expression n'est pas correcte" " Vous avez peut être entré un Opérande sans Opérateur"
    Tout à fait. Ceci correspond à quoi? Tu te compliques un brin la vie.

    Pour obtenir la bonne syntaxe :
    Sur ton champ récalcitrant, en mode création-->Source contrôle--> petit bouton à droite-->Cick = Générateur d'expression
    De là on va aller "chercher" l'information.
    Dans la colonne de gauche les formulaires-->Click sur le formulaire principal
    Click sur le sous formulaire.
    Colonne du milieu-->Double Click champ concerné.
    Bouton OK-->Click

    Cordialement.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    BONSOIR

    Quel anne! je n'ai pas percuté dans l'arborescance du générateur de code je n'ouvrais que le formulaire et je ne voyais pas le sous formulaire ! j'ai compris
    Il ne me reste plus que le probleme de l'affichage instantané des compteurs ?
    Je suis obligé de cliquer sur le champ pour que le chiffre s'affiche même à l'ouverture du formulaire.
    Si j'ajoute aux cases à coché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nonbre_Total_Texte245.Requery
    Nombre_SF_Texte247.Requery
    alors que le chiffre est affiché le champ devient blanc. La fonction Requery s'applique bien n'est ce pas ?


    une piste, une idée ?

  20. #20
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Pour qu'on y arrive, ce serait bien que tu joignes tes formulaires dans une base "allégée". Et n'oublie pas de compacter à la fermeture. Sur ton précédent exemple de base tu avais oublié de cocher dans tes Outils--> Options-->Général-->Compacter lors de la fermeture.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [DATA] Création variables compteur en fonction de groupes
    Par develap dans le forum SAS Base
    Réponses: 1
    Dernier message: 14/01/2013, 12h20
  2. Création de compteur
    Par beckhton dans le forum Programmation (La)TeX avancée
    Réponses: 0
    Dernier message: 29/09/2011, 22h04
  3. [X] Création de compteur
    Par lolo6413 dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 23/02/2009, 15h22
  4. Réponses: 7
    Dernier message: 17/01/2007, 19h57
  5. [MySQL] Problème de création d'un compteur.
    Par fabreizhad dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/03/2006, 01h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo