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 28/06/2011, 13h24   #1
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Par défaut ouvrir plusieurs états avec boucle FOR...NEXT

Bonjour,

Comment ouvrir plusieurs états (dans une boucle for ...next) avec condition where différente et les afficher ?
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 14h42   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
si tes noms de formulaire et tes conditions sont "générables" à partir du compteur de boucle, c'est facile
sinon, tu peux balayer les objets état décrits dans la table système MSysObjects
tu peux aussi avoir une liste de "openReport" sans boucle For Next si la liste d'états est fixe

m'enfin, je pense que le besoin d'afficher une grand quantité d'états est la marque d'un problème d'analyse initial
il me semble plus judicieux d'avoir un formulaire de choix multicritères et un seul état pour afficher le contenu délectionné
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 15h07   #3
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
J'ai un formulaire avec deux zone de liste modifiable (référence de piece et numero de la monte).

Un bouton Add qui ajoute la sélection de la liste modifiable dans la zone de liste (2 colonnes, une pour la référence et l'autre pour la monte)

Ensuite un bouton OK qui ouvre un état (basée sur une requete) avec un critère (les différentes valeurs de zone de liste). Je récupère ces valeurs dans un tableau puis je les utilise dans le filtre de requete. Ensuite j'ouvre l'état.

Tout fonctionne bien avec une seule valeur de liste. Mais dès que je met deux valeurs dans la liste, il ne m'ouvre qu'un seul état pourtant je suis dans une boucle FOR ... NEXT.

Pour info voici mon filtre et l'ouverture de la requete :

Code :
1
2
3
my_filtre = "[Graphe Evolution tous].Référence ='" & val_reference & "' And [Graphe Evolution tous].[N° monte] ='" & val_monte & "'"
 
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , my_filtre
Voila l'erreur que je ne comprend car je n'utilise pas d'imprimante :

Un problème s'est produit lors de l'extraction des informations de l'imprimante pour cet objet. L'objet a pu être envoyé à une imprimante qui n'est pas disponible.

Moi je voudrai soit x état en fonction du nombre de ligne de ma liste (un état par référence et monte de piece)
ou les uns en dessous des autres (mais là je croit que c'est chaud).

Le nombre de ligne dans la liste n'est pas fixe donc impossible de faire plusieurs openreport.

Ps : utilise si possible des solutions simples car j'ai pas tout compris dans ta reponse

De toute manière il n'yaura jamais plus de 10 états demandé ouvert
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 17h33   #4
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Bon j'ai réussi comme ceci : J'ai l'impression que tout résidait dans la déclaration de essai() tout en haut du form

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Compare Database
Dim essai() As [Report_TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous]
Option Explicit
 
'dans le private sub
 
ReDim essai(nbr_ligne_liste) As [Report_TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous]
 
For ligne = 0 To nbr_ligne_liste
 
val_reference = tableau_reference(ligne)
val_monte = tableau_monte(ligne)
 
Set essai(ligne) = New [Report_TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous]
essai(ligne).Filter = "[Graphe Evolution tous].Référence ='" & val_reference & "' And [Graphe Evolution tous].[N° monte] ='" & val_monte & "'"
essai(ligne).FilterOn = True
 
essai(ligne).Visible = True
 
 
Next ligne
Ce code m'ouvre plusieurs instance du même état, comment mettre tout à la suite (en dessous des uns des autres).
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 21h34   #5
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
à la vue de ta réponse précédente, et confirmation avec la dernière, laisse vite tomber les boucles et la programmation!!!!!
tu as juste besoin d'alimenter ta requête avec le contenu de ta liste
et ensuite de faire un seul état avec un trier-regrouper judicieux qui t'imprimera autant de pages que tu en auras besoin

ton seul code VB devrait être:
Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h58   #6
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
C'est bon probleme résolu, j'ai créer moi meme ma chaine de caratere filtre pour mon état (avec des and et or).

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
Private Sub cmd_OK_par_element_teste_Click()
 
Dim ligne As Integer
Dim val_element_teste As String
Dim val_monte As Integer
 
Dim my_filtre As String
Dim strList As String
 
strList = ""
 
For ligne = 0 To lst_element_teste_monte.ListCount - 1
        val_element_teste = lst_element_teste_monte.Column(0, ligne)
        val_monte = lst_element_teste_monte.Column(1, ligne)
 
        strList = strList & "or(([Graphe Evolution par element teste].[Elément testé]= '" & val_element_teste & "') and ([Graphe Evolution par element teste].[N° monte]=" & val_monte & "))"
 
Next ligne
 
 
 
strList = Right(strList, Len(strList) - 2) ' enlève le or du début.
 
my_filtre = strList
 
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 par element teste", acViewPreview, , my_filtre
 
 
End Sub
Je crée ma chaine filtre dans une boucle for puis je la met dans la clause where de mon docmd.openreport
sylv20 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 02h15.


 
 
 
 
Partenaires

Hébergement Web