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 18/07/2011, 14h01   #1
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Par défaut Afficher les données de mon formulaire dans un état

J'ai construit un formulaire qui permet de faire des statistiques sur mes enregistrements en fonction de critères que l'utilisateur choisi.
Il y a par exemple la commune, un objet et une période.
On peut combiner les différents critères ou n'en choisir aucun.

Grâce au code VBA je "construis" ma requête et l'exécute.

J'ai placé des zones de textes dans mon formulaire auxquelles j'affecte les statistiques que j'ai calculé.

Je voudrais maintenant pouvoir offrir la possibilité d'imprimer tout ça dans un état mais je ne vois pas du tout comment faire et passer les informations de mon formulaire vers mon état alors si quelqu'un sait éclairer ma lanterne je veux bien.

Bien à vous
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 22h22   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 473
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 473
Points : 7 558
Points : 7 558
Les résultats ont-ils toujours les mêmes champs ?

Actuellement qu'utilises-tu pour afficher tes résultats ? Un formulaire lié ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 08h50   #3
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Voici une capture d'écran de mon formulaire

Je peux sélectionner dans le haut les différents critères.
Si rien n'est sélectionné, la requête s'exécute sur l'ensemble de la table.

Au clic sur le bouton j'ai un code VBA qui exécute la requête

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 'Déclaration des variables
    Dim rst As Recordset
 
    Dim SQL As String
    Dim SQLWhere As String
 
    'Construction de la requete
    SQL = "SELECT Count(itv.id_itv) AS Total, Sum(lin_commande) AS Lin_cmd, Sum(lin_coll_insp) AS Coll_insp, Sum(lin_bran_insp) AS Bran_insp  FROM itv WHERE id_itv <> 0 "
 
    If Me.chk_comm Then
        SQL = SQL & "And itv!id_commune = " & Me.cmb_comm & ""
    End If
    If Me.chk_objet Then
        SQL = SQL & "And itv!objet_itv = '" & Me.cmb_objet & "' "
    End If
    If Me.chk_periode Then
        If txt_datedebut = "" Or txt_datefin = "" Then
            Dim rep As Integer
            rep = MsgBox("Veuillez compléter la date de début et de fin", vbOKOnly, "Information")
        Else
            SQL = SQL & "And itv!date_itv BETWEEN #" & Me.txt_datedebut & "# AND #" & Me.txt_datefin & "#"
        End If
    End If
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
 
    'Execution de la requête
    Set rst = CurrentDb.OpenRecordset(SQL)
 
    'Remplissage des zones de texte
    sta_nbitv.Value = CStr(rst!total)
    If IsNull(rst!Lin_cmd) Then
        sta_lin_cmd.Value = "0"
    Else
        sta_lin_cmd.Value = CStr(rst!Lin_cmd)
    End If
    If IsNull(rst!Coll_insp) Then
        sta_lin_insp.Value = "0"
    Else
        sta_lin_insp.Value = CStr(rst!Coll_insp)
    End If
    If IsNull(rst!Bran_insp) Then
        sta_bran_insp.Value = "0"
    Else
        sta_bran_insp.Value = CStr(rst!Bran_insp)
    End If
 
    rst.Close
    Set rst = Nothing
Dans la deuxième partie du code je remplis mes zones de textes avec les valeurs obtenues.

Ce que je voudrais c'est créer un état pour pouvoir l'imprimer en envoyant les différentes valeurs que j'ai trouvé et je ne sais pas si c'est faisable. Je suis sur access depuis un mois et demi et j'essaye de me dépatouiller comme je peux
Images attachées
Type de fichier : png form.PNG (37,3 Ko, 8 affichages)
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 17h15   #4
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour,
Personnellement pour faire ça, j'imprime directement le formulaire avec un bouton présent sur ce dernier.
Sur son évènement Click, je mets :
Code :
SendKeys ("^(p)")   ' Equivalent à CTRL+P
Sauf que je choisis quels sont les éléments (ou contrôles) à imprimer ou non.
Pour cela, il suffit d'aller dans les propriétés de chaque contrôle et dans l'onglet format, modifier la propriété Afficher. On peut choisir "Toujours", "A l'impression" ou "A l'écran".
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 15h33   #5
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Oui c'est une solution.
Mais j'aurai éventuellement voulu rajouter la liste des enregistrements concernés.

Pour moi alors cette solution ne semble pas envisageable alors
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 16h07   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 473
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 473
Points : 7 558
Points : 7 558
Comme la structure des données affichées semble la même, seul le nombre d'enr varie en fonction de ton filtre, je ferai un état qui affiche toutes les données et j'appliquerai le filtre lors de l'ouverture avec la commande

Code :
DoCmd.OpenReport "NomTonRapport", acPreview, , "Ici ton filtre"
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h34   #7
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Oui la structure des données à afficher est toujours la même.

