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

Access Discussion :

Enlever une valeur dans une zone de liste


Sujet :

Access

  1. #1
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut Enlever une valeur dans une zone de liste
    bonjour à tous

    voila j'aimerais enlever une valeur situé dans ma zone de liste (liste de valeur) que j'ai selectionné.
    ma zone de liste est alimenté par une autre zone de liste
    j'ai regardé dans la faq et aussi sur le forum mais j'ai rien vu qui reponde a ca.

    merci d'avance de m'aider
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    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 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Peux-tu donner plus de renseignement !

    Quel est le genre de donnée de ta liste : une table, une requête !!!

    Quelle donnée tu veux enlever ???

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre confirmé Avatar de milia
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2006
    Messages : 481
    Points : 532
    Points
    532
    Par défaut
    Bonjour,

    si c'est pas une requête tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " ... WHERE Machin <> "Bidule";

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il faut identifier la source de la liste :
    . une table / requête : supprimer la valeur (par exemple un SQL DELETE)
    . une liste de valeurs : supprimer la valeur dans la liste qui est une chaine de caractères ...


    Citation Envoyé par léti07
    bonjour à tous

    voila j'aimerais enlever une valeur situé dans ma zone de liste (liste de valeur) que j'ai selectionné.
    ma zone de liste est alimenté par une autre zone de liste
    j'ai regardé dans la faq et aussi sur le forum mais j'ai rien vu qui reponde a ca.

    merci d'avance de m'aider
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    ma zone de liste (zone1) à pour origine source une liste de valeur
    cette liste de valeur est faite en fonction d'une selection dans une autre zone liste(zone2)

    je voudrai pouvoir enlever dans ma zone1 une valeur (de la liste de valeur) qui est selectionné toujour dans la zone1

    j'espere etre un peu plus claire
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    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 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Crée une table contenant ta liste de valeur, il te sera plus facile de filtrer.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par zoom61
    Crée une table contenant ta liste de valeur, il te sera plus facile de filtrer.
    je peux pas faire ca, ma liste de valeur n'est jamais la meme
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  8. #8
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    Il est possible de "retirer un élément" mais en réécrivant le contenu de RowSource sans l'élément à enlever.

    il y a des fonctions qui permettent soit la substitution de de caractère soit pour tronquer une chaîne et recoller les parties. C'est une idée.

    Par exemple, supposons que ta RowSource est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    élément1;élément2;élément3;élément4
    Tu voudrais enlevenr élément3 de la liste.
    Tu cherche à partir de quelle position dans la chaîne se trouve élément3.
    Puis tu place quelque part (dans une variable) la partie qui se trouve avant cette position x - 1 (car il ne faut pas inclure le point-virgule).
    Ensuite en sachant la longueur de élément3, tu place quelque part aussi (dans une autre variable) la partie qui se trouve à la position x + longueur de élément3
    Tu concatène la première variable contenant la première partie et la seconde qui contient la deuxième partie et tu place le résultat en tant que RowSource de ta zone de liste.

    J'avoue que tout ceci n'est que théorique et que d'autre ont une meilleure idée, mais à toi d'essayer et bon courage.
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  9. #9
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    bon j'ai trouvé comment recuperer ma valeur
    mais je sais toujour pas comment le supprimer
    enfin si mais ca m'a supprimé toute ma liste
    j'arrive pas a lui dire de supprimer la valeur selectionné

    supprimer toute la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.zone1.RowSource = ""
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  10. #10
    Expert éminent sénior

    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
    Points : 32 311
    Points
    32 311
    Par défaut
    Tout va dépendre de la version d'access

    Depuis XP, il est possible d'utiliser RemoveItem

  11. #11
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    je suis en access 2000
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  12. #12
    Expert éminent sénior

    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
    Points : 32 311
    Points
    32 311
    Par défaut
    Dans ce cas, il faut effectivement jouer sur la propriété RowSource et réécrire la fonction RemoveItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande6_Click()
    RemoveItem Me.Liste4, "2"
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub RemoveItem(lst As ListBox, value As String)
    Dim temp() As String, tres As String
    Dim i As Integer
    temp() = Split(lst.RowSource, ";")
    For i = 0 To UBound(temp)
        If temp(i) <> value Then tres = tres & temp(i) & ";"
    Next i
    lst.RowSource = Left(tres, Len(tres) - 1)
    End Sub

  13. #13
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    j'ai essayé de faire à partir de ton code mais ca me fait rien du tout
    j'ai enlever les points virgules car ma liste se presente ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    elem1
    elem2
    elem3
    ...
    peux tu m'expliquer le fonctionnement de ton code, y a peut etre un truc qui m'echappe
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  14. #14
    Expert éminent sénior

    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
    Points : 32 311
    Points
    32 311
    Par défaut
    Les différentes lignes d'une zone de liste sont toujours séparées par des ; dans leur rowsource

  15. #15
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par Tofalu
    Les différentes lignes d'une zone de liste sont toujours séparées par des ; dans leur rowsource
    je savais pas ca , j'en apprend tous les jours
    les ; ne sont pas forcement visible dans la zone de liste?

    car je ne les vois pas
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  16. #16
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,
    Je vais traduire en code mes explications dans un post précédent.
    Le contenu de la liste est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'élément1';'élément2';'élément3';'élément4'
    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
     
    Dim strSource As String, strElement As String, x As Long, y As Long, strNewSource As String
    'Affecter le contenu de la liste à strSource
    strSource = Me.ZoneDeListe.RowSource
    'Affecte l'élémént à supprimer à strElement
    strElement = "'élément3'"
    'Repère la présente de strElement dans strSource
    x = InStr(1, strSource, strElement, vbTextCompare)
    'Ici x devrait renvoyer 23
    'Si x est différent de 0 alors
    If x <> 0 Then
       'Affecte la longueur de strElement à y
       y = Len(strElement)
       'Ici y devrait renvoyer 10
       'Renvoie la première partie de RowSource avant strElement
       strNewSource = Mid(strSource, 1, x-1)
       'strNewSource devrait être = 'élément1';'élément2'
       'Renvoie la suite après strElement
       strNewSource = strNewSource & Mid(strSource, y+1)
       'strNewSource devrait être = 'élément1';'élément2' & ;'élément4'
       'Donc strNewSource = 'élément1';'élément2';'élément4'
       'Affecte à strSource le contenu de strNewSource
       strSource = strNewSource
    End If
    'Affecte le contenu de strSource au contenu de la zone de liste
    Me.ZoneDeListe.RowSource = strSource
    Je crois c'est assez clair. Bon courage
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  17. #17
    Membre régulier Avatar de léti07
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Points : 100
    Points
    100
    Par défaut
    j'ai compris ton code et je l'ai donc testé
    mais ca marche pas

    strsource prend bien ma source (ex: ;'226';'230';'231')
    strelement me prend bien l'element a enlevé (ex: 230)
    x se place bien au bon endroit (ex: 9)
    y prend bien le nombre de caractere de l'element (ex: 3)
    strNewSource (le 1er) prend bien le debut de la source (ex: ;'226'; )
    strNewSource (le 2eme) c'est la que ca va plus et je vois pas quoi changer (ex: ;'226';'26';'230';'231')
    strsource prend bien la source (ex: ;'226';'26';'230';'231')

    je seche complement, j'ai essayé de modifier des truc mais ca marche toujours pas
    Celui qui pose une question risque cinq minutes d'avoir l'air bête. Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  18. #18
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par léti07
    j'ai compris ton code et je l'ai donc testé
    mais ca marche pas

    strsource prend bien ma source (ex: ;'226';'230';'231')
    strelement me prend bien l'element a enlevé (ex: 230)
    x se place bien au bon endroit (ex: 9)
    y prend bien le nombre de caractere de l'element (ex: 3)
    strNewSource (le 1er) prend bien le debut de la source (ex: ;'226'; )
    strNewSource (le 2eme) c'est la que ca va plus et je vois pas quoi changer (ex: ;'226';'26';'230';'231')
    strsource prend bien la source (ex: ;'226';'26';'230';'231')

    je seche complement, j'ai essayé de modifier des truc mais ca marche toujours pas
    Salut,

    Est-ce que tu vois le point-virgule qui commence la chaîne (en gras et en rouge)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ;'226';'26';'230';'231'
    C'est ce truc qu'il te faut enlever.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strSource = Mid(strSource, 2)
    Tu n'as qu'à placer ce code à la fin.

    PS: il s'agit ici une erreur de calcul de ma part, il te faut aussi donc vérifier les positions que j'ai définies dans le code. Comme cela tu n'auras pas besoin d'ajouter la rectif.

    Bon courage.
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  19. #19
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Quelque chose m'échappe sûrement...
    pourquoi ne pas se contenter d'un RemoveItem tout bête?
    La liste est de type "Liste de valeurs"
    Tu n'es pas en multiselect (et même...) donc l'élément sélectionné à chaque
    fois est identifiable par MaListe.ItemsSelected(0). Ce qui devrait faire (penser à une gestion d'erreur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MaListe.RemoveItem Index:=Me.MaListe.ItemsSelected(0)
    et si tu es en multiselect, il faut une boucle sur les ItemsSelected
    comme indiqué dans l'aide access.
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  20. #20
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut La bonne méthode
    Salut,
    En fin de compte, la proposition de Faw est meilleure. Suis ce chemin là.
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. choix d'une valeur dans un zone de liste deroulante
    Par Chikatilo dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/08/2008, 14h29
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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