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 :

Comment exécuter un code en fonction d'une valeur? [AC-2007]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Comment exécuter un code en fonction d'une valeur?
    Bonsoir !
    Pouvez-vous m'aider SVP
    J'ai un formulaire Menu1 qui propose 4 options ,il comporte un champ
    choix dans lequel est saisi le N° de l'option choisie
    1/comment écrire un macro qui en fonction de l'option dans champ
    CHOIX va exécuter une autre macro :
    CHOIX =1 provoque le lancement de la macro 'Mac 1'
    CHOIX = 2 provoque le lancement de la macro 'Mac 2'
    2/Comment modifier la macropour prendre en compte les erreurs de
    saisie de l'utilisateur comme :
    - Saisie d'un nombre diffrérence de 1,2,3 ou 4
    -Saisie d'un caractere alphabétique
    -Pas de saisie effectuée
    dans 3 cas il faut affichier un message avertissant l'utilisateur de son
    erreur
    Merci d'avance
    ps: ce n'est pas le macro VBA mais il est sur langage de macros

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir,
    Pour éviter les erreurs de saisie, si on sait d’avance les choix à faire, faire une liste déroulante avec les choix possible et limiter les saisies à la liste.
    Pour le lancement des macros ou subroutines sur l’évènement clic par exemple de la zone de liste faire le choix avec fonction « select case » -
    Exemple une zone de liste déroulante avec comme valeur 1,2,3 son nom Selection :
    Sur son évènement sur clic :
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Selection_Click()
    Ind = Me.Selection.Value
    Select Case Ind
        Case 1
        DoCmd.RunMacro "Mac 1"
        Case 2
        DoCmd.RunMacro "Mac 2"
        Case 3
        DoCmd.RunMacro "Mac 3"
    End Select
     
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Bonjour !
    Merci a vous mais est ce que la réponse c'est la question 1 ou question 2 ?et le formulaire 'menu 1" avec le champ choix comment écrire ,Aidez-moi encore Svp merci encore d'avance

  4. #4
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Selection_Click()
    Ind = Me.Selection.Value
    Select Case Ind
        Case 1
        DoCmd.RunMacro "Mac 1"
        Case 2
        DoCmd.RunMacro "Mac 2"
        Case 3
        DoCmd.RunMacro "Mac 3"
        Case else
        MsgBox "erreur de saisie"
    End Select
     
    End Sub
    Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Bonjour !
    merci à vous mais pour écrire un macro qui en fonction de l'option dans le champ "choix " va exécuter ene autre macro ?

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Le Vieux et Psykodumarteau t'ont donné la solution.

    As-tu testé? As-tu un problème pour la mettre en place?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bon soir où jour,
    et pardon Pierre bonsoir je viens de voir que tu es toujours là fidèle.
    OK, on va vite pour répondre mais le détail du message est à analyser avec l’esprit développeur :
    Chaque morceau de la phrase a son importance.
    D’abord :
    1) Dans mon exemple ce n’est pas une écriture de macro mais du code VBA sur évènement, dans access je n’utilise pratiquement jamais de macro sauf éventuellement celles intégrées attachées aux boutons et encore.
    Donc on découpe la phrase :
    1)Citation :
    « Pour éviter les erreurs de saisie, si on sait d’avance les choix à faire
    = élément de réponse à ta question 2 – car si seuls les choix possibles sont inclus dans la ZLD(zone de liste déroulante), que tu limites les choix au contenu
    Soit Feuille propriété de la ZLD – Données – Limiter à liste : doit être a Oui. Mais normalement cela est mis par défaut.
    Si tu ajoutes la partie else proposée par psykodumarteau au code au cas où….
    Il ne doit pas y avoir d’erreur.
    2)citation :
    Pour le lancement des macros ou subroutines sur l’évènement clic par exemple de la zone de liste faire le choix avec fonction « select case
    C’est là qu’intervient le code :
    Pour cela on sélectionne en mode création du formulaire la zone de liste déroulante que j’ai nommée « selection » on ouvre sa feuille de propriété, on sélectionne l’onglet
    Evènement – on choisi sur clic, on clique sur les … à droite, cela ouvre VBE avec les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Selection_Click()
     
    End Sub
    On insère le reste du code proposé pour arriver à celui posté
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Ind = Me.Selection.Value
    Select Case Ind
        Case 1
        DoCmd.RunMacro "Mac 1"
        Case 2
        DoCmd.RunMacro "Mac 2"
        Case 3
        DoCmd.RunMacro "Mac 3"
        Case else
        MsgBox "erreur de saisie"
    End Select
    C’est la réponse à la question 1.
    Si après cela tu as des soucis pour y arriver comme te l’a proposé Pierre fait nous le savoir.
    A + et bon courage, on va y arriver.

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Bonsoir Le Vieux,

    En fait, en relisant, peut-être que TOUT doit être fait par macro (<> VBA)

    Tomga,
    Si c'est cela, voici une solution macro











    Bien entendu, dans les paramètres de l'action pour chaque ligne de la macro, il faut adapter le nom de la macro appelée (macro1, macro2, ...)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    re bonsoir Pierre,
    c'est effectivement une autre solution mais comme je l'ai précisé par habitude je n'utilise pas les macros dans access, comme également un minimum de SQL direct, mais je ne suis pas un intégriste, bien sur, et plus il y a de solution à un problème plus il a de chance de n'en être plus un.
    à Tomga, tu as maintenant des bases pour ta solution.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Bonjour !
    Merci beaucoup à vous tous de m'aider , c'est vrai que ce n'est pas
    évidence l'informaique ,mais je suis très contente que vous m'aviez m'aider
    Merci encore et à la prochaine :

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

Discussions similaires

  1. [Animation] Comment exécuter du code à la fin d'une animation ?
    Par Finality dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 12/10/2008, 11h44
  2. Réponses: 5
    Dernier message: 31/01/2008, 17h05
  3. Réponses: 44
    Dernier message: 02/08/2006, 16h12
  4. Réponses: 10
    Dernier message: 25/11/2005, 17h12
  5. Réponses: 7
    Dernier message: 03/02/2005, 17h20

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