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

VBA Access Discussion :

Tester le clic dans un autre formulaire depuis le code de celui où l'on est


Sujet :

VBA Access

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut Tester le clic dans un autre formulaire depuis le code de celui où l'on est
    bonjour, voila mon problème, j'ai un formulaire, avec une bouton qui m'ouvre un second formulaire, et je voudrais savoir si dans le code de mon premier formulaire, après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm ("TerminerCommande")
    Je peut mettre un code du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If form_TerminerCommande.MonBoutonRetour.click then
    exit sub
    else 
    MsgBox("Veuillez selectionner un Recepteur")
    end if
    En fait je voudrais tester que si on click sur mon bouton retour de mon second formulaire que j'ouvre depuis mon premier, sa n'execute pas le reste de mon code.

    Merci!

  2. #2
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Pour faire simple, je cherche à savoir comment construire un bloc If, ou la condition est le clic sur un bouton dans un autre formulaire ou pas?

    Si je clic sur le bouton retour, alors je quitte mon code, sinon je continue

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    A quel moment tu cliques sur l'autre bouton?? avant l'ouverture de ton form j'imagine?

    Une variable globale devrait faire l'affaire

    6ril25

  4. #4
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ba si tu veux, j'ai un formualire dans lequel j'ai une zone de liste qui affiche des valeurs via une requete.

    J'ai un bouton "Signaler qu'un commande est reçue", et quand je clic sur ce bouton, j'ai mon code qui s'execute, sa m'ouvre une msgBox, avec des boutons oui/non, et si je clic sur Oui, j'ouvre un second formulaire, avec une comboBox, pour que la personne qui reçoie la commande choisisse son nom.

    Je voudrais que si elle quitte le formulaire avec le comboBox en cliquant sur le bouton retour dont le code est , sa n'execute pas la suite de mon code dans mon premier formulaire.

    Je veux que sa ne l'execute que si j'appui sur le bouton OK du formulaire avec la comboBox.

    Pour te résumer en terme de code (je met que des extraits):

    Code de mon bouton "Signaler commande reçue"

    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
    Private Sub SignalerRéception_Click()
    message = MsgBox("Confirmez vous la récéption de " & quantité & " " & désignation & "(s) ?" & Chr(10) & "Si oui, cette quantité sera ajouté au stock.", vbQuestion + vbYesNo, "Confirmation")
    If message = 6 Then
    La j'ouvre mon second formulaire avec la comboBox
    
    
    Et c'est la que je veux faire un test:
    Si je clic sur le bouton Retour dans le formulaire que je vien d'ouvrir, alors Exit Sub Sinon si je clic sur le bouton validé, je continu l'execution de mon code...
    Si je ne fait pas ce test, sa me ferme mon formulaire, mais sa m'execute quand même la suite de mon code. et c'est pas ce que je veux faire.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if msgbox ("ton blabla", vbYesNo) = vbYes then
        ouverture de ton 2eme form et code de ton 1er
    else
         ton close
    end if

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    tu peux nous donner ton code entier, parce que c'est plus très compréhensible là

  7. #7
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Non c'est déja fait sa! Bon je te montre mon code sa va être plus simple:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    Private Sub SignalerRéception_Click()
    Dim sql, message As String, quantité As String, désignation As String, Titre As String, ValeurInuptBox As String
    Dim id_Demande, ID_Référence, ID_Emetteur, ancienStock, nouveauStock As Integer
    Dim odb As DAO.Database
    Dim oRst As DAO.Recordset
    Dim dateJours As Date
    
    If IsNull(Me.lstResults.Column(0)) Then
    MsgBox ("Veuillez selectionner un article dans la liste")
    
    Exit Sub
    End If
     
    Set odb = CurrentDb
    id_Demande = Me.lstResults
    
    dateJours = Date
    quantité = Me.lstResults.Column(9)
    désignation = Me.lstResults.Column(7)
    
    message = MsgBox("Confirmez vous la récéption de " & quantité & " " & désignation & "(s) ?" & Chr(10) & "Si oui, cette quantité sera ajouté au stock.", vbQuestion + vbYesNo, "Confirmation")
    If message = 6 Then
    
    DoCmd.OpenForm ("TerminerCommande")
    Form_TerminerCommande.txtIDDemande.Caption = Me.lstResults
    
    C'est la que je veux faire ma boucle:
    
    Si Form_TerminerCommande.MonBoutonRetour.click then
    Exit sub
    else
    end if
    
        sql = "Update tbl_DemandeDeCommande set id_Etat='4' where  ID_Demande =" & id_Demande & ";"
        odb.Execute (sql)
        sql = "Update tbl_DemandeDeCommande set DateRéception='" & dateJours & "' where  ID_Demande =" & id_Demande & ";"
        odb.Execute (sql)
        Me.Refresh
        
        sql = "Select * from tbl_DemandeDeCommande where  ID_Demande =" & id_Demande & ";"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ID_Référence = oRst.Fields("ID_Référence").Value
        ID_Emetteur = oRst.Fields("id_Emetteur").Value
        
        sql = "select max(ID_transac) from tbl_transaction"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ID_Transac = oRst.Fields(0).Value + 1
        
        sql = "select StockActuel from tbl_Référence"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ancienStock = oRst.Fields("StockActuel").Value
         
        nouveauStock = ancienStock + quantité
        
        sql = "Insert into tbl_Transaction values (" & ID_Transac & ", " & ID_Référence & ", 'Entrée'," & quantité & ",'" & dateJours & "'," & ID_Emetteur & ")"
        odb.Execute (sql)
        
        sql = "Update tbl_Référence set StockActuel='" & nouveauStock & "' where  ID_Référence =" & ID_Référence & ";"
        odb.Execute (sql)
        
    Else
    
    message = MsgBox("Avez vous reçu une autre quantité que " & quantité & " " & désignation & "(s) ?", vbQuestion + vbYesNo, "Confirmation")
    If message = 6 Then
    
    message = "Veuillez entrer la quantité réelement reçue "
    Titre = "Quantité réelement reçue"
    ValeurInuptBox = InputBox(message, Titre)
    
    If ValeurInuptBox = "" Then
    MsgBox ("Veuillez Indiquer une valeur dans la zone de saisie")
    Exit Sub
    Else
    End If
    
    If ValeurInuptBox < 1 Then
    MsgBox ("Veuillez entrer une valeur différente de 0 ou positive")
    Exit Sub
    Else
    End If
    
    If ValeurInuptBox >= quantité Then
    
    sql = "Update tbl_DemandeDeCommande set id_Etat='4' where  ID_Demande =" & id_Demande & ";"
        odb.Execute (sql)
        sql = "Update tbl_DemandeDeCommande set DateRéception='" & dateJours & "' where  ID_Demande =" & id_Demande & ";"
        odb.Execute (sql)
        Me.Refresh
        
        sql = "Select * from tbl_DemandeDeCommande where  ID_Demande =" & id_Demande & ";"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ID_Référence = oRst.Fields("ID_Référence").Value
        ID_Emetteur = oRst.Fields("id_Emetteur").Value
        
        sql = "select max(ID_transac) from tbl_transaction"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ID_Transac = oRst.Fields(0).Value + 1
        
        sql = "select StockActuel from tbl_Référence"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ancienStock = oRst.Fields("StockActuel").Value
         
        nouveauStock = ancienStock + ValeurInuptBox
     
        sql = "Insert into tbl_Transaction values (" & ID_Transac & ", " & ID_Référence & ", 'Entrée'," & ValeurInuptBox & ",'" & dateJours & "'," & ID_Emetteur & ")"
        odb.Execute (sql)
        
        sql = "Update tbl_Référence set StockActuel='" & nouveauStock & "' where  ID_Référence =" & ID_Référence & ";"
        odb.Execute (sql)
        
        Else
    
        sql = "Update tbl_DemandeDeCommande set Quantité=" & quantité & "-'" & ValeurInuptBox & "' where  ID_Demande =" & id_Demande & ";"
        odb.Execute (sql)
        Me.Refresh
        
        sql = "Select * from tbl_DemandeDeCommande where  ID_Demande =" & id_Demande & ";"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ID_Référence = oRst.Fields("ID_Référence").Value
        ID_Emetteur = oRst.Fields("id_Emetteur").Value
        
        sql = "select max(ID_transac) from tbl_transaction"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ID_Transac = oRst.Fields(0).Value + 1
        
        sql = "select StockActuel from tbl_Référence"
        Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
        ancienStock = oRst.Fields("StockActuel").Value
        
        nouveauStock = ancienStock + ValeurInuptBox
        
        sql = "Insert into tbl_Transaction values (" & ID_Transac & ", '" & ID_Référence & "', 'Entrée','" & ValeurInuptBox & "','" & dateJours & "'," & ID_Emetteur & ")"
        odb.Execute (sql)
        
        sql = "Update tbl_Référence set StockActuel='" & nouveauStock & "' where  ID_Référence =" & ID_Référence & ";"
        odb.Execute (sql)
    
        
    End If
     End If
        End If
    End Sub

  8. #8
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    en gros si je clic sur mon bouton retour de mon formulaire "Form_TerminerCommande", je veux quitter l'execution du code, pour que toutes les mises à jours avec les requetes UPDATE et INSERT, ne soit pas effectuées

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    Ok, alors, je te propose de mettre tes "UPDATE et INSERT" dans une fonction de ton 1er formulaire (ou bien même du 2eme) et d'appeler cette fonction au clic sur ton bouton de fermeture du 2eme form.

    Ainsi, tu n'exécutes ton code que si y'a un clic sur la fin de ton 2ème form.

    6ril25

  10. #10
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Oui c'est vrai c'est pas bête!!! Je n'y avais même pas pensé... Alors que je l'ai fait dans plusieurs autres formulaires!!! Bon je vais tester sa et je vous redis!


  11. #11
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    En fait je crois que je vais pas faire ce truc parce que sa me parraît compliqué, du fait que je récupère un certain nombre de valeur directement depuis ma zone de liste, sa va donc être compliqué

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    envois les à la fonction par variable lors de l'appel...

  13. #13
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Comment sa?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    et bien tu passes les valeurs dont tu as besoin, en variable, à ta fonction.

    Sinon, je pensais: et un timer??

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    tiens, un petit lien pour passer tes variables en arguments à ta fonction:

    http://plasserre.developpez.com/v1-12.htm

  16. #16
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 949
    Points : 4 876
    Points
    4 876
    Par défaut
    Une proposition :
    tu déclares un variable publique dans uns module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PUBLIC blnOnarretetout as boolean
    dans ton form, par défaut tu l'initialises à False
    puis quand tu cliques sur le bouton Form_TerminerCommande.MonBoutonRetour
    ainsi tu peux tester simplement dans l'autre form si le clic a été prssé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if blnOnarretetout = True Then
     'on arrete le traitement 
    ...
     end if
    Bonne suite

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    micniv >> ca ne peut pas être aussi simple: comment tu arrêtes le déroulement du code en attendant que l'utilisateur ai renseigné le 2eme form?? sinon par un timer: ma seconde idée...

  18. #18
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    6ril25

    micniv >> ca ne peut pas être aussi simple: comment tu arrêtes le déroulement du code en attendant que l'utilisateur ai renseigné le 2eme form?? sinon par un timer: ma seconde idée...
    Tu trouve sa simple ou compliqué?

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    Citation Envoyé par moilou2 Voir le message
    6ril25
    Tu trouve sa simple ou compliqué?
    C'est assez simple mais pas adapté à ton problème...

  20. #20
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    A bon je trouvé qu c'était adapté... Mais j'ai peut être pas compris à quoi sa servait

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2011, 16h06
  2. Réponses: 17
    Dernier message: 18/03/2010, 07h43
  3. Réponses: 18
    Dernier message: 11/04/2007, 16h18
  4. Réponses: 8
    Dernier message: 21/04/2006, 16h27

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