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 :

Impression suivant plusieurs critères [AC-2013]


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut Impression suivant plusieurs critères
    Bonjour,

    J'ai un devis avec un bouton impression qui a le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Commande444_Click()
    On Error GoTo Err_Commande444_Click
         If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") Then
        DoCmd.OpenReport "DEVISGEOPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        Else
        DoCmd.OpenReport "DEVISPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
     
    Exit_Commande444_Click:
        Exit Sub
    Err_Commande444_Click:
        MsgBox Err.Description
        Resume Exit_Commande444_Click
    End If
    End Sub
    Dans le devis j'ai un champ REMISECOM (remise commerciale) qui est à 0 par défaut mais qui peut être renseigné si besoin.

    Dans une précédente discussion (https://www.developpez.net/forums/d1.../#post10875056), Hyperion13 m'a indiqué que je devais créer 2 types de devis, l'un avec et remise et l'autre sans. Ce que j'ai fait.

    Maintenant je souhaite réécrire le code. J'ai essayé comme ceci :

    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
     Private Sub Commande444_Click()
    On Error GoTo Err_Commande444_Click
     
        If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") And (Me.REMISECOM = 0) Then
        DoCmd.OpenReport "DEVISGEOPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
        If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") Then
        DoCmd.OpenReport "DEVISGEOPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
        If Me.REMISECOM = 0 Then
        DoCmd.OpenReport "DEVISPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        Else
        DoCmd.OpenReport "DEVISPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
    Exit_Commande444_Click:
        Exit Sub
    Err_Commande444_Click:
        MsgBox Err.Description
        Resume Exit_Commande444_Click
    End Sub
    Pour les devis dont le type générateur est autre que 6 ou 7 les devis, avec ou sans remise s’impriment sans problème.
    En revanche pour les devis type 6 ou 7 (GEO), là ça imprime toutes les sortes de devis GEO c'est-à-dire avec et sans remise…

    Pourriez-vous m’aider à corriger le code ? avec mes remerciements, cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    Tu ne testes pas remisecom lors de l'impression des "avec remises" donc il ramasse tout.

    La correction est probablement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") And (Me.REMISECOM = 0) Then
        DoCmd.OpenReport "DEVISGEOPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
    End If
     
    If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7")  And (Me.REMISECOM <> 0) Then
        DoCmd.OpenReport "DEVISGEOPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
    End If
    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Bonjour marot_r,

    J'ai testé ta proposition avec le code suivant :

    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
    Private Sub Commande444_Click()
    On Error GoTo Err_Commande444_Click
     
        If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") And (Me.REMISECOM = 0) Then
        DoCmd.OpenReport "DEVISGEOPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
        If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") And (Me.REMISECOM <> 0) Then
        DoCmd.OpenReport "DEVISGEOPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
        If Me.REMISECOM = 0 Then
        DoCmd.OpenReport "DEVISPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        Else
        DoCmd.OpenReport "DEVISPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
    Exit_Commande444_Click:
        Exit Sub
     
    Err_Commande444_Click:
        MsgBox Err.Description
        Resume Exit_Commande444_Click
    End Sub
    Et voici ce qui se passe en cliquant sur le bouton :

    Pour les générateurs de type "6" SANS remise, il s'ouvre 3 devis : DEVISGEOPDFSANSREMISE + DEVISGEOPDF + DEVISPDFSANSREMISE.
    Pour les générateurs de type "6" AVEC remise, il s'ouvre 3 devis : DEVISGEOPDFSANSREMISE + DEVISGEOPDF + DEVISPDF.
    Pour les générateurs de type "7" SANS remise, il s'ouvre 2 devis : DEVISGEOPDFSANSREMISE + DEVISPDFSANSREMISE.
    Pour les générateurs de type "7" AVEC remise, il s'ouvre 2 devis : DEVISGEOPDF + DEVISPDF.

    Alors que le résultat escompté est DEVISGEOPDFSANSREMISE ou DEVISGEOPDF.

    Donc il n'est déjà pas normal que le PDF s'ouvre 3 ou 2 fois et en utilisant plusieurs modèle de devis et ce qui est curieux également, c'est que les types "6" et "7" soient gérés différemment.

    Qu'en penses-tu ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Des soucis dans les combinaisons des conditions logiques à mon avis. essaies :
    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
    Private Sub Commande444_Click()
    On Error GoTo Err_Commande444_Click
     
        If ((Me.TYPEGENRATEUR = "6") And (Me.REMISECOM = 0)) Or ((Me.TYPEGENRATEUR = "7") And (Me.REMISECOM = 0)) Then
        DoCmd.OpenReport "DEVISGEOPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
        If ((Me.TYPEGENRATEUR = "6")And (Me.REMISECOM <> 0)) Or ((Me.TYPEGENRATEUR = "7") And (Me.REMISECOM <> 0)) Then
        DoCmd.OpenReport "DEVISGEOPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
        If Me.REMISECOM = 0 Then
        DoCmd.OpenReport "DEVISPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        Else
        DoCmd.OpenReport "DEVISPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
        End If
     
    Exit_Commande444_Click:
        Exit Sub
     
    Err_Commande444_Click:
        MsgBox Err.Description
        Resume Exit_Commande444_Click
    End Sub
    Cordialement.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Bonjour madefemere,

    J'ai testé ce nouveau code et les résultats sont :
    Pour le type "6" et "7" AVEC remise, le bouton ouvre DEVISGEOPDF + DEVISPDF
    Pour le type "6" et "7" SANS remise, le bouton ouvre DEVISGEOPDFSANSREMISE + DEVISPDFSANSREMISE

    Les autres types s'ouvrent correctement.

    On peut constaté qu'avec ce code les 2 types qui nous enquiquinent, sont gérés de la même manière mais j'ai toujours un devis de trop...on dirait que malgré les IF les modèles intitulés sans GEO s'ouvrent quoiqu'il arrive...

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Et comme ça ?
    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
    Private Sub Commande444_Click()
    On Error GoTo Err_Commande444_Click
     
        If Me.REMISECOM = 0 Then                                                                                'test si REMISE =0
            If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") Then                                           'test si générateur 6 ou 7
                DoCmd.OpenReport "DEVISGEOPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
            Else
                DoCmd.OpenReport "DEVISPDFSANSREMISE", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"            'autres générateurs
            End If
        Else                                                                                                    'Cas remise <>0
            If (Me.TYPEGENRATEUR = "6") Or (Me.TYPEGENRATEUR = "7") Then                                            'test si générateur 6 ou 7
                DoCmd.OpenReport "DEVISGEOPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"
            Else
                DoCmd.OpenReport "DEVISPDF", acNormal, , "[GENEDEVIS]='" & Me![NUMDEVIS] & "'"                      'autres générateurs
            End If
        End If
     
    Exit_Commande444_Click:
        Exit Sub
     
    Err_Commande444_Click:
        MsgBox Err.Description
        Resume Exit_Commande444_Click
    End Sub
    Cordialement.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    AAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHH, superbe ça fonctionne, les devis s'ouvrent correctement avec les bonnes infos.

    Merci beaucoup madefemere, et bon 1er mai, cordialement,
    Maringot

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/01/2015, 15h28
  2. Réponses: 8
    Dernier message: 27/11/2012, 11h16
  3. [XL-2003] Produit d une addition suivant plusieur critère
    Par alex santus dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2010, 11h30
  4. Réponses: 2
    Dernier message: 10/12/2009, 17h05
  5. [XL-2007] Extraction de données suivant plusieurs critères
    Par jejeld dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/10/2009, 11h22

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