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 :

Valeur par défaut dans liste déroulante


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut Valeur par défaut dans liste déroulante
    Bonjour,

    Cette fonction marche bien pour changer le taux tva dans la table, mais j'ai une zone de liste modifiable et j'aurai aimé que la nouvelle tva soit mise dans la valeur par défaut de la zone de liste modifiable.
    Je tente ceci mais, j'ai une erreur 424

    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
    Public Function TauxTvaDefaut()
        Dim maBD As Database, tdfValeurDefaut As TableDef
        Dim nbre, rstTaux As Recordset, meF_me As Form
        Set maBD = CurrentDb
        Set tdfValeurDefaut = maBD.TableDefs!Taux_TVA
             nbre = InputBox("Entrez le nouveau taux TVA par défaut")
             tdfValeurDefaut.Fields![Taux TVA].DefaultValue = nbre
        Set rstTaux = maBD.OpenRecordset("Taux_tva", dbOpenDynaset)
        With rstTaux
            .MoveFirst
            .Edit
            ![Taux TVA] = 0 & "." & nbre / 100
            .Update
            .Close
        End With
        DoCmd.OpenForm "FacturesExMeCa"
        Forms!FacturesExMeCa!TauxTVA.ItemData(0).DefaultValue = nbre / 100
     
    End function
    Erreur d'exécution '424' objet requis

    D'avance merci pour une éventuelle solution.

    Guy FALESSE

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    Bonjour,

    Le defaultvalue s'applique au controle et non à l'item.

    comme ceci pour du numérique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!FacturesExMeCa!TauxTVA.DefaultValue = nbre / 100
    De plus la valeur transmise doit correspondre à une valeur contenue dans la colonne liée.

    Exemple :

    Pour une liste Liste1 contenant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ID    Nom
    1     Falesse
    2     Constans
    Pour la 1ere colonne liée (ID)
    il faut écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.liste1.defaultvalue = 1
    Pour la 2ème colonne liée (Nom) nous sommes en présence de texte ce qui corse le problème, en effet defaultvalue à une particularité, avec du texte il faut préciser les double-cotes (guillemets).
    il faut écrire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Modifiable4.DefaultValue = """" & MaString & """"
    et non cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Modifiable4.DefaultValue = MaString
    Ou MaString est égal à Falesse.

    On préfèrera largement l'utilisation de cette syntase surtout après l'ouverture d'un formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Modifiable4 = MaString
    Mais dans le cas de l'utilisation du Dirty celui-ci passera alors à True. Mais ceci est un autre problème.

    Cordialement,

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    Merci pour la réponse.

    La zone de liste déroulante s'appelle bien TauxTva.
    La colonne liée contient bien nbre qui est double.
    Enfin, malheureusement, cela ne fonctionne pas.
    Pour faire plus simple, j'avais fait ceci.:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function TestDefaultValue()
        Dim nbre As Double
        nbre = 20
        DoCmd.OpenForm "frmTauxTVA"
        Forms!frmTauxTva!Modifiable0.DefaultValue = nbre
    End Function
    J'ai mis nbre=20 pour le test.
    D'avance merci.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    ton code ne correspond absolument pas à ce que tu indiques.

    Le nom de la zone liste par exemple.

    Peut-être n'ai-je pas été assez explicite (comme les balises de code) ?

    Enfin ton defaultvalue ne peut pas fonctionner après l'événement Form_Open comme je te l'ai dis dans mon post précédent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!frmTauxTva!Modifiable0 = nbre

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut
    Merci pour ta réponse.
    En effet, je ne dois avoir rien compris du tout, ni d'ailleur concernant les balises, je n'ai jamais utilisé cela.
    J'ai refait une nouvelle base de données comprenant un module, 2 tables et un formulaire.
    la 1ère table s'appelle tblTVA et contient le champ TauxDeTva, la 2ème table s'appelle tbl articles et contient un champ texte appelé Articles.
    Le formulaire s'appelle frmArticles, il contient un champ appelé Articles, une zone de liste modifiable, basée sur la table tblTVA, un bouton qui appelle la fonction TauxTvaDefaut.
    Cette fonction demande un nouveau taux qui remplace l'ancien taux et le place aussi dans la valeur par défaut.

    Maintenant, comment faire pour écrire ce nouveau taux dans le modifiable1 à valeur par défaut?

    Voici en tout cas, la fonction TauxTvaDefaut (qui fonctionne bien):

    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
    Public Function TauxTvaDefaut()
        Dim maBD As Database, tdfValeurDefaut As TableDef
        Dim nbre, rstTaux As Recordset, meF_me As Form
        Set maBD = CurrentDb
        Set tdfValeurDefaut = maBD.TableDefs!tblTVA
             nbre = InputBox("Entrez le nouveau taux TVA par défaut")
            tdfValeurDefaut.Fields![TauxDeTVA].DefaultValue = nbre
        Set rstTaux = maBD.OpenRecordset("tbltva", dbOpenDynaset)
        With rstTaux
            .MoveFirst
            .Edit
            ![TauxDeTVA] = 0 & "." & nbre / 100
            .Update
            .Close
        End With
     
    End Function

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    Pour que le defaultValue de la zone de liste soit pris en compte il faut qu'il soit fait dans le Form_Open du formulaire et non après son ouverture. Quand il est ouvert c'est trop tard.

    Cas ou c'est trop tard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.OpenForm "frmTauxTVA"
    ' ici les événements Open, Load, Current se sont déjà produit
    Forms!frmTauxTva!Modifiable0.DefaultValue = nbre
    Ce que tu dois faire :
    Ouvrir l'événement Open (sur Ouverture) de ton formulaire, ajouter la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!frmTauxTva!Modifiable0.DefaultValue = fDefaultTaux()
    Où fDefaultTaux() est une fonction publique (dans un module donc) qui ira chercher le taux par défaut.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function fDefaultTaux()
        Dim maBD As Database rstTaux As Recordset
        Set maBD = CurrentDb
        Set rstTaux = maBD.OpenRecordset("tbltva", dbOpensnapshot)
        With rstTaux
            .MoveFirst
            fDefaultTaux = .fields("TauxDeTVA")
            .Close
        End With
        set  rstTaux = nothing
        maBD.close
        set maBD = nothing
    End Function
    là il sera pris en compte.
    Cordialement,

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut
    Salut,

    Bon, déjà merci pour la réponse, je ne saurai la tester que demain dans la matinée.
    Je vais maintenant voir les balises
    Bonne soirée
    @+

    Guy FALESSE

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    Placement de balises réussi.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut
    Ouf! Tant mieux
    @ demain

    Guy FALESSE

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut valeur par défaut
    Salut loufab,

    Désolé, mais ça ne fonctionne pas.
    J'ai #nom? dans le modifiable1, j'ai mis parce que dans mon formulaire c'est modifiable1 et le formulaire s'appelle frmarticles.
    Pas grave, j'ai juste changé les noms sauf dans la fonction qui est restée la même, vu que les noms sont bons.@+

    Guy FALESSE

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    peux-tu poster ton appli ?

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 547
    Points
    24 547
    Par défaut
    c'est donc résolu !

Discussions similaires

  1. Selected par défaut dans liste déroulante dynamique
    Par casimirine dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2013, 10h33
  2. Présélectionner une valeur par défaut dans liste déroulante
    Par kate59 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 25/07/2009, 22h52
  3. Valeur par défaut dans liste déroulante
    Par martin_malin dans le forum IHM
    Réponses: 1
    Dernier message: 24/09/2008, 12h23
  4. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  5. Valeur par défaut dans une liste déroulante
    Par zoom61 dans le forum IHM
    Réponses: 1
    Dernier message: 12/06/2006, 09h00

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