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 :

[Macro] Exécuter une macro en fonction d'un contrôle


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut [Macro] Exécuter une macro en fonction d'un contrôle
    bonjour à tous , je veux executer une macro dont les conditions dépendent de la valeur d'un control appartenant à un sous-formulaire . je l'ai fait executer à l'événement de màj du control , mais la macro refuse de s'executer : un message me dit que le sous-formulaire est inconnu ou n'appartient à la base ou bien encore qu'il n'est pas ouvert ? . J' ai bien tenter de passer par du code , mais c'est chaud

    pouvez-vous m'aider ?

    merci
    sugan.

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 430
    Billets dans le blog
    11
    Par défaut
    Salut,

    Que dois faire ta macro, que contient ton formulaire (champ nécessaire à la condition), quelle est la condition

    Voilà un peu les info que tu dois nous fournir pour que l'on t'aide.

    @+.

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    OK d'accord

    je veux que ma macro execute une R màj voulue en fonction de la valeur saisie dans une zone de liste :c'est çà ma condition :
    cette zone de liste est situé dans un sous formulaire qui lui dépend d'un control du formulaire .

    si valeur 1 de liste = condition 1 -> Rmàj 1 s'éxécute
    si valeur 2 d eliste = condition 2 -> Rmàj 2 s'execute
    si valeur 3 de liste = condition 3 -> Rmàj 3 s'execute

    de plus j'ai tester ma macro en faisant ouvrir mon sous formulaire à l intérieur de ma macro juste avant mes conditions, cela marche mais mon sous-formulaire alors n'est plus lié à mon formulaire .

    merci pour votre aide

    sugan

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 430
    Billets dans le blog
    11
    Par défaut
    Salut,

    Voici le code VBA qui correspond à ta macro, il te suffit de le mettre à la place de ta macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    docmd.setwarnings false
    if forms![formulaire]![sous_formulaire]![liste] = 1 then
       Docmd.openquery requete_maj_1
    end if
    if forms![formulaire]![sous_formulaire]![liste] = 2 then
       Docmd.openquery requete_maj_2
    end if
    if forms![formulaire]![sous_formulaire]![liste] = 2 then
       Docmd.openquery requete_maj_2
    end if
    docmd.setwarnings true
    J'espère que cela t'aidera.
    @+.

  5. #5
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Citation Envoyé par zoom61
    Salut,

    Voici le code VBA qui correspond à ta macro, il te suffit de le mettre à la place de ta macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    docmd.setwarnings false
    if forms![formulaire]![sous_formulaire]![liste] = 1 then
       Docmd.openquery requete_maj_1
    end if
    if forms![formulaire]![sous_formulaire]![liste] = 2 then
       Docmd.openquery requete_maj_2
    end if
    if forms![formulaire]![sous_formulaire]![liste] = 2 then
       Docmd.openquery requete_maj_2
    end if
    docmd.setwarnings true
    J'espère que cela t'aidera.
    @+.

    La succession de IF ains, c'est vraiment laid. Préfere un SELECT CASE, ou bien alors des If elseIf End If

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    salut zomm 61 , j'ai tenter incorporer et le code que tu ma donné , mais rien ne se passe . je n'ai plus de bug mais les réqu^tes ne s'éxécute pas .
    voici ce que j'ai rentrer :

    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
     
    Private Sub N°_AfterUpdate()
     
    If Forms![F-MAINTENANCE]![F-DETAIL MAINTENANCE]![] = 1 Then
    DoCmd.OpenQuery "R-maj qté sur puit gauche"
    End If
    If Forms![F-MAINTENANCE]![F-DETAIL MAINTENANCE]![] = 2 Then
    DoCmd.OpenQuery "R-maj qté sur puit droite"
     
    End If
     
    If Forms![F-MAINTENANCE]![F-DETAIL MAINTENANCE]![] = 3 Then
    DoCmd.OpenQuery "R-maj qté sur 2 puits"
     
    End If
    If Forms![F-MAINTENANCE]![F-DETAIL MAINTENANCE]![] = 4 Then
    DoCmd.OpenQuery "R-maj qté sur puit gauche"
     
    End If
     
     
    End Sub
    si je ne met pas les guillemets , il ne signifie "projet inconnu" au niveau du nom des requêtes.

    merci pour ton aide.

    sugan

  7. #7
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 430
    Billets dans le blog
    11
    Par défaut
    Pour voir si tes tests fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub N°_AfterUpdate()
    If Forms![F-MAINTENANCE]![F-DETAIL MAINTENANCE]![] = 1 Then
       Msgbox "Test 1 ok"
       DoCmd.OpenQuery "R-maj qté sur puit gauche"
       else
       Msgbox "Test 1 non"
    End If
    ...
    Si les tests fonctionnent cela vient de tes requêtes.

    @+.

Discussions similaires

  1. [XL-2010] Éxéuter une macro à l'aide d'une macro Change
    Par lovelyrory dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/03/2015, 17h07
  2. [Toutes versions] Passer la main à une macro VBA à partir d'une macro Excel4
    Par AgentF13 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/04/2014, 23h19
  3. [XL-2010] Création d'une macro événement feuille depuis une macro VBA
    Par phoenellion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2013, 12h57
  4. [XL-2000] Créer un fichier à partir d'une macro contenant lui même une macro
    Par nicogau18 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/07/2010, 16h05
  5. arréter une macro et initialiser par une macro
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2007, 16h44

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