Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 17h07   #1
Futur Membre du Club
 
Guy
Inscription : janvier 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Guy

Informations forums :
Inscription : janvier 2010
Messages : 61
Points : 19
Points : 19
Par défaut Obtenir Total sur Requete

Bonjour le Forum,

Je vais essayer d’être précis:

J'ai créé une requête (Rqt Amis) basée sur une table (Tbl Contacts)
Cette requête se présente ainsi :
Col 1 Col 2 Col 3
Champ......: Amis: Nom Catégorie ; Titre ; Total: Nom Catégorie
Table........: Tbl Contacts ; Tbl Contacts ;Tbl Contacts
Opération...: Regroupement ;Regroupement ;Compte
Tri............:
Afficher.....: oui ; oui ; oui
Critères.....: "Amis"
Ou...........:

Dans un formulaire j'introduis un Sous Formulaire basé sur cette requête pour afficher les résultats.

Formulaire (Frm Synthèse) avec Sous Formulaire (SousFrm Amis)
Je désirerai avoir dans le pied du Sous Formulaire une Zone de texte me calculant le nombre d'enregistrement affichés sachant que le Sous Formulaire est en mode continu.
Voila j'espère que quelqu'un pourra m'aider j'ai essayé avec la formule DSum mais je ne la comprend pas très bien et cela me provoque des erreurs
Merci d'avance
zeltron24
Zeltron24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 19h36   #2
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonsoir,

DSum fait aune addition de valeur essayez plutôt DCount pour compter.
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 20h32   #3
Futur Membre du Club
 
Guy
Inscription : janvier 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Guy

Informations forums :
Inscription : janvier 2010
Messages : 61
Points : 19
Points : 19
Bonsoir rjamin

J'ai essayé avec Dcount ça me compte tous les enregistremements
Ou alors je l'utilise mal car ce que je veux c'est avoir le total aprés le filtre.
Mon SousFrm Amis me donne :

Monsieurs = 8
Madame = 7
Mademoiselle = 2

c'est le total des trois que je veux soit affiché dans une zone de texte 17
Zeltron24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 02h41   #4
Membre actif
 
Inscription : janvier 2007
Messages : 218
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 218
Points : 166
Points : 166
Salut,
Dans ce cas, tu peux mettre en source de ta ZdT17 :
=[Monsieur]+[Madame]+[Mademoiselle]
Les champs correspondent en fait à tes Champs qui contiennent les nombres 8,7 et 2.
@+
Mr T 94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 08h40   #5
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,
Dans l'aide d'ACCESS on trouve

DCount, fonction
La fonction DCount permet de déterminer le nombre d'enregistrements figurant dans un jeu d'enregistrements spécifique (un domaine (domaine : ensemble d’enregistrements défini par une table, une requête ou une expression SQL. Les fonctions de domaine renvoient des informations statistiques sur un domaine ou un ensemble d’enregistrements spécifique.)). Utilisez-la dans un module Visual Basic pour Applications (VBA), une macro (macro : action ou ensemble d’actions que vous pouvez utiliser pour automatiser des tâches. Les macros sont enregistrées dans le langage de programmation Visual Basic pour Applications.), une expression de requête ou un contrôle calculé (contrôle calculé : contrôle utilisé dans un formulaire, un état ou une page d’accès aux données pour afficher le résultat d’une expression. Ce résultat est recalculé chaque fois que l’une des valeurs sur laquelle est basée l’expression est modifiée.).

Par exemple, vous pouvez l'utiliser dans un module pour renvoyer le nombre d'enregistrements d'une table Orders qui correspondent aux commandes passées à une date spécifique.

Syntaxe

DCount(expr, domaine [, critères] )

La syntaxe de la fonction DCount comporte les arguments suivants :

