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 :

Rajout de valeurs dans une zone liste par VBA


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut Rajout de valeurs dans une zone liste par VBA
    Bonjour à tous,
    J'aimerais savoir comment alimenter une liste de valeurs dans une zone de liste Access 2010 en VBA, quand je dis "alimenter" je veux supprimer ou rajouter une nouvelle valeur à cette liste par clic sur un bouton par exemple.
    Si quelqu'un peut m'aider Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Bonjour,

    en faisant une rapide recherche dans la
    http://access.developpez.com/faq/?page=zdl#AddItem
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    Bonjour,

    en faisant une rapide recherche dans la
    http://access.developpez.com/faq/?page=zdl#AddItem
    ********************************************************************
    Merci pour ta réponse mais je ne trouve pas comment supprimer un élémént de la liste, si tu peux m'aider Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,
    Un (autre) petit effort en faisant une recherche ?
    http://silkyroad.developpez.com/VBA/...serForm/#LII-G
    Un indice chez vous
    RemoveItem
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    Salut,
    Un (autre) petit effort en faisant une recherche ?
    http://silkyroad.developpez.com/VBA/...serForm/#LII-G
    Un indice chez vous
    *************************************
    Merci pour votre aide, en effet ça marche mais quand je rouvre le formulaire toutes les valeurs de la zone de liste réapparaissent j'ai essayé la méthode requery rien n'y fait

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut Zone Liste Suppression
    Citation Envoyé par xeron33 Voir le message
    *************************************
    Merci pour votre aide, en effet ça marche mais quand je rouvre le formulaire toutes les valeurs de la zone de liste réapparaissent j'ai essayé la méthode requery rien n'y fait

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Comment est alimentée ta liste au démarrage ?

    Vu que tes valeurs sont des données variables, que tu ajoutes et supprimes et que tu veux que la modification soit pérennes, il faut mieux stocker ces valeurs dans une table, cette table serait la source de ta liste.
    Il te suffit alors d'ajouter les valeurs ou des les supprimer à l'aide de requêtes par exemple, et de faire un requery de la liste à chaque modification des champs de ta table.

    Philippe

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Bonjour

    Comment est alimentée ta liste au démarrage ?

    Vu que tes valeurs sont des données variables, que tu ajoutes et supprimes et que tu veux que la modification soit pérennes, il faut mieux stocker ces valeurs dans une table, cette table serait la source de ta liste.
    Il te suffit alors d'ajouter les valeurs ou des les supprimer à l'aide de requêtes par exemple, et de faire un requery de la liste à chaque modification des champs de ta table.

    Philippe
    ******************************************************
    Bonjour et merci pour ton aide,
    Le formulaire créé est basé sur une table et la liste en question est basée sur un champ de cette table, j'alimente cette zone en "Liste Valeurs" comme "Origine Source" voici le code de la suppression qui agit sur l'évènement "onClic" du bouton "Commande13":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Commande13_Click()
    Me.Liste9.RemoveItem (Liste9.ListIndex)
    Me.Requery
    End Sub
    Merci

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par xeron33 Voir le message
    ******************************************************
    Bonjour et merci pour ton aide,
    Le formulaire créé est basé sur une table et la liste en question est basée sur un champ de cette table, j'alimente cette zone en "Liste Valeurs" comme "Origine Source" voici le code de la suppression qui agit sur l'évènement "onClic" du bouton "Commande13":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Commande13_Click()
    Me.Liste9.RemoveItem (Liste9.ListIndex)
    Me.Requery
    End Sub
    Merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Je l'ai dit plus haut, si tu veux garder les suppressions, il faut supprimer dans la table, le Removitem ne supprimera pas dans la source, donc celle-ci étant inchangée, tu auras toujours les mêmes éléments à la réouverture de ta base.

    Philippe

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Re

    Je l'ai dit plus haut, si tu veux garder les suppressions, il faut supprimer dans la table, le Removitem ne supprimera pas dans la source, donc celle-ci étant inchangée, tu auras toujours les mêmes éléments à la réouverture de ta base.

    Philippe
    *******************************************
    Merci pour ta réponse,
    En effet ça marche j'ai créé une table pour la liste, mais à quoi sert le "RemoveItem" alors si il ne supprime pas les valeurs dans une source "ListeValeurs' ?
    En plus le "RemoveItem" m'a posé des bizarreries... car avec le code que je t'avais posté ça ne fonctionnait plus il me supprimait toutes les valeurs de la liste !!!!
    MErci de me tenir au courant .
    A+

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par xeron33 Voir le message
    *******************************************
    Merci pour ta réponse,
    En effet ça marche j'ai créé une table pour la liste, mais à quoi sert le "RemoveItem" alors si il ne supprime pas les valeurs dans une source "ListeValeurs' ?
    En plus le "RemoveItem" m'a posé des bizarreries... car avec le code que je t'avais posté ça ne fonctionnait plus il me supprimait toutes les valeurs de la liste !!!!
    MErci de me tenir au courant .
    A+
    ***************************************************
    En fait après réflexion ça marche oui mais ça va pas en effet je m'explique :
    Le formulaire Insertions est basé sur une table :
    Insertions(N°Insertion,N°Archives,Carton,Emplacement);
    Tel que je l'ai fait actuellement la zone liste est comme tu me l'as suggérée sur une table :
    Carton(N°Carton);
    Et là effectivement si je supprime un N° de carton via la zone liste comme je l'ai crée ça supprime bien le champ N°Carton de ma table Carton, mais ce que je veux ce n'est pas supprimer un champ c'est simplement supprimer le choix d'un carton dans cette zone liste, c'est pour ça que il me faudrait une zone liste basée sur des liste de valeurs comme je l'avais fais au départ.
    Si tu comprends mieux mon problème et que tu as une solution merci de me contacter.
    A +

  13. #13
    Invité
    Invité(e)
    Par défaut
    Re

    Alors vu ce que tu dis :

    Ajout d'un champ de type Oui/non dans ta table, si case coché, c'est affichage, si cas décoché ce n'est pas affichage.

    Alimente ta liste en utilisant une requête avec une clause Where qui concerne ce nouveau champ de type Oui/non, en prenant la valeur True comme critère.

    Dorénavant au lieu de supprimer des enregistrements il faudra une requête de mise à jour de ce champ Oui/non, et après mise à jour réactualisation de la liste.

    Comme cela tes cartons seront toujours là et actif ou non en fonction de tes choix.

    Philippe

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Re

    Alors vu ce que tu dis :

    Ajout d'un champ de type Oui/non dans ta table, si case coché, c'est affichage, si cas décoché ce n'est pas affichage.

    Alimente ta liste en utilisant une requête avec une clause Where qui concerne ce nouveau champ de type Oui/non, en prenant la valeur True comme critère.

    Dorénavant au lieu de supprimer des enregistrements il faudra une requête de mise à jour de ce champ Oui/non, et après mise à jour réactualisation de la liste.

    Comme cela tes cartons seront toujours là et actif ou non en fonction de tes choix.

    Philippe
    **********************************************************************************
    Merci pour ta réponse,
    En fait j'ai repris l'idée de la table pour la liste en ajoutant une zone de texte pour le carton affecté de la table Insertions et la zone de liste pour les cartons en cours d'utilisation, je ne suis pas arrivé avec le control source "liste valeurs " et les méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Me.Liste9.RemoveItem (Me.Liste9.ListIndex)
    Me.Liste9.RowSource = ""
    Me.Liste9.Requery
    à valider définitivement la nouvelle valeur de RowSource, il la valide quand la zone de liste est active, puis quand on ferme le formulaire et que l'on reouvre la valeur ou les valeurs initiale(s) réapparaissent ...
    Je vais présenter ça à mon responsable j'espère que ça lui conviendra...
    Merci en tout cas pour ton aide je ne mentionne pas "résolu" et laisse ouvert ce post car peut être que toi ou quelqu'un aura une info à me donner.
    A+

  15. #15
    Invité
    Invité(e)
    Par défaut
    Re

    Pourquoi ne pas utiliser ma dernière proposition ?

    Philippe

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Re

    Pourquoi ne pas utiliser ma dernière proposition ?

    Philippe
    **********************************
    Bonne question...
    Je l'avoue je n'ai pas tout saisi de ta dernière proposition : ce champs oui/non il se situerait ou sur la table ? Je te rappelle la structure de ma table Insertions :
    Insertions(N°Insertion,N°Archives,Carton,Emplacement); et je ne vois pas comment tu mets en place ce genre de choses "si case coché, c'est affichage, si cas décoché ce n'est pas affichage", ça agirait simplement sur l'affichage du carton ou sur tout l'enregistrement ?

    D'autre part les cartons quand tu dis : "Comme cela tes cartons seront toujours là et actif ou non en fonction de tes choix", ça ne va pas avec le besoin car ces cartons une fois remplis sont transférés dans un autre endroit et donc doivent être supprimés, en fait ces cartons sont un tampon de travail, mais ça c'est pas trés important ça pourrait marcher avec ta solution aussi.
    Aussi après réflexion la solution de la table me parait bien car elle sépare dans le formulaire, la valeur du champ "carton" et le choix des cartons en cours d'utilisation. Je vais voir ça demain avec mon responsable.
    Par contre puisque tu es ouvert au dialogue et à l'échange et je t'en remercie sais tu pourquoi et comment on peut y remédier car comme je t'ai déjà expliqué ce code avec le control source "liste valeurs " ne fonctionne que quand la zone de liste est active, en d'autres termes comment peut on agir définitivement sur des "liste valeurs", ou comment peut on agir sur le "controlsource" quand on utilise "liste valeurs" dans une zone de liste ? Car je pense qu'il doit y avoir une solution mais je n'arrive pas à la trouver.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Me.Liste9.RemoveItem (Me.Liste9.ListIndex)
    Me.Liste9.RowSource = ""
    Me.Liste9.Requery
    A+

  17. #17
    Invité
    Invité(e)
    Par défaut
    Re

    Il semble que je n'ai pas compris ton besoin.

    C'est donc des transferts (si j'ai bien compris).

    Regardes ces sources pour voir :

    http://access.developpez.com/sources...terListeValeur

    http://access.developpez.com/sources...erListeRequete

    Philippe

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Re

    Il semble que je n'ai pas compris ton besoin.

    C'est donc des transferts (si j'ai bien compris).

    Regardes ces sources pour voir :

    http://access.developpez.com/sources...terListeValeur

    http://access.developpez.com/sources...erListeRequete

    Philippe
    *****************************************
    Merci pour ta réponse,
    Finalement vu le besoin je vais garder la zone de liste sur table ou requete ça fonctionne bien comme ça, par contre j'ai voulu adapter un de tes codes que tu m'as joins (le premier des deux pour être précis) qui est basé sur une zone de liste basée sur du "Liste de valeurs" :
    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 Sub SupprElement(lst As ListBox, _
      Optional LimiteSelection As Boolean = False)
     
     
     
     
    Dim strTemp As String
    With lst
      lst.RemoveItem (lst.ListIndex)
     
     
    'Affecte la nouvelle source à lstSource
      strTemp = "XXXX"
      .RowSource = strTemp
    End With
    End Sub
    Et toujours le même problème, la rowSource est modifiée quand la zone de liste est active et après le formulaire fermé et réouvert les valeurs d'origine réapparaissent.
    Peut être mais je ne pense pas que ça vienne de là, j'ai déclaré la procédure en "Public" l'auteur du code l'avais déclaré en "Private" au passage sais tu pourquoi il les a déclarées en "Private" ?
    J'ai été obligé de la déclaré en "Public" car il ne la "voyait pas".
    Voilà je reste ouvert à tes remarques car j'aimerais savoir comment régler ce problème de RowSource quand la zone de liste est basée sur de liste de valeurs.
    Encore Merci
    A+

  19. #19
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par xeron33 Voir le message
    Et toujours le même problème, la rowSource est modifiée quand la zone de liste est active et après le formulaire fermé et réouvert les valeurs d'origine réapparaissent.
    Je te l'ai dit plusieurs fois que c'est un comportement normal, la modification de la liste ne modifie pas la source, elle est remise à jour à chaque nouvelle ouverture, il faut modifier l'original comme je te l'ai dit plus haut.

    Philippe

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 755
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Re



    Je te l'ai dit plusieurs fois que c'est un comportement normal, la modification de la liste ne modifie pas la source, elle est remise à jour à chaque nouvelle ouverture, il faut modifier l'original comme je te l'ai dit plus haut.

    Philippe
    ***********************************
    Oui mais comment modifier définitivement l'original quand c'est une zone de liste "Liste de valeurs" par code ?
    C'est la question que je me pose.
    Il y a bien des zones liste créées en "liste de valeurs" alors comment on fait pour modifier leurs rowSource par code VBA ?
    Puisque les méthodes fournies ne la modifie que temporairement ...

Discussions similaires

  1. [AC-2013] Sélection d'une valeur dans une zone liste et modification d'un champ
    Par Boxtell dans le forum Macros Access
    Réponses: 12
    Dernier message: 30/05/2016, 14h34
  2. Utiliser dans WHERE une zone définie par AS
    Par stupido dans le forum DB2
    Réponses: 8
    Dernier message: 21/01/2011, 18h22
  3. Mettre une requete ds une zone liste en VBA
    Par majothi dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/07/2008, 23h20
  4. Mise a jour d'une zone liste dans un formulaire
    Par lawokgluot dans le forum Access
    Réponses: 3
    Dernier message: 30/06/2006, 11h41
  5. Sélection dans une zone liste deroulante
    Par biboulou dans le forum Access
    Réponses: 5
    Dernier message: 03/05/2006, 09h18

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