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 :

Suppression de valeurs dans listbox


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 24
    Points
    24
    Par défaut Suppression de valeurs dans listbox
    Bonsoir,

    Soit 3 listes : A,B,C et mon postulat A+B = C

    Exemple avec 3 valeurs de références.
    C = 1,2,3
    si A = 1,2 alors B = 3
    et Si je supprime 2 de A, alors B = 2,3

    La propriété rowsource permet-elle de faire cela ?

    Cordialement

    EL

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    peut être ainsi
    la liste A possède les valeurs 1;2 et la liste B la valeur 3

    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
    39
    40
    41
    42
    43
    44
    45
    46
     
    Private Sub A_Click()
     Dim A As String, B As String
     
     B = Me!B.RowSource    'recupère la donnée de B
     A = Me!A.RowSource    'récupère la donnée de A
     If InStr(1, A, ";" & Me!A) > 1 Then    'teste l'emplacement de ; avant
      A = Replace(A, ";" & Me!A, "")
     Else
      If InStr(1, A, Me!A & ";") > 0 Then   'après
       A = Replace(A, Me!A & ";", "")
      Else                                             'ou pas du tout
       A = ""
      End If
     End If
     B = B & ";" & Me!A                          'récupère dans B la valeur de A
     If Left$(B, 1) = ";" Then B = Mid$(B, 2)   
     
     Me!B.RowSource = B                       'réinitialise les listes
     Me!B.Requery
     Me!A.RowSource = A
     Me!A.Requery
    End Sub
     
    Private Sub B_Click()                       'c'est pareil
     Dim A As String, B As String
     
     B = Me!B.RowSource
     A = Me!A.RowSource
     If InStr(1, B, ";" & Me!B) > 1 Then
      B = Replace(B, ";" & Me!B, "")
     Else
      If InStr(1, B, Me!B & ";") > 0 Then
       B = Replace(B, Me!B & ";", "")
      Else
       B = ""
      End If
     End If
     A = A & ";" & Me!B
     If Left$(A, 1) = ";" Then A = Mid$(A, 2)
     
     Me!B.RowSource = B
     Me!B.Requery
     Me!A.RowSource = A
     Me!A.Requery
    End Sub

  3. #3
    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,

    tu peux généraliser et utiliser une fonction générique.

    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
    Function AddRemoveItem(ByVal strList As String, ByVal intIndex As Long, _
                            Optional ByVal strItem As String = "") As String
    Dim tmp() As String
    Dim i As Long
    If strItem = "" Then
        ' on supprime l'élément
        tmp = Split(strList, ";")
        For i = 0 To UBound(tmp)
            If i <> intIndex Then
                AddRemoveItem = AddRemoveItem & ";" & tmp(i)
            End If
        Next i
        AddRemoveItem = Mid(AddRemoveItem, 2)
    Else
        ' on insère
        tmp = Split(strList, ";")
        For i = 0 To UBound(tmp)
            If i <> intIndex Then
                AddRemoveItem = AddRemoveItem & ";" & tmp(i)
            Else
                AddRemoveItem = AddRemoveItem & ";" & strItem & ";" & tmp(i)
            End If
        Next i
        AddRemoveItem = Mid(AddRemoveItem, 2)
    End If
    End Function
    Exemple d'utilisation en suppression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?addremoveitem("1;2;3;4;5",2)
    1;2;4;5
    Exemple d'utilisation en ajout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?addremoveitem("1;2;3;4;5",1,"toto")
    1;toto;2;3;4;5
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Merci à tous les 2, je vais regarder cela dans le détail.

    R1

Discussions similaires

  1. Suppression de valeur dans une constante(define)
    Par BenoitTCN dans le forum Langage
    Réponses: 4
    Dernier message: 17/12/2008, 13h10
  2. [MFC] Récupération valeur dans ListBox
    Par Copernic09 dans le forum MFC
    Réponses: 6
    Dernier message: 11/12/2007, 19h43
  3. Réponses: 10
    Dernier message: 23/05/2006, 17h42
  4. Suppression de valeurs dans une liste
    Par Bayard dans le forum Général Python
    Réponses: 2
    Dernier message: 26/04/2006, 10h19
  5. Attribuer des valeurs dans une ListBox
    Par OjBarbare dans le forum MFC
    Réponses: 5
    Dernier message: 06/12/2005, 11h28

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