Argument Description
expr Obligatoire. Expression identifiant le champ dont vous voulez comptabiliser les enregistrements. Il peut s'agir soit d'une expression chaîne (expression de chaîne : expression qui, évaluée, donne une séquence de caractères contigus. L’expression peut comprendre les éléments suivants ; fonction qui renvoie une chaîne ou une chaîne de type Variant (VarType 8) ; opérateur sur chaîne, constante, variable ou Variant.) qui identifie un champ d'une table ou d'une requête, soit d'une expression qui effectue un calcul sur des données de ce champ. Vous pouvez inclure dans l'argument expr le nom d'un champ dans une table, un contrôle sur un formulaire, une constante ou une fonction. Si expr inclut une fonction, celle-ci peut être intégrée ou définie par l'utilisateur mais ne peut pas être une fonction de regroupement Domaine ni une fonction d'agrégation SQL.
domaine Obligatoire. Expression chaîne qui identifie l'ensemble d'enregistrements constituant le domaine. Il peut s'agir d'un nom de table ou de requête pour une requête n'exigeant pas de paramètre.
critères Facultatif. Expression chaîne utilisée pour limiter la plage de données sur laquelle porte la fonction DCount. Par exemple, l'argument critères est souvent équivalent à la clause WHERE d'une expression SQL sans le mot WHERE. Si cet argument est omis, la fonction DCount évalue l'argument expr par rapport à l'ensemble du domaine. Tous les champs inclus dans l'argument critères doivent également figurer dans le domaine sans quoi, la fonction DCount renvoie la valeur Null (Null : valeur que vous pouvez entrer dans un champ ou utiliser dans des expressions ou des requêtes pour indiquer des données manquantes ou inconnues. Dans Visual Basic, le mot clé Null indique une valeur Null. Certains champs, tels que les champs de clé primaire, ne peuvent pas contenir de valeurs Null.).
Remarques
Faites appel à la fonction DCount pour comptabiliser le nombre d'enregistrements figurant dans un domaine lorsque vous n'avez pas besoin de connaître leur valeur spécifique. Bien que l'argument expr puisse calculer la valeur d'un champ, la fonction DCount se contente de renvoyer le nombre d'enregistrements. La valeur des calculs effectués par l'argument expr n'est pas disponible.

Utilisez la fonction DCount dans un contrôle calculé si vous avez besoin de spécifier des critères afin de limiter la plage de données sur laquelle porte la fonction DCount. Par exemple, pour afficher le nombre de commandes à expédier en Californie, définissez la propriété SourceContrôle de la zone de texte à l'expression suivante :

=DCount("[IDCommande]", "Commandes", "[RégionExpédition] = 'CA'")

Si vous voulez simplement comptabiliser tous les enregistrements du domaine sans restriction, faites appel à la fonction Count.

Conseil

La fonction Count a été optimisée pour accélérer la calcul du nombre d'enregistrements dans des requêtes. Utilisez-la dans une expression de requête à la place de la fonction DCount et définissez des critères facultatifs pour limiter le nombre de résultats renvoyés. Faites appel à la fonction DCount si vous voulez comptabiliser les enregistrements d'un domaine à partir d'un module de code ou d'une macro ou dans un contrôle calculé.

Vous pouvez faire appel à la fonction DCount pour calculer le nombre d'enregistrements contenant un champ particulier qui ne figure pas dans la source de l'enregistrement sur laquelle le formulaire ou l'état est basé. Par exemple, vous pouvez afficher le nombre de commandes figurant dans un contrôle calculé de la table Orders dans un formulaire basé sur la table Products.

La fonction DCount ne comptabilise pas les enregistrements contenant des valeurs Null dans le champ référencé par l'argument expr sauf si cet argument est un astérisque (*). Si vous utilisez un astérisque, la fonction DCount calcule le nombre total d'enregistrements y compris ceux contenant des champs Null. L'exemple suivant calcule le nombre d'enregistrements figurant dans une table Orders.

intX = DCount("*", "Commandes")

Si l'argument domaine correspond à une table contenant une clé primaire (clé primaire : un ou plusieurs champs (colonnes) dont la valeur identifie de façon unique chaque enregistrement d’une table. Une clé primaire n’accepte pas les valeurs Null et doit toujours avoir un index unique. Une clé primaire sert à relier une table à des clés étrangères se trouvant dans d’autres tables.), vous pouvez également calculer le nombre d'enregistrements en définissant expr au champ de clé primaire étant donné que ce champ ne contiendra jamais de valeur Null.

Si l'argument expr identifie plusieurs champs, séparez leur nom par un opérateur de concaténation (soit le symbole du Et commercial (&), soit l'opérateur d'addition (+). Si vous utilisez le symbole du Et commercial pour séparer les champs, la fonction DCount renvoie le nombre d'enregistrements contenant des données dans un des champs répertoriés et si vous utilisez l'opérateur d'addition, elle renvoie uniquement le nombre d'enregistrements contenant des données dans tous les champs répertoriés. L'exemple suivant montre les effets de chaque opérateur lorsqu'il est utilisé avec un champ contenant des données dans tous les enregistrements (ShipName) et avec un champ ne contenant pas de données (ShipRegion).

intW = DCount("[NomExpédition]", "Commandes")
intX = DCount("[RégionExpédition]", "Commandes")
intY = DCount("[NomExpédition] + [RégionExpédition]", "Commandes")
intZ = DCount("[NomExpédition] & [RégionExpédition]", "Commandes")

Remarque Il est conseillé d'utiliser le Et commercial pour effectuer des concaténation de chaînes et de réserver l'opérateur d'addition aux additions numériques sauf si vous voulez propager des valeurs Null dans toute une an expression.

