Variable & msgbox

Bonjour,

Je vous sollicite car je coince sur un petit module dont je n’arrive pas à faire fonctionner le tout, celui-ci incluant des conditions, des "msgbox", une "checkbox", des fonction "Dcount", et des "condition if" en même temps. je vous explique sans plus attendre la problématique :

J'ai commencer par déclarer deux variables concernant le "Dcount" car celui-ci dois renvoyer la valeur dans une msgbox (VByesno) avec une valeur différente en fonction de si j'ai coché ou non la checkbox.

Ce qui nous donne pour le moment :

Private Sub Commande20_Click()
Dim compte As Integer, compte2 As Integer
compte = DCount("*", "table_cb") * [Nmbre] + DCount("*", "table_cb")
compte2 = DCount("*", "table_cb") * [Nmbre]

Pour info la différence entre les deux valeur des variables et donc dans le calcul du "Dcount"

Commençons la procédure :

Lorsque j'appuie sur le bouton imprimer de mon formulaire, Si j'ai coché la checkbox alors la valeur que doit renvoyer ma msgbox et la valeur "Compte", sinon c'est "compte2"

Voici mon code dans son intégralité

Private Sub Commande20_Click()

Dim compte As Integer, compte2 As Integer

compte = DCount("*", "table_cb") * [Nmbre] + DCount("*", "table_cb")
compte2 = DCount("*", "table_cb") * [Nmbre]

If CheckBox_masse = True Then
DoCmd.OpenQuery "Raz"
DoCmd.OpenQuery "Rq_CAD_MASSEE"
DoCmd.Close acQuery, "Rq_CAD_MASSEE"
DoCmd.OpenQuery "Rq_Ajt_cad_masse"
DoCmd.OpenQuery "Alim2"
DoCmd.OpenQuery "MAJ MFG_CB"
DoCmd.OpenQuery "maj_semi"
question = MsgBox("Attention, Voulez allez imprimer " & compte & " étiquettes, voulez-vous continuez ?", vbYesNo + vbExclamation)
If question = vbNo Then
Exit Sub
Else
DoCmd.RunMacro "imprim_cb", Nmbre
DoCmd.RunMacro "imprim_MFG"
End If

DoCmd.OpenQuery "Raz"
DoCmd.OpenQuery "Rq_CAD_MASSEE"
DoCmd.Close acQuery, "Rq_CAD_MASSEE"
DoCmd.OpenQuery "Rq_Ajt_cad_masse"
DoCmd.OpenQuery "Alim2"
DoCmd.OpenQuery "MAJ MFG_CB"
DoCmd.OpenQuery "maj_semi"
question = MsgBox("Attention, Voulez allez imprimer " & compte2 & " étiquettes, voulez-vous continuez ?", vbYesNo + vbExclamation)
If question = vbNo Then
Exit Sub
End If
Else
DoCmd.RunMacro "imprim_cb", Nmbre
End If
End Sub

Pour résumé :

La valeur qui doit être renvoyer dans la msgbox est "compte" , concernant le code qui doit s’exécuter c'est le suivant...

If CheckBox_masse = True Then
DoCmd.OpenQuery "Raz"
DoCmd.OpenQuery "Rq_CAD_MASSEE"
DoCmd.Close acQuery, "Rq_CAD_MASSEE"
DoCmd.OpenQuery "Rq_Ajt_cad_masse"
DoCmd.OpenQuery "Alim2"
DoCmd.OpenQuery "MAJ MFG_CB"
DoCmd.OpenQuery "maj_semi"

MSGBOX + AVEC VALEUR APPROPRIEE

Si réponse Yes ;

DoCmd.RunMacro "imprim_cb", Nmbre
DoCmd.RunMacro "imprim_MFG"

Si réponse No, un Exit sub suffira.

Dans le cas contraire si checkbox non coché la valeur que doit renvoyer la msgbox= compte2

Et le code est le suivant:

DoCmd.OpenQuery "Raz"
DoCmd.OpenQuery "Rq_CAD_MASSEE"
DoCmd.Close acQuery, "Rq_CAD_MASSEE"
DoCmd.OpenQuery "Rq_Ajt_cad_masse"
DoCmd.OpenQuery "Alim2"
DoCmd.OpenQuery "MAJ MFG_CB"
DoCmd.OpenQuery "maj_semi"

MSGBOX + AVEC VALEUR APPROPRIEE

Si réponse Yes :

DoCmd.RunMacro "imprim_cb", Nmbre

Si réponse No un Exit sub suffira

Désolé pour le roman mais je me devais d'etre le plus clair possible,

Merci pour vos retour, Cordialement.

Bonjour,

un conseil, indente ton code, c'est plus facile de voir l'imbrication des If et Else.

Voici une correction (non testée)

