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 15/10/2011, 13h40   #1
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Par défaut Plusieurs cas imbriqués - parfois marche, parfois non

Bonjour,

Dans un formulaire, j'ai ce morceau de code pour lancer des macros dépendant de plusieurs conditions. Ce code semble fonctionner lorsque par accident cela marche une fois. Après quand je quitte la base, c'est comme s'il n'y avait plus rien ! Je sais que ce n'est pas peut-être la meilleure façon de gérer des cas imbriqués, mais comment faire et pourquoi ça marche des fois et des fois non ?

code :
(à propos les msgbox, c'est juste pour vérifier).
Code :
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
 
Private Sub Commande1_Click()
 
'je lance des marcos en fonction de l'état de deux cases option et de deux cases à cocher. D'où toutes les combinaisons possibles
 
On Error GoTo Commande1_Click_Err
'vérifie une case option dans un cadre de cases options
Select Case Cadre62.value
 
Case 1
'vérifie ensuite l'état de deux cases à cocher
    If Cocher69.value = True And Cocher74.value = False Then
   MsgBox "Cas 1 : Cocher69.value = True And Cocher74.value = False"
        DoCmd.RunMacro "01-01 Lancer_Requêtes_Tot_Sans_Ratios_MS", , ""
 
   ElseIf Cocher69.value = False And Cocher74.value = False Then
     MsgBox "Cas 1 : Cocher69.value = False And Cocher74.value = False"
        DoCmd.RunMacro "01 Lancer_Requêtes_Tot_Sans_Ratios", , ""
 
 
    ElseIf Cocher69.value = False And Cocher74.value = True Then
    MsgBox "Cas 1 : Cocher69.value = False And Cocher74.value = True"
        DoCmd.RunMacro "01-02 Lancer_Requêtes_Tot_Sans_Ratios_FP_Forf", , ""
 
 
    ElseIf Cocher69.value = True And Cocher74.value = True Then
     MsgBox "Cas 1 : Cocher69.value = True And Cocher74.value = True"
        DoCmd.RunMacro "01-01-01 Lancer_Requêtes_Tot_Sans_Ratios_MS_FP_Forf", , ""
 
    End If
 
Case 2
 
    If Cocher69.value = True And Cocher74.value = False Then
    MsgBox "Cas 2 : Cocher69.value = True And Cocher74.value = False"
        DoCmd.RunMacro "02-01 Lancer_Requêtes_Tot_Ratios_MS", , ""
 
    ElseIf Cocher69.value = False And Cocher74.value = False Then
    MsgBox "Cas 2 : Cocher69.value = False And Cocher74.value = False"
        DoCmd.RunMacro "02 Lancer_Requêtes_Tot_Ratios", , ""
 
    ElseIf Cocher69.value = False And Cocher74.value = True Then
    MsgBox "Cas 2 : Cocher69.value = False And Cocher74.value = True"
        DoCmd.RunMacro "02-02 Lancer_Requêtes_Tot_Ratios_FP_Forf", , ""
 
    ElseIf Cocher69.value = True And Cocher74.value = True Then
     MsgBox "Cas 2 : Cocher69.value = True And Cocher74.value = True"
        DoCmd.RunMacro "02-01-01 Lancer_Requêtes_Tot_Ratios_MS_FP_Forf", , ""
 
    End If
 
End Select
 
Commande1_Click_Exit:
    Exit Sub
 
Commande1_Click_Err:
    MsgBox Error$
    Resume Commande1_Click_Exit
 
End Sub
Merci d'avance.

A+
oreoolep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 14h47   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 657
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 657
Points : 6 222
Points : 6 222
Envoyer un message via MSN à argyronet
Bonjour,

Ce bout de code est d'une lisibilité déconcertante et très compréhensible.
Cadre62, Cocher69, Cocher74...

Premier point nettoyage du code et des contrôles...

Deuxième point : que font ces macros et pourquoi exécuter des macros dans du VBA ?

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 16h22   #3
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Par défaut Quelques explications

Cadre62 : c'est un cadre de boutons d'options (deux boutons ronds entre lesquels il faut choisir)

Cocher69, Cocher74... sont deux cases à cocher(je peux les sélectionner toutes les deux ou une, ou rien).

Je suggère modestement d'oublier les macros et ce qu'elles font. En effet, même si je les passe en mode commentaire ou si je les enlève, en ne gardant que les msgbox, cela ne fonctionne pas.

Donc, le problème de mon point de vue est ailleurs..

Désolé : je n'ai pas pu afficher la page vers laquelle le lien renvoit. Peux-t me donner un autre lien ?

Merci encore.
oreoolep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 22h55   #4
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Par défaut Solution

Je crois que j'ai trouvé ce qui cloche. En fait, il faut renseigner dans les propriétés du contrôle des cases à cocher (ce n'était pas fait pour la n°2) la valeur par défaut (vrai ou faux) - Feuille de données > Onglet Données > Valeur par défaut. Si cette valeur n'est pas renseignée, le blocage ci-dessus survient.

Je vais donc renseigner cette discussion comme résolue.

Néanmoins, il ne serait pas mauvais que quelqu'un fasse une petite démonstration de la manière de gérer les conditions multiples imbriquées.

Cordialement,

A+
oreoolep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 05h41   #5
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 657
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 657
Points : 6 222
Points : 6 222
Envoyer un message via MSN à argyronet
Citation:
Cadre62 : c'est un cadre de boutons d'options (deux boutons ronds entre lesquels il faut choisir)
Cocher69, Cocher74... sont deux cases à cocher(je peux les sélectionner toutes les deux ou une, ou rien).
Ah bon !!! Je n'aurais jamais deviné
Le lien que je t'ai inscrit avait un objectif : que tu renomes tes contrôles...

Citation:
Néanmoins, il ne serait pas mauvais que quelqu'un fasse une petite démonstration de la manière de gérer les conditions multiples imbriquées.
Nez en plus, renifler les tutoriels, et la FAQ...
Par défaut, les cases à cocher sont Null dans leur propriété Value.
Il t'appartient d'initialiser les contrôles du même type dans l'événement approprié, soit par exemple Form_Load().

Sinon, tu peux aussi écrire :
Code :
If Nz(Me.chkControl.Value, False) Then...
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 07h04   #6
Futur Membre du Club
 
Homme
Architecte technique
Inscription : septembre 2011
Messages : 42
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Architecte technique
Secteur : Bâtiment

Informations forums :
Inscription : septembre 2011
Messages : 42
Points : 18
Points : 18
Merci pour ces infos. Je débute.. Je verrai comment améliorer le code en suivant tes conseils .






Il faut regarder les étoiles, et non le doigt qui les pointe
oreoolep est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h13.


 
 
 
 
Partenaires

Hébergement Web