Les changements effectués dans les enregistrements du domaine, qui n'ont pas été enregistrés, ne sont pas inclus lorsque vous utilisez cette fonction. Si vous voulez que la fonction DCount utilise les valeurs modifiées, commencez par enregistrer ces changements en cliquant sur Sauvegarder enregistrement sous Enregistrements dans l'onglet Données, en plaçant le curseur sur un autre enregistrement ou en utilisant la méthode Mise à jour.

Exemple
Remarque Les exemples qui suivent montrent l'utilisation de cette fonction dans un module Visual Basic pour Applications (VBA). Pour plus d'informations sur l'utilisation de VBA, sélectionnez Référence du développeur dans la liste déroulante en regard de Rechercher et entrez un ou plusieurs termes à rechercher.

La fonction suivante renvoie le nombre de commandes expédiés vers un pays/une région spécifique après une certaine date d'expédition. Le domaine correspond à une table Commandes.

Public Function OrdersCount _
(ByVal strCountryRegion As String, _
ByVal dteShipDate As Date) As Integer

OrdersCount = DCount("[DateExpédié]", "Commandes", _
"[RégionPaysExpédition] = '" & strCountryRegion & _
"' AND [DateExpédié] > #" & dteShipDate & "#")
End Function
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h21   #6
Futur Membre du Club
 
Guy
Inscription : janvier 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Guy

Informations forums :
Inscription : janvier 2010
Messages : 61
Points : 19
Points : 19
Bonjour à tous,

La "Bible" de DCunt est très explicite pour un "Vétéran" d' access mais j'avoue y perdre mon latin. J'essaye de trouvé le code qui me convient.
De plus dans la faq j'ai trouvé ce code
Citation:
If MsgBox("Valider la mise a jour ?? ", vbOKCancel) = vbCancel Then
MsgBox "L\'opération de mise a jour a été annulée", vbInformation
Cancel = True ' annule l'opération
Exit Sub
And If
Déjà j'ai corrigé And if par End if mais lorque j'applique ce code dans le bouton "ANNULER" j'ai un message d'erreur "Variable non défini".
Enfin, est il possible d'empécher Access d'accrémenter la clé primaire lorsque j'annule un enregistrement ?
Merci pour vos réponses
Zeltron24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h14   #7
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Re,

Un peu de lecture encore

http://starec.developpez.com/tuto/fonctionsdomaines/

plus explicite que l'aide.
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 12h22   #8
Futur Membre du Club
 
Guy
Inscription : janvier 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Guy

Informations forums :
Inscription : janvier 2010
Messages : 61
Points : 19
Points : 19
Re,
J'y suis allé voir déjà, mais comme je le dit pour moi c'est du latin.
Il me faudrait un exemple ayant trait à mon projet.
Cela je le comprendrai mieux. En clair avec le nom de mes champs.
J'ai déjà copié des explications en y changeant les champs et Frm par les miens mais ça ne me mets que des erreurs ou cela bloque Acces.
Cordialement
Zeltron24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 22h45   #9
Futur Membre du Club
 
Guy
Inscription : janvier 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Guy

Informations forums :
Inscription : janvier 2010
Messages : 61
Points : 19
Points : 19
Re,

Au plus je recherche dans la faq au plus je me mélange les pédales. Là je suis au bord de la crise.
Une autre erreur s'affiche maintenant Voici le code :

Citation:
Dim vRepVal
Dim valNum As Integer
Do
vRepEnreg = InputBox("Saisissez une valeur 1 ou 0." + Chr(13) _
+ Chr(13) + "Avec Photo..............1 " _
+ Chr(13) + "Sans Photo..............0 " + Chr(13), "Validation Photo.", "N°:")

If vRepEnreg = "" Then Exit Sub ' Exit si valeur nul

If Not IsNumeric(vRepEnreg) Then ' Vérification si numérique
MsgBox "Une valeur numérique est requise !", vbExclamation, "Message Erreur"
End If

Loop Until IsNumeric(vRepEnreg)
valNum = Val(vRepEnreg) ' Conversion en Format numérique

If valNum >= 2 Then ' Vérification si Valeur inférieure à 2
MsgBox "La Valeur " & valNum & " est supérieure à 2 !" + _
Chr(13) + "Choisissez une valeur inférieure. ", vbOKOnly, vbExclamation, "Erreur"
End If

Me.Photo.Value = valNum ' Validation de la saisie
DoCmd.GoToRecord , , acNext ' Se plositionner sur l'enregistrement Suivant
NouvelEnreg ' Demande Si Nouvel Enregistrement
Meme si je rentre un chiffre supérieur à 2 celui ci est inscrit dans le champ Photo alors qu'il devrait y avoir un message d'erreur.
De plus je ne peux pas aller sur la macro NouvelEnreg
Alors svp j'ai besoin d'aide avant de jeter le marteau sur le PC
d'avance Merci
Zeltron24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h30.


 
 
 
 
Partenaires

Hébergement Web