Private Sub Commande20_Click()

    Dim compte As Integer, compte2 As Integer

    compte = DCount("*", "table_cb") * [Nmbre] + DCount("*", "table_cb")
    compte2 = DCount("*", "table_cb") * [Nmbre]

    If CheckBox_masse = True Then
        DoCmd.OpenQuery "Raz"
        DoCmd.OpenQuery "Rq_CAD_MASSEE"
        DoCmd.Close acQuery, "Rq_CAD_MASSEE"
        DoCmd.OpenQuery "Rq_Ajt_cad_masse"
        DoCmd.OpenQuery "Alim2"
        DoCmd.OpenQuery "MAJ MFG_CB"
        DoCmd.OpenQuery "maj_semi"
        question = MsgBox("Attention, Voulez allez imprimer " & compte & " étiquettes, voulez-vous continuez ?", vbYesNo + vbExclamation)
        If question = vbNo Then
            Exit Sub
        Else
            DoCmd.RunMacro "imprim_cb", Nmbre
            DoCmd.RunMacro "imprim_MFG"
        End If
    Else
        DoCmd.OpenQuery "Raz"
        DoCmd.OpenQuery "Rq_CAD_MASSEE"
        DoCmd.Close acQuery, "Rq_CAD_MASSEE"
        DoCmd.OpenQuery "Rq_Ajt_cad_masse"
        DoCmd.OpenQuery "Alim2"
        DoCmd.OpenQuery "MAJ MFG_CB"
        DoCmd.OpenQuery "maj_semi"
        question = MsgBox("Attention, Voulez allez imprimer " & compte2 & " étiquettes, voulez-vous continuez ?", vbYesNo + vbExclamation)
        If question = vbNo Then
            Exit Sub
        Else
            DoCmd.RunMacro "imprim_cb", Nmbre
        End If
    End If
End Sub

Salut,

Tout d'abord merci pour ton retour, en effet je devrais me mettre des notes d'instructions, surtout pour un débutant comme moi.

Pour revenir au sujet principal, le code fonctionne d'une manière générale, un grand bravo, sauf que je constate deux problèmes.

1) Lorsque je coche la checkbox tout se déroule bien, sauf au moment de l'impression, car je n'ai qu'une seule étiquette qui s'imprime, or je devrais avoir autant d'étiquette que d'enregistrement.

2) Le Dcount n'est pas forcément très réactif, bien souvent il me dit que j'ai 0 enregistrement, hors ce n'est pas le cas, je click VBNO je recommence et là j'ai bien la bonne information renvoyée par le Dcount.

Pour le problème d'étiquette lors de l'impression je suis en train de la résoudre, parfois Accès est capricieux, je recommence donc ma requête de sélection et ça devrait fonctionner.

As-tu une idée ou suggestion pour que ce Dcount fasse mieux son boulot ? peut-être le placer quelque part d'autres dans le code?

Pour finir, lorsque tout cela fonctionnera je sais que je serais face à une nouvelle problématique qui est la suivante :

supposons que dans ma table j'ai 20 enregistrements, et que l'utilisateur décide d'imprimer 2 copies de chaque, soit 40 étiquettes

Ce que je souhaiterais c'est que les deux exemplaires s'impriment consécutivement l'un après l'autre et non pas avoir 20 enregistrements, puis 20 enregistrements pour avoir mon total de 40 étiquettes.

Exemple :

AAAA

BBBB

CCCC

&

AAAA

BBBB

CCCC

MoI je souhaite :

AAAA

AAAA

BBBB

BBBB

CCCC

CCCC

Encore pire dans le cas ou j'ai coché ma checkbox, c'est la même problématique avec en plus l’étiquette qui s’imprime si la checkbox est coché soit le résultat attendu est

11111 (Étiquette si checkbox cochée) cette étiquette et liée a AAAA

AAAA

AAAA

2222 (Étiquette si checkbox cochée) cette étiquette et liée a BBBB

BBBB

BBBB

11111 (Étiquette si checkbox cochée) cette étiquette et liée a CCC

CCCC

CCCC

Ca me parait compliqué mais bon... je précise également que je lance mon impression par une macro associé à un champ [Nmbre] qui détermine le nombre de copies.

Cordialement,

Re,

Je reviens concernant le premier problème liée au "Dcount" et sa non réactivité !

J'ai imbriquer le calcul directement dans les MSGBOX associée et la le calcul est instantané,

On nous conseille de déclarer nos variables et elle nous font fausse routes ? Humm satané variables !!

Ou alors c'est moi qui m'y prend mal, c'est une possibilité

Je vous attend concernant le dernier problème et à mon sens le plus compliqué, le tri des état.

Cordialement,

bonsoir,

si tu as de nouvelles questions, ouvre un nouveau message, que d'autres membres du forum puissent t'aider. relis les règles du forum (mets les fichiers nécessaires pour qu'on puisse t'aider)

Bonsoir,

J'avais jugée que les sujets était liée mais ok pour un nouveau post.

Cordialement.

Rechercher des sujets similaires à "variable msgbox"