Est ce que je peux passer plusieurs critères pour le filtre ?
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h06   #8
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 473
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 473
Points : 7 558
Points : 7 558
Oui tu peux faire le filtre aussi complexe que nécessaire c'est comme une clause Where de SQL.

Il te suffit de récupérer dans ton code VBA ce qui génère ta clause Where de ton SQL et l'utiliser comme filtre.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 08h42   #9
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Merci, je vais essayer alors. C'est la première fois que je m'attaque à des états.
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 16h07   #10
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Re bonjour,

J'ai préparé mon état avec les données que je voudrais afficher.
Il ne me reste plus qu'à appliquer les différents filtres issus de mon formulaire et c'est à cet endroit que je cale.

j'ai repris ce que tu m'as dit
Code :
1
2
3
DoCmd.OpenReport "NomTonRapport", acPreview, , "Ici ton filtre" 'Ton code
 
DoCmd.OpenReport "NomTonRapport", acPreview, , cmb_commune.value ' le mien pour envoyer le nom de ma commune
Sauf que mon état s'ouvre et je ne sais pas comment récupérer le ou les paramètres pour les appliquer ?
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 16h26   #11
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 473
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 473
Points : 7 558
Points : 7 558
C'est une clause where semblable à du SQL donc il faut mettre un truc du genre
Code :
DoCmd.OpenReport "NomTonRapport", acPreview, , "[Commune]=" & cmb_commune.value
si la commune est numérique et
Code :
DoCmd.OpenReport "NomTonRapport", acPreview, , "[Commune]=""" & cmb_commune.value & """"
si la commune est un texte.

Il va s'appliquer automatiquement.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h40   #12
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Merci Marot,

Ca marche pour un paramètre.

J'ai maintenant essayé de combiné plusieurs paramètres ainsi :

Code :
1
2
DoCmd.OpenReport "monEtat", acPreview, , "[id_commune]=" & cmb_comm.Value & " AND [objet] = '" & cmb_objet.Value & "'"
' Le premier est numérique, le second chaine de caractère
Lorsque je l'écris ainsi avec le AND, mon état est vide, lorsque je teste une fois la commune ou l'objet séparément ça marche.

Quand je vais voir mon état, filtre, il semble que les valeurs sont correctement passées

Code :
([id_commune]=25 AND [objet] = 'monObjet')
Je ne sais pas trop ce qui cloche
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h56   #13
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 074
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 074
Points : 4 381
Points : 4 381
Envoyer un message via Skype™ à GAYOT
Bonjour à tous.
Ne trouverais tu pas une piste ici:
http://jdgayot.developpez.com/tutoriels/access/filtre/
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h59   #14
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Je vais regarder.

Je continue à tester et persévérer.

Là ça semble marcher.

Merci pour le coup de main
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 14h07   #15
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
J'ai encore une dernière question.
Maintenant que j'arrive à filtrer sur plusieurs critères.
Est-ce possible dans mon état de récupérer ces valeurs ?
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 14h24   #16
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 473
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 473
Points : 7 558
Points : 7 558
La réponse est oui mais cela dépend de ce que tu veux faire.

Si tu as toujours le même nombre de critères, la solution la plus simple est d'écrire =[Forms]![NomTonFormParam]![NomTonChampParam] dans la source d'un contrôle TextBox sur ton rapport.

Si tu as un nombre variable de paramêtres cela va être un peu plus compliqué et il faudrait que tu en dises un peu plus sur la manière dont tu veux les présenter.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 14h36   #17
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Effectivement c'est une question à laquelle je n'avais pas songé.

Je pourrais avoir 0, 1,2 ou 3 paramètres.
0 c'est l'ensemble de ma table.
Ensuite je peux choisir entre une commune, un objet, et une période (sous forme date de début/date de fin).

Ainsi je voudrais pouvoir afficher rapport sur la commune telle ou telle concernant cet objet...

Ca semble compliqué effectivement
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 15h23   #18
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 473
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 473
Points : 7 558
Points : 7 558
Ok dans ce cas là je créerai la partie 'humaine' du filtre dans un champ Texte caché sur mon formulaire de paramétrage.

Un truc du genre

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dim filtreEnClair as string
 
if condition1 then
    if filtreEnClair<>"" then
       filtreEnClair=filtreEnClair & vbNewLine 'Ajouteune ligne pour séparer les paramètres
    end if
 
    filtreEnClaire = filtreEnClair & "Texte associé à condition1"
end if
 
if condition2 then
    if filtreEnClair<>"" then
       filtreEnClair=filtreEnClair & vbNewLine
    end if
 
    filtreEnClaire = filtreEnClair & "Texte associé à condition2"
end if
 
me.AffFiltreEnClair=filtreEnClair
Dans ton état tu récupère AffFiltreEnClair comme mentionné plus haut pour le filtre simple.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 09h14   #19
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Excellente suggestion

Ca me permet de réaliser ce que je voulais !

Merci !
fonfek24 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 13h11.


 
 
 
 
Partenaires

Hébergement Web