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 :

création d'un code VBA [AC-2003]


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut création d'un code VBA
    * Bonjour, *

    Je cherches à insérer des sauts sur mon application sur MS_Acces sur une question du genre:
    ISE01: quelle est votre situation actuellement?
    1.En chômage(allez à CF01)
    2.Poursuit une formation(allez à ISE02)
    3.En stage(allez à ISE08)
    4.Employé(allez à ISE21)
    5.Auto-emploi(allez à ISE30)
    6.Autres à preciser(allez à CF01)

    Donc l'idée est de pouvoir créér un code tel que si on coche 1,on se retrouve sur la question CF01; Si on coche 2 on se retrouve sur la question ISE02, etc.

    * Merci *

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : Réunion

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    Avec le SELECT CASE vous pourrez y arriver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function Bonus(performance, salary)
        Select Case performance
            Case 1
                Bonus = salary * 0.1
            Case 2, 3
                Bonus = salary * 0.09
            Case 4 To 6
                Bonus = salary * 0.07
            Case Is > 8
                Bonus = 100
            Case Else
                Bonus = 0
        End Select
    End Function

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    A moins que j'ai mal compris, j'ai pas l'impression que "Select case face mon affaire.
    Voila en fait comment se présente la question.Dans le Bac d'en face(\_____\), il faut nécessairement écrire une et une seule modalité comprise entre 1 et 7. Pour toute modalité renseignée dans le Bac (d'en face), chaque modalité renvoi à une autre question (Pour faciliter la saisie).La modalité 1 par exemple renvoi pratiquement à la dernière page du formulaire

    ISE01: Quelle est votre situation actuellement?


    1.En chômage(allez à CF01)
    2. Poursuit une formation(allez à ISE02)
    3.En stage(allez à ISE08)
    \____\
    4.A eu un concours direct de la fonction publique(allez à ISE14)
    5.Employé(allez à ISE21)
    6.Auto-emploi (allez à ISE30)
    7.Autres à préciser(allez à CF01)

    DONC CF01,ISE02,ISE08,ISE14,ISE21,ISE30 sont les différentes questions auxquelles chaque modalité saisie (1 ou 2 jusquà 7) permet d'atteindre. La question de base étant ISE01

  4. #4
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    Je crois qu'au contraire, Select case peut vous rendre service

    Je ne sais pas ce qu'est "ISE01", mais voici ce que je vous propose d'après l'exemple de ISLEA95

    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
    Select Case ISE01
    Case 1
    docmd.openform "CF01"
    Case 2
    docmd.openform "ISE02"
    Case 3
    docmd.openform "ISE08"
    case 4
    docmd.openform "ISE21"
    case 5
    docmd.openform "ISE30"
    case 6
    docmd.openform "CF01"
     
    End Select
    A vous d'adapter
    Pierre

  5. #5
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour pondere,

    Peux-tu préciser le mode d'accès aux questions ?
    Sont-elles toutes présentes dans un formulaire ? ou alors passes-tu par des boites de dialogue ?
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci Dumas.blr

    On accède aux questions via un seule formulaire. Le formulaire contient plusieurs pages :5 pages( que j'ai créé via l'onglet "Contrôle onglet" du groupe d'onglet CREATION D'ACCESS).

    ISE01, ISE02,ISE30 sont en fait des champs.
    Mais au fait,comment accéder à "Select Case".Quelle est la procédure??

  7. #7
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Je vais essayer de répondre en fonction de ce que je crois comprendre.
    Si ce n'est pas clair, essaie d'être un peu plus précis dans la description de ton formulaire.

    Dans ton formulaire, tu as plusieurs contrôles qui peuvent être répartis sur plusieurs onglets, mais pas nécessairement.
    Je pars de l'hypothèse que ISE01 est un controle de type textbox ou bouton-radio. (ainsi que ISE01, ISE02,ISE30 ...)
    il suffira de coder dans l'évenement ISE01_click un code du type
    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
    select case ISE01.value   '(code réponse)
    Case 1 'En chômage
     CF01.setfocus
    case 2 'Poursuit une formation
     ISE02.setfocus
    Case 3 'En stage
     ISE08.setfocus
    Case 4 'A eu un concours direct de la fonction publique
     ISE14.setfocus
    Case 5 'Employé
     ISE21.setfocus
    Case 6 'Auto-emploi 
     ISE30.setfocus 
    Case 7 'Autres à préciser
     CF01.setfocus
    end select
    Tu peux utiliser ce type de code pour chacun de tes contrôles.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par dumas.blr Voir le message
    Je vais essayer de répondre en fonction de ce que je crois comprendre.
    Si ce n'est pas clair, essaie d'être un peu plus précis dans la description de ton formulaire.

    Dans ton formulaire, tu as plusieurs contrôles qui peuvent être répartis sur plusieurs onglets, mais pas nécessairement.
    Je pars de l'hypothèse que ISE01 est un controle de type textbox ou bouton-radio. (ainsi que ISE01, ISE02,ISE30 ...)
    il suffira de coder dans l'évenement ISE01_click un code du type
    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
    select case ISE01.value   '(code réponse)
    Case 1 'En chômage
     CF01.setfocus
    case 2 'Poursuit une formation
     ISE02.setfocus
    Case 3 'En stage
     ISE08.setfocus
    Case 4 'A eu un concours direct de la fonction publique
     ISE14.setfocus
    Case 5 'Employé
     ISE21.setfocus
    Case 6 'Auto-emploi 
     ISE30.setfocus 
    Case 7 'Autres à préciser
     CF01.setfocus
    end select
    Tu peux utiliser ce type de code pour chacun de tes contrôles.



    OK. J'ai en fait oublié de dire que je suis novice dans la programmation
    Je vais tenter de m'expliquer par un autre exemple.
    Voila une syntaxe que j'ai pu ecrire dans mon programme.
    Disons que si tu me pose la question:
    ISE01: as tu compris l'explication de Dumas? (1=Oui 2=Non, si =Oui aller à CF01)
    Pour ecrire ce code, je vais sur le controle(j'appelle ça champ) sur propriéte/Evenement/generateur de code, j'écrit après avoir créér une macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub ISE01_Exit(Cancel As Integer)
     Dim stDocName As String
     
        stDocName = "Saut_CF01"
        If ISE01 = 1 Then
     
        DoCmd.RunMacro stDocName
        End If
    End Sub

    La je sait le faire. mais quand ça va au dela de 1=Oui et 2=Non comme dans mes anciens Posts, je ne sais pas comment m'y prendre.

    Juste pour dire que je ne sais pas par ou rentrer pour écrire ton code. J'espère que je te fatigue pas trop mais s'il faut que je t'envoi mon questionnaire pour que t'y jette un coup d'oeil pas de problème

  9. #9
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Le principe de base est correct, mais l'évènement codé ne semble pas correct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ISE01_Exit(Cancel As Integer)
    Dim stDocName As String
     
    stDocName = "Saut_CF01"
    If ISE01 = 1 Then
     
    DoCmd.RunMacro stDocName
    End If
    End Sub.
    A quoi correspond l'évènement ISE01_Exit ? A une sortie de champ/contrôle
    Ensuite, pourquoi cherches-tu à exécuter une macro (quel est son code ?), alors qu'il te suffit de coder dans cet endroit précis du formulaire le code que nous t'avons communiqué ?

    D'autre part, quand tu dis
    je vais sur le controle(j'appelle ça champ) sur propriéte/Evenement/generateur de code, j'écrit après avoir créér une macro
    c'est bien du code VBA que tu écris, ou une macro ? Il me semble que c'est plutôt du code VBA.

    Je ne suis pas forcément contre la possibilité de regarder ton formulaire, mais je préfèrerais que tu commence d'abords à chercher par toi-même afin que tu puisse être très rapidement autonome dans le codage VBA (ce n'est vraiment pas compliqué)
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    l'évènement ISE01_Exit correspond effectivement à une sortie de champ(vers les autres champs CF01,ISE02 et autres suivant que l'on saisie une et une seule valeur comprise de 1 à 7)

    Je cherche à exécuter une Macro, car c'est par la que j'ai commencé à apprendre et donc je ne sais pas faire autrement.

    C'est bien un code VBA d'ou l'intitulé de mon premier Posts.
    Ma macro s'appelle stDocName"Saut_CF01" par exemple et l'action de cette macro est "atteindrecontrole", l'argument est CF01



    "alors qu'il te suffit de coder dans cet endroit précis du formulaire le code que nous t'avons communiqué ?": Mais coder ou? dans la feuille de propriété du formulaire? si oui, comment procédér. Depuis la table?

  11. #11
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Oui, dans la feuille de propriété du formulaire, sur lévènement que tu as défini.

    Pour te familiariser aux différents événements associés aux controles/formulaires/états, il y a un excellent tuto rédigé par Fabrice Constans qui te permets de découvrir les nombreuses subtilités.

    Je pense que l'évènement le plus adapté sera le "xxx_after_update (après MAJ) si c'est un cotrôle de type textbox ou bouton radio.

    Ensuite, remplace l'instruction "atteindrecontrole" par l'intruction , comme je te l'ai indiqué.

    si tu ne connais pas le codage exact, tu peux convertir ta macro sous forme de module (menu "enregistrer sous") et visualiser le code VBA de ta macro convertie.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut resolu
    Merci Beaucoup Dumas, je penses que j'y suis tant bien que Mal et Merci pour le Tuto.Surtout merci de votre patience

  13. #13
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Ok. N'hésite pas à demander de l'aide si tu es en difficulté
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

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

Discussions similaires

  1. [AC-2010] Forcer 'assistant de création à faire du code vba plutôt que des macros
    Par lololebricoleur dans le forum Access
    Réponses: 2
    Dernier message: 20/11/2013, 17h30
  2. création automatique de code VBA
    Par AlexFred dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2010, 12h48
  3. création macro pour enregistrer code VBA
    Par Solenne86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2009, 04h00
  4. Réponses: 2
    Dernier message: 03/12/2008, 12h12
  5. [VBA]Création dynamique de code
    Par Kloun dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/03/2007, 17h22

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