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 :

Remplir une liste déroulante manuellement [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut Remplir une liste déroulante manuellement
    Bjr,

    Je souhaiterai creer une liste déroulante à 2 colonne ayant pour contenu un pourcentage et un montant.

    ex : 5% 21000
    10% 21500
    15% ......

    en fait je souhaiterai a l'aide d'une boucle remplir ma liste déroulante

    j'ai pensé a écrire une boucle de ce type

    pour i=5 to 70 step 5
    liste.column(0) = i/100
    liste.column(1)= montant*(1+i/100)
    finpour
    malheureusement je ne vois pas comment mi prendre sous access vba

    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Manuellement ou avec du Code ?
    Ceci à part, il suffirait de transformer le pseudo-code en VBA et charger le résultat dans la propriété RowSource de la liste déroulante. Ce qui nous donnerait à peu près cela :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Montant As Double
    Dim i As Integer
    Dim sourceZdl As String
    Montant = 21000
    sourceZdl = ""
     
    For i = 5 To 70 Step 5
        sourceZdl = sourceZdl & Format(i / 100, "#,00%") & ";"
        sourceZdl = sourceZdl & Format(Montant * (1 + i / 100), "#,00") & ";"
        'Debug.Print i, sourceZdl
    Next
    'Debug.Print sourceZdl
    Me.ZdlCreer.RowSource = sourceZdl
    Me.ZdlCreer.Requery
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut
    Merci pour ton aide,

    Je teste ça et je reviens vers vous dans un instant.

    Oui je voulaire manuellement, avec du vba

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut
    J'ai intégré le code vba cela fonctionne bien.
    Ensuite j'ai voulu appliqué le même code à l’évènement sur clic de ma liste déroulante et j'ai une erreur qui se produit ci joint la copie d'écran
    Nom : erreur access.png
Affichages : 863
Taille : 304,7 Ko

    Le code que tu m'as donné je l'intégré au bouton ajouter qui alimente mon sous-formulaire :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Ajouter_ligne_devis_Click()
       Dim Montant As Double
       Dim i As Integer
       Dim sourceZdl As String
       sourceZdl = ""
      'If Me!Famille.Value <> Null And Me!Marque.Value <> Null And Me!Materiel.Value <> Null Then
       Me.Ligne_devis_sous_formulaire.Form.Recordset.AddNew
       [ligne_Devis sous-formulaire]![Num_devis] = Me![]
       [ligne_Devis sous-formulaire]![Num_produit] = Me![Materiel].Column(2)
       [ligne_Devis sous-formulaire]![Designation] = Me![Materiel].Column(3)
       [ligne_Devis sous-formulaire]![Qté] = Me![Qté]
       [ligne_Devis sous-formulaire]![Pu] = Me![Materiel].Column(4)
       [ligne_Devis sous-formulaire]![Num_tva] = Me![TVA].Column(0)
       [ligne_Devis sous-formulaire]![Coef_Import] = Me![Coef. Import]
       [ligne_Devis sous-formulaire]![MTTh] = [ligne_Devis sous-formulaire]![Pu] * [ligne_Devis sous-formulaire]![Coef_Import]
       For i = 5 To 70 Step 5
           sourceZdl = sourceZdl & Format(i / 100, "#,00%") & ";"
           sourceZdl = sourceZdl & Format([ligne_Devis sous-formulaire]![MTTh] * (1 + i / 100), "#,00") & ";"
           'Debug.Print i, sourceZdl
       Next
       'Debug.Print sourceZdl
      [ligne_Devis sous-formulaire]![ListeMarge].RowSource = sourceZdl
      [ligne_Devis sous-formulaire]![ListeMarge].Requery
     
        'Me.ListeMarge.RowSource = sourceZdl
        'Me.ListeMarge.Requery
     
     
     
       Me.Ligne_devis_sous_formulaire.SetFocus
       Me!Famille.Value = Null
       Me!Marque.Value = Null
       Me!Materiel.Value = Null
       Me!Qté.Value = Null
       Me!TVA.Value = Null
    'End If
     
    End Sub
    Et ensuite le code que j'ai rajouté sur l’évènement sur clic de ma liste déroulante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ListeMarge_Click()
    Dim Montant As Double
    Dim i As Integer
    Dim sourceZdl As String
    sourceZdl = ""
    For i = 5 To 70 Step 5
        sourceZdl = sourceZdl & Format(i / 100, "#,00%") & ";"
        sourceZdl = sourceZdl & Format([ligne_Devis sous-formulaire]![MTTh] * (1 + i / 100), "#,00") & ";"
           'Debug.Print i, sourceZdl
    Next
    [ligne_Devis sous-formulaire]![ListeMarge].RowSource = sourceZdl
    [ligne_Devis sous-formulaire]![ListeMarge].Requery
    End Sub

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Quel est le but du rechargement des valeurs lors du click sur la liste déroulante?

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut
    Le but est que je puisse resélectionner une autre marge si besoin est.

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Mettez le code d'actualisation de la liste déroulante à la Réception du focus.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  8. #8
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut
    J'ai recopier le code sur l'evenement a reception du focus et j'ai la meme erreur qui apparait

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Modifiez la ligne 8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sourceZdl = sourceZdl & Format([ligne_Devis sous-formulaire]![MTTh] * (1 + i / 100), "#,00") & ";"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sourceZdl = sourceZdl & Format(Me.MTTh * (1 + i / 100), "#,00") & ";"
    Vu que vous vous trouvez dans le sous-formulaire.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  10. #10
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut
    Super merci j'ai modifié comme tu m'as dis ainsi que les 2 dernières lignes et cela fonctionne impeccable.

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

Discussions similaires

  1. remplir une liste déroulante
    Par mademoizel dans le forum ASP
    Réponses: 19
    Dernier message: 08/03/2007, 16h33
  2. [Oracle] Remplir une liste déroulante avec une table
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/12/2006, 15h26
  3. Réponses: 12
    Dernier message: 28/11/2006, 15h34
  4. Remplir une liste déroulante à partir d'un champ dans une pop up
    Par wiam26 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 16h42
  5. [débutant] Remplir une liste déroulante
    Par Floch dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/05/2006, 13h39

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