Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2011, 09h41   #1
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
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 *
pondere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 10h37   #2
Invité régulier
 
Lionel
Inscription : novembre 2005
Messages : 17
Détails du profil
Informations personnelles :
Nom : Lionel
Âge : 57
Localisation : Réunion

Informations forums :
Inscription : novembre 2005
Messages : 17
Points : 8
Points : 8
Avec le SELECT CASE vous pourrez y arriver :

Code :
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
ISLEA95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 12h28   #3
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
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
pondere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 13h35   #4
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
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 :
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
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 13h36   #5
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 14h40   #6
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
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??
pondere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 14h54   #7
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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 :
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
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h15   #8
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
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 :
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 :
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
pondere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h28   #9
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Le principe de base est correct, mais l'évènement codé ne semble pas correct

Code :
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
Citation:
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
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h47   #10
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
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?
pondere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h59   #11
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2011, 16h22   #12
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
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
pondere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 16h27   #13
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h48.


 
 
 
 
Partenaires

Hébergement Web