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

IHM Discussion :

ouvrir plusieurs états avec boucle FOR...NEXT [AC-2007]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    ingénieur essais électronique
    Inscrit en
    Mai 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 144
    Points : 75
    Points
    75
    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 ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    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é

  3. #3
    Membre régulier
    Homme Profil pro
    ingénieur essais électronique
    Inscrit en
    Mai 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre régulier
    Homme Profil pro
    ingénieur essais électronique
    Inscrit en
    Mai 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    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 : 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
    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).

  5. #5
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview

  6. #6
    Membre régulier
    Homme Profil pro
    ingénieur essais électronique
    Inscrit en
    Mai 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    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 : 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
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle For Next avec 2 variables
    Par neninio31 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/07/2019, 19h46
  2. Prob boucle for next avec recherche chaine
    Par papajn dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 11/08/2011, 18h44
  3. Plusieurs boucles For next imbriquées
    Par athos7776 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/04/2011, 22h48
  4. [VB.net] Boucle for next avec un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h08
  5. faire plusieur declaration avec boucle for ?
    Par debutant-1 dans le forum C
    Réponses: 4
    Dernier message: 18/05/2006, 20